Útočníci jsou dnes velmi vynalézaví, pokud jde o možnosti, které jim botnety poskytují, a neomezují se pouze na útoky s cílem něco znepřístupnit nebo získat citlivá data. Např. odborníci ze Západočeské univerzity a sdružení CESNET nedávno objevili aktivity botnetu, jehož cílem nebylo kradení hesel ani provádění žádných „běžných“ aktivit botnetu. Útočníci po ovládnutí stroje na něj nainstalovali herní server hry Counter-Strike a zaregistrovali jej do vlastního herního cloudu. Následná analýza těchto aktivit ukázala, že výsledný cloud obsahuje cca 1500 aktivních strojů.
Můžeme také zmínit botnet Chuck Norris, který byl objeven v roce 2010 bezpečnostním týmem Masarykovy univerzity (CSIRT-MU). Tento botnet se soustředil na domácí routery, ADSL modemy a podobná zařízení a byl zřejmě využíván pro útoky založené na podvrženém DNS, tzv. SSL strippingu, apod.
Seriál vznikl za přispění Národního CSIRT týmu České republiky CSIRT.CZ, který provozuje sdružení CZ.NIC, správce české národní domény. CSIRT.CZ je bezpečnostní tým pro koordinaci řešení bezpečnostních incidentů v počítačových sítích provozovaných v České republice. Cílem jeho členů je pomáhat provozovatelům internetových sítí v České republice zřizovat jejich vlastní bezpečnostní týmy a bezpečnostní infrastrukturu, řešit bezpečnostní incidenty a tím zlepšovat bezpečnost jejich sítí i globálního Internetu.
Podobně jako v jiných oblastech IT, i v oblasti kybernetické kriminality jsou zřejmě oddělené role vývojářů a provozu. Tak jako existují nabídky na pronájem botnetů (viz např. článek na Root.cz k DDoS v ČR), tak existují i fóra a jiné kanály, které nabízí nejrůznější „middleware” pro nekalou činnost. Příkladem mohou být i různé toolkity pro PHP shelly apod., které lze snadno „customizovat“ přesně podle konkrétních potřeb odběratele a cílů, na které útočí.
Podíváme se dnes spíše na oblast toho malware middleware, tedy nástrojů a produktů, které umožňují vytvořit botnet. Nebudeme tedy popisovat hotové infrastruktury dnešních botnetů, ale podíváme se na technickou část, na které jsou založeny. A v souladu se zaměřením serveru Root.cz se podíváme na botnety ze světa Linuxu, tedy zdaleka ne mainstream botnetů, kterému vládnou uživatelské desktopy se systémy od MS Windows. Ponecháme také stranou botnety, které se šíří pomocí chyb v prohlížečích, které jsou do jisté míry multiplatformní a zaměříme se na botnety geekovské, které budou pro čtenáře Root.cz zajímavější.
Jak se dělá botnet?
Jak tedy vytvořit botnet na Linuxu? Jako v každém případě potřebujeme dostat nějaký přístup na stroj, který chceme přidat do botnetu. Obecnou metodou, jak získat přístup k linuxovému stroji, je zneužití přihlašovacích údajů pro SSH. Obecně tedy postup útočníka probíhá následovně:
-
Získání (obvykle odcizení) hesel, či klíčů pro přístup k heslům.
-
Eskalace práv a získání administrátorského přístupu.
-
Instalace keyloggerů, rootkitů apod.
-
Instalace malware, klienta botnetu.
-
GOTO 1
Krok č. 1 je nevyhnutelný a útočníci k získání cizích přihlašovacích údajů používají dva základní způsoby. Jedním jsou SSH útoky, kdy pomocí hrubé síly či slovníku hádají hesla uživatelů, druhým způsobem je krádež hesel nebo klíčů, které uživatelé používají z už napadených strojů. Tato druhá cesta vyžaduje administrátorská práva na napadeném stroji a je pro útočníka obtížnější. Na druhou stranu je daleko zákeřnější a obtížněji vystopovatelná, protože útočník při přístupu na cílový stroj uspěje hned napoprvé, takže z hlediska provozu (a kontroly) nejsou tyto nekalé aktivity zjevné na první pohled, protože jsou nerozeznatelné od běžného provozu. Útočník se také může postupně šířit na účty, na něž uživatelé přistupují.
Kroky 2. a 3. jsou volitelné a závisí na typu útoku. Asi každý správce unixového systému se setkal s kompromitovaným účtem, kdy útočníkovi stačil přístup k běžnému účtu, pod kterým pustil nějaký jednoduchý bot-software. Zpravidla se jedná o nějakého IRC klienta, kterého lze řídit přes IRC kanály. Takové boty jsou použité např. pro další SSH útoky a k získání dalších účtů.
Na druhé straně spektra útoků jsou pak sofistikované útoky, které využívají veřejné, či (výjimečně) zero-day zranitelnosti k získání administrátorského přístupu a poté instalují malware. Ten je zpravidla skrytý tak, aby jej běžná prohlídka systému neodhalila. V krajním případě se jedná o rootkit, který zajišťuje běh malware na úrovni jádra. Malware má obecně tři úkoly, ne všechny však musí být vždy implementovány.
Prvním úkolem je zachytávání přihlašovacích údajů, které uživatelé na stroji zadávají, druhým je pak možnost vzdáleného ovládání stroje. Ve světě botnetů se používá pojem C&C, což je řídící centrum botnetu, ale botnety lze řídit i opačně tak, že útočník stroje „obchází“ a instruuje je (ručně nebo více či méně automaticky). Posledním a hlavním úkolem malware je poskytnutí zadních vrátek, která útočníkovi otevřou přístup na stroj.
Ebury
Podívejme se teď na malware, který se objevil relativně nedávno. Jedná se o SSH malware, který poskytuje útočníkovi zadní vrátka a krade přihlašovací údaje uživatelů. První veřejná zmínka o tomto malware se objevila na blogu Steinara H. Gundersona v září 2011 (původní blog dnes bohužel neexistuje, popis lze najít najít např. na v databázi Microsoftu jako Backdoor:Linux/Ebury.A). Jelikož tento malware nebyl do té doby veřejně popsán, S. Gunderson se jej rozhodl pojmenovat a zvolil libozvučné jméno Ebury.
Ebury ve verzi popsané S. Gundersonem je upravené OpenSSH, které zachytává systémová hesla, příp. hesla k soukromým SSH klíčům a dále poskytuje útočníkovi zadní vrátka do napadeného systému. Útočník tedy nahrazuje binární soubory ssh, sshd a ssh-add vlastními verzemi. K tomuto kroku pochopitelně musí mít administrátorská oprávnění.
Ebury má několik zajímavých vlastností, kvůli kterým stojí za pozornost. Komunikuje se svým velitelstvím pomocí protokolu DNS. Během inicializace se malware (při odchycení prvního hesla) přihlásí domů tím, že udělá běžný DNS dotaz na přeložení několika domén, jejichž názvy jsou součástí malware (např. 9w7vcuctes.info). Na tyto dotazy dostane běžnou odpověď, která zřejmě obsahuje řídící informace pro bot. Zachycená hesla se odesílají dalším DNS paketem, který je odeslán na port 53/udp na IP adrese, která je opět součástí malware. Paket obsahuje uživatelské jméno, heslo a IP adresy serveru. Neobsahuje dodatečné informace, např. příkazy zadávané přes SSH apod. Například pro odeslání hesla „gott“, které použil uživatel „karel“ pro přístup k ssh serveru na adrese 127.0.0.1, se odešle DNS paket žádající o překlad doménového jména „6e4ff8f6690eedfc715a.127.0.0.1“.
Jméno a heslo není šifrované, ale pouze zakódované a nebylo by příliš obtížné získat jeho čitelnou podobu. Útočník na straně DNS serveru tyto informace dekóduje a získává tak přihlašovací údaje.
Vedle odeslání dat pomocí DNS protokolu malware navíc ukládá odcizené údaje lokálně na systému, kde běží. Používá pro tyto účely mechanismů komunikace mezi procesy (Inter-process Communication, IPC). Jádro Linuxu a knihovna libc
nabízí několik typů, jak spolu procesy mohou komunikovat. Jedním z nich je sdílená paměť, kdy procesy mohou navzájem sdílet paměťové bloky.
Malware Ebury využívá právě tento typ pro ukládání zachycených přihlašovacích údajů. Po odchycení hesla nebo fráze ke klíči jsou tato data odeslána v UDP paketu tak, jak bylo popsáno výše. Pak ale tyto informace uloží také do sdílené paměti. Aktuální obsah těchto bloků lze získat příkazem ipcs -m
. Na systémech, kde je instalován malware Ebury, budou vidět velké bloky dat, které jsou veřejně čitelné (což není obvyklé). Vidět to lze nejsnadněji příkazem ipcs -m
:
------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 98304 user1 600 393216 2 dest 0x00000000 131073 user1 600 393216 2 dest 0x00000000 163842 user1 600 393216 2 dest 0x00000000 196611 user1 600 393216 2 dest 0x00000000 425994 user1 600 393216 2 dest 0x00000000 458763 user1 600 393216 2 dest 0x0000cf39 491532 root 666 2097220 0 0x0000cd38 524301 root 666 2097220 0
Na posledních dvou řádcích jsou vidět segmenty, které využívá Ebury pro ukládání odcizených dat. IPC sdílená paměť tak vytváří jednotné místo, kam všechny tři trojanové binárky odkládají odcizená data.
Vedle zachytávání přihlašovacích údajů poskytuje sshd z Ebury i zadní vrátka, pomocí kterých útočník může pracovat s napadeným systémem. Původní Ebury nabízí dvě funkce, jednak vytažení dat ze sdíleného IPC segmentu a jednak interaktivní shell, jehož použití není nikam logováno.
Po zveřejnění bližších informací o malware se vzbudila menší vlna zájmu, vznikla pravidla pro IDS systémy, které tak byly schopné detekovat DNS provoz generovaný malware Ebury a pak zájem odborníků postupně upadal. Další pozornost, tentokrát výrazně větší, vzbudilo objevení několika nových instancí malware na začátku roku. Tento malware je také sofistikovaný a je možné, že jeho autor minimálně vycházel z původních kódů Ebury, protože oba malware mají některé společné znaky. První zpráva o nalezení této nové verze byla zveřejněna v únoru letošního roku sdružením SANS, resp. jeho centrem ISC.
Tato zřejmě novější verze Ebury cílí na systémy s RPM, malware je zabalený jako RPM balíček. Nemění však samotné binární soubory OpenSSH, ale přepíše knihovnu libkeyutils
, se kterou je OpenSSH slinkováno. Knihovna obsahuje trojanové verze funkcí, které OpenSSH používá během ověřování uživatele, resp. ověření hesla. Příkladem jsou funkce pam_authenticate()
nebo rodina funkcí MD_*
z knihovny OpenSSL. Díky tomu má knihovna přístup k heslům, která odesílá podobně jako v původním případě. Navíc obsahuje zdokonalená zadní vrátka a nabízí příkazy Xver
, Xcat
a Xbnd
pro přístup k uloženým datům, apod.
Pro detekci malware lze použít několik metod, např. zkontrolovat, že balík s libkeyutils
není podepsaný. Také pokud knihovna obsahuje textové řetězce jako „connect“ apod., je to známka, že se s velkou pravděpodobností jedná o malwarové „vylepšení“.
Na rozdíl od první zveřejněné verze tato nová verze vzbudila více pozornosti. Důvodem je zřejmě i to, že kompromitovaných systémů bylo víc a byly zveřejněny. K zajímavým patří cPanel, ke kterému se váže následující kapitola.
Linux/Cdorked.A
Linuxové servery velmi často slouží jako platforma pro webové servery. Každý administrátor webového serveru je v podstatě zvyklý na nejrůznější zranitelnosti ve webových aplikacích a frameworcích. Do této kategorie patří všechny možné varianty SQL injections nebo chyby v masivně rozšířených knihovnách a frameworcích. Výrazně méně časté jsou ale útoky, které směřují na samotný webový server. Jak se ale ukázalo v posledních několika týdnech, i to je oblast, na kterou se dnešní útočníci zaměřují a jsou v tom i velmi efektivní.
V pátek 26. dubna zveřejnily firmy ESET a Securi informace o malware, který nalezly ve webovém serveru Apache a později i v nginx a Lighttpd. Malware dostal jméno Linux/Cdorked.A a je určen pro šíření útoků na prohlížeče (např. pomocí drive-by attacks), vedle toho poskytuje útočníkovi i zadní vrátka do systému.
Malware vkládá útočící kód do odpovědí, které HTTP server posílá klientovi. Tento krok se ale provádí jen omezeně, pro jednu IP adresu jen jednou za den. Dále malware obsahuje poměrně rozsáhlou černou listinu IP adres, na které se útočný kód nikdy neposílá. Podle analýzy společnosti ESET se jedná o 50 % celého IPv4 prostoru. Dále malware obsahuje seznam zakázaných jazyků. Pokud prohlížeč deklaruje podporu některého z vyjmenovaných jazyků, žádný útočný kód mu opět zaslán nebude. Autoři tedy zřejmě dali přednost vybudování většího botnetu a menší důraz kladli na jeho efektivitu, protože distribuce útočného obsahu je poměrně redukovaná.
Vedle šíření kódu poskytuje malware i zadní vrátka. Tento přístup je otevřen pomocí speciálně vytvořeného GET požadavku, ve kterém je uvedena IP adresa a port „klienta“. Malware na takový požadavek reaguje vytvořením TCP spojení ke klientovi, ve kterém se pustí shell. Samozřejmě nic z této komunikace se neukládá v logu HTTP serveru, protože malware zajišťuje celou obsluhu tohoto vlastního protokolu v rámci úprav HTTP serveru.
Pozoruhodná je implementace celého malware. Malware mění pouze jediný soubor na disku, a tím je program vlastního HTTP serveru. Veškeré další údaje, které jsou potřebné pro jeho běh, jsou uloženy ve sdílené paměti, kterou používá podobně jako Ebury. Přítomnost těchto paměťových segmentů je také jedna z možností jak detekovat přítomnost Cdorked.A. Společnost ESET zveřejnila i kód, který lze pro tuto detekci použít.
Při nalezení malware je důležité udělat obraz paměti, kterou malware využívá, ideálně včetně obrazu paměti procesů HTTP serveru. Sdílená paměť obsahuje i zajímavé informace o historii bota, např. údaje o provedených podvodných přesměrováních, ze kterých lze usoudit na aktivitu bota, kterou prováděl od svého spuštění. Analýzy, které prováděl ESET, ukazují aktivity prvních botů tohoto malware, které pocházejí z 24. prosince loňského roku.
Za zmínku také stojí řízení bota, jelikož nepoužívá princip řídících uzlů (C&C), kterých by se ptal na pokyny. Řízení malware je prováděno opačně, kdy řídící povely jsou zasílány v HTTP požadavcích. Správce botnetu tedy bezesporu musí mít vybudovánu dodatečnou službu, které zajišťují sledování celé infrastruktury, eviduje živé boty a umožňuje s nimi komunikovat.
Podle odhadů společnosti ESET byly tímto malware napadeny řádově stovky serverů, včetně opravdu velkých. Otevřená zůstává poměrně zásadní otázka týkající se způsobu, jakým se malware na postižené servery dostal. Vzhledem k tomu, že mění přímo soubor s HTTP serverem na disku, je tedy nutné mít pro jeho instalaci administrátorská práva. Získat taková oprávnění k velkým webovým serverům je nelehký krok a bude jen zajímavé sledovat další informace o způsobu šíření tohoto malware. Vzhledem k tomu, že mezi napadené servery patřily HTTP servery, které byly instalovány z projektu cPanel, i jistým podobnostem v implementaci, objevily se spekulace, že malware by mohl mít spojitost se SSH malwarem Ebury, kterému jsme věnovali předchozí kapitolu.
Závěr
Útoky probíhají v prostředí Internetu neustále a je nutné být na ně připraven. Vynalézavost a technické provedení se bude jistě také zdokonalovat a bude tedy zajímavé sledovat, kam se vývoj a inovace posune i v této oblasti. Pro místní čtenáře je jistě zajímavý posun k malware pro systém Linux.