Trocha histórie
Windowsie víry dlho používali maximálne sociálne inžinierstvo - psychologická metóda jak užívateľa donútiť vír spustiť. Potom nasledovali triky s dvojitou príponou, spamovanie via instant messengery (stále socialne inžinierstvo)... Až sa dostali ku "klasickej metóde" napadania zraniteľných systémov - buffer overflow (Sasser, Slammer, ANI cursor exploit, GDI jpeg exploit, ...).
Nasledovali rozličné techniky ako sa vynúť antivírom - vypínanie procesov antivíru, využívanie "medzivrstvy" layered service provider a iné rootkitie techniky ako "vešanie sa" na systémové služby, prerušenia, skrývanie svojich procesov, sieťových spojení, využívanie ACPI. Zvláštne je, že polymorfizmus sa medzi windowsími vírmi moc neuchytil...
V podstate dosť dlho trvalo (vyše 10 rokov), kým aj windowsie víry začali byť aspoň tak sofistikované ako ich predchodcovia z čias DOSu. Až kým neprišiel Storm malware (má kopu ďalších názvov). Ten používa snáď všetky známe techniky plus kopu novininiek. Neviem koľko stál jeho vývoj/udržovanie, ale musel byť hrozne drahý - kto si to zaplatil, musí mať veľmi dobré dôvody.
Stormworm vitals
Meno je odvodené z predmetu správy spamu, ktorou sa začal šíriť prvý krát: “230 dead as storm batters Europe.” Iné bežné mená: Peacomm, Nuware, Zhelatin, ... Nedá sa presne zaradiť do škatuliek vírus/worm/trojan, pretože je všetkým zároveň. Vďaka decentralizácii je veľmi odolný (vyzerá že perzistencia/reziliencia Storm botnetu je jednou z najpodstatejších vlastností).
Hlavné "fíčury" v skratke:
decentralizovaný cez distribuovanú hashtabuľku (skrátene DHT, založené na jednej implementácii Kademlie)
používa fast-flux DNS
updatovaný a vyvíjaný za behu, polymorfizmus verzií
rootkitie techniky skrývania
šíri sa snáď všetkými možnými cestami (spam, scanovanie a napadanie známych zraniteľností, ...)
heterogénna sieť v zmysle "deľby práce" - jednotlivé časti robia rozličné veci (jedna pre DDoS, ďalšia pre spamovanie, atď).
Stormworm - vývoj
Snáď úplne najvtipnejšiu vlastnosť spomenem hneď na začiatku: blacklistuje si niekedy sám svoje vlastné verzie, ktoré napr. mali implementačné chyby v protokole, aby chybné verzie neznefunkčnili celý botnet (zrejme sa nedá "zákazníkom" zavolať, aby si stiahli novšiu verziu ;-)). Vývoj vyzeral v skratke asi takto:
vír ako nešifrovaný driver wincom32.sys
spakovaný/obfuscovaný driver
pridaná P2P funkcionalita
anti-virtualizačný a anti-debugovací kód pridaný, "opatchuje" tcpip.sys
šifrovanie na P2P vrstve
Ochrana proti napadnutiu botnetu iným útočníkom
Storm botnet má podarený obranný mechanizmus - akonáhle sa niekto neautorizovaný snaží napojiť do botnetu, botnet ho za-DDoS-uje naspäť na jeho IP adresu a zaplaví mu linku obrovským množstvom paketov.
Decentralizácia je v podstate tiež jeden z pasívnych ochranných prvkov - sieť je tým pádom de facto "nevypnuteľná". Už odstaviť jeden server distribuujúci malware napr. v Číne dá dosť práce, ale v prípade decentralizovanej P2P siete je absolútne nemožné odstaviť dostatočný počet uzlov, aby sa sieť rozpadla.
Plus použitie spomínaného fast-flux DNS: skrývanie skutočných "malware delivery sites" za kaskádami niekoľkých proxy, takže vstupný bod aj skutočný delivery site sa môže ľubovolne zmeniť, stačí použiť DNS záznam s krátkou životnosťou. Táto metóda už trocha pripomína vytváranie tunelov v Tore alebo okruhov v I2P .
Už len čakám, kedy si vytvoria aj vlastnú sieť certifikačných autorít, web-of-trust alebo použijú nejaký podobný trust model, aby mohli ďalej vyvíjať šifrovanie/integritu botnetu.
Kademlia/Overnet
Ako už bolo spomenuté, botnet využíva implementáciu Kademlie na DHT. Zrejme použili nejakú hotovú implementáciu namiesto písania vlastnej, pretože štandardné Overnet dissectory vo Wiresharku dokážu rozkódovať (nie rozšifrovať!) správy v DHT sieti.
Na pripojenie (bootstrap) do siete stačí poznať jeden známy uzol. Zoznam "vstupných" uzlov je definovaný pri ďalšej várke rozosielaného malwaru, tj. nestačí zhodiť len pár uzlov, ktoré sa používajú ako vstupné, pretože proste použijú najbližšie iné. Samozrejme už len odpojenie pár uzlov "právnou cestou" je neskutočne náročné.
Kademlia sa naviac veľmi dobre škáluje pri veľkom počte uzlov - ak sa sieť zväčší dvojnásobne, počet správ na nájdenie uzla sa zvýši len o konštantu (1-3). Tj. počet správ na nájdenie uzla a prípadnú replikáciu je logaritmický vzhľadom k veľkosti siete.
Oproti pôvodnej implementácii Kademlie pridali podporu TCP (predtým UDP), šifrovanie, detekciu a prechádzanie cez NAT (podobne I2P implementuje NAT traversal cez UDP hole punching).
Odhadnúť počet živých strojov v botnete je veľmi ťažké kvôli decentralizácie siete, ale je možné napísať crawler. Namerané počty hovoria cca o 50-tisíc živých strojoch v botnete (čo je dolný odhad). Celkový počet vrátane mŕtvych uzlov je cca 300-600 tisíc ("mŕtve" znamená, že môžu byť vypnuté alebo odstránené cez antivíry).
Kto je v pozadí
Existuje pár špekulácií, že Storm botnet majú na svedomí spravodajské služby. Na bežných "komerčných spammerov" je Storm botnet veľmi komplikovaný (alebo vývoj zaplatil veľmi bohatý spammer); evidentne jednou z hlavných vlastností je odolnosť siete, čo nie je až také nutné v prípade komerčného spamovania, pretože sa dá sieť vždy vytvoriť nanovo (a asi je to jednoduchšie než udržovať sieť živú cez updaty - kód Storm malwaru je updatovaný za behu, to je servis!).
Naviac typické "komerčné botnety" pridávajú nové fíčury len keď musia (aby unikli antivírom apod.), Storm botnet je kvalitatívne o niekoľko rádov sofistikovanejší ako ktorýkoľvek iný malware (zrejme si niekto povedal, že keď to už robí, tak to spraví poriadne a zrejme to bolo poriadne drahé).
Linky/references
ToorCon presentation (asi najlepšie, odtiaľ som čerpal najviac) - Exposing Stormworm
http://www.pcworld.com/article/id,138721-page,1-c,techindustrytrends/article.html
http://observer.guardian.co.uk/business/story/0,,2195730,00.html