Zpět na seznam článků     Číst komentáře (2)     Verze pro tisk

Červ nikdy nespí

Autor: .cCuMiNn.   
5.8.2004

Všechno co jste kdy chtěli vědět o virech, červech a podobné havěti.


txt: shaddack

Nemáte červivý počítač? Hrozí nám "červ posledního soudu"? Jak snadné je vlastně vyřadit z provozu celý Internet?

Viry, červi, trojani

Obvykle bývají nesprávně označované jako viry. Jedná se však o zcela odlišného člena rodiny intruzivních programů. Podívejme se tedy na vypečenou rodinku blíže:

Viry - paraziti. Stejně jako jejich biologičtí kolegové nemohou existovat samostatně. Parazitují na existujících programových souborech, vkládají se do jejich kódu a stávají se jejich součástí. Nejčastěji se připojí na konec souboru a přesměrují na sebe startovní vektor z hlavičky souboru, takže virový kód se spouští spolu s napadeným programem. Jiné typy infikují boot sector počítače - speciální program umístěný na úplném začátku disku, mimo vlastní souborový systém. Princip je však stejný, a mnohé exempláře kombinují metody infekce. Obvykle se šíří v rámci napadeného počítače nebo v rámci síťových disků na které se z tohoto počítače dá zapisovat; mezi počítači se šíří obvykle disketami nebo spustitelnými soubory poslanými mailem; jsou popsány i případy viru jedoucího stopem na červu. Jedná se o velmi rozmanitou skupinu, starou více než 20 let; prvním exemplářem byl Apple Virus, jehož verze 2 byla napsána roku 1982 pro tehdy běžné počítače Apple McIntosh (předchozí verze 1 neopustila laboratorní podmínky, verze 3 byla napsána po úniku verze 2 "do volné přírody" a řešila problémy verze 2 s přílišným hladem po paměti). Roku 1987 se pak objevil virus LEHIGH, jehož hlavním maskováním byla jeho novost - jeden z prvních, neobvyklý, nikdo něco takového nečekal, další rok následoval Jerusalem-B, Brain - první virus pro MS-DOS, a pak již nové exempláře jen pršely. Jedním z úspěšných nových virů je Win32.CIH, známý též jako Černobyl. Viry jsou velmi rozsáhlá a velmi životaschopná rodina, bohužel mimo rozsah tohoto článku.

Makroviry - novější obdoba virů. Místo programů infikují datové soubory, jejichž formát podporuje makra - programový kód vložený do souboru; existují však i červí varianty. Pravidlem je využití funkce Autorun, která se spouští vždy při otevření dokumentu. Obvyklé zranitelné programy jsou Microsoft Word a Microsoft Excel. Novější verze těchto již varují uživatele pokud jsou v dokumentu přítomna potenciálně nebezpečná makra. Trochu to pomáhá.

Hoax viry - jejich zařazení mezi programy je sporné, neboť se nejedná o programy, ale obvykle o varování. Příkladem jsou varování před různými neexistujícími viry. Mechanismem šíření je přesvědčení uživatelů k rozeslání emailu všem, koho znají; obvyklou formou je pak děsivě vyhlížející zpráva o viru proti kterému neexistuje obrana, s uvedeným zdrojem, který má mezi "obyčejným lidem" nezasloužený respekt - typicky Microsoft, IBM, AOL, nebo jiná organizace podobného typu a velikosti. Typicky bez jakýchkoliv technických podrobností a bez odkazů na webové stránky s podrobnějšími informacemi. Variantami jsou verze založené na soucitu (za každý forwardovaný mail někdo s kým budete pravděpodobně mít soucit dostane $0.0X) nebo hrabivosti (za každý forward dostanete $X).

Trojané - též známí jako trojští koně. Postrádají vlastní šíření, obvykle simulují funkci nějakého dobře známého programu, nebo se tváří neškodně; často jako animace nebo jiný program, který zvědaví uživatelé pravděpodobně spustí. (Myslíte-li si, že lidé jsou opatrní, navrhuji experiment. Napište malý neškodný program, který bude animovat tančící prasata, a po svém spuštění vám pošle email že byl spuštěn, a pošlete jej uživatelům které si chcete vyzkoušet, s popisem, že se jedná například o animaci tančících prasat. Naprostá většina příjemců program spustí, mnozí jej ještě sami pošlou dál. Chcete-li být poněkud drsnější, počkejte na širší zavedení elektronických podpisů, a použijte takovýto program pro ukořistění kopie podpisového klíče. Nebo jakéhokoliv jiného souboru či certifikátu jehož umístění na cílovém počítači je známé. Není-li známé, může program i prohledat disk - trvá-li animace dostatečně dlouho k zabavení uživatele po nutnou dobu, nebo odštěpí-li se z programu část, jež se usadí v paměti a provádí svou práci na pozadí. Přesměruje-li na sebe trojan i zpracování stisků kláves, může pohodlně odchytávat hesla nebo i kompletní obsah komunikace.) Nemusíte ani psát svůj vlastní "krycí" program - stačí použijete-li již existující program a k němu připojíte tělo trojana metodou známou tvůrcům virů. Dnes existují i programy jež většinu práce oddřou za vás - například "Joiner".

Trojané jsou občas destruktivní; jedním z nich byl program prohlašující o sobě, že umí zapojit grafický mód na TTL monitorech (technicky nemožné), přičemž jeho akcí bylo vypsat "Gotcha, arf arf!" ("Dostal jsem tě, haf haf!") a smazat disk. Tento se obvykle šířil pomocí pirátských BBS; software zdarma občas nese riziko. Jiným obvyklým typem bývá login trojan - program vypadající jako login prompt počítače, čekající na uživatelské jméno a heslo - které po zadání uložil do souboru. V současnosti se v přírodě setkáme např. s programy Back Orifice, Netbus, nebo SubSeven, zprostředkující neviděný dálkový přístup k napadenému počítači a umožňující jeho dálkový monitoring a "správu". FBI má jejich obdobu kterou nazývá Magic Lantern, používanou při řešení případů, kdy podezřelí používají šifrovanou komunikaci, kterou není možné odposlechnout běžnými prostředky.

Logické bomby, miny - obdoba trojanů; zde je však destruktivní chování spíše pravidlem než výjimkou. Obvykle jsou vkládány do systému jeho tvůrci nebo správci, často jako pomsta za ukončení pracovního poměru. Z tohoto důvodu jsou v IT průmyslu výpovědi správcům systému obvykle udělovány náhle a bez předchozího varování. Nezoufejte však - logická bomba může tikat již během doby zaměstnání pachatele, každý měsíc kontrolovat výplaty, a pokud na seznamu výplat není již třetí měsíc její autor, spustit. V lepším případě likviduje data, v horším případě je jen pomalu modifikuje - poškozená data pak postupně nahrazují původní, a pokud jste nic nezpozorovali včas a nechali si přepsat pásky se zálohami poškozenými daty, máte problém.

Červi - konečně objekt našeho zájmu. Svou autonomií se podobají trojským koňům, svou tendencí se šířit patří k virům. Na rozdíl od trojanů (kteří se otevřeně tváří jako nové objekty a pouze dělají nějakou činnost navíc) se obvykle snaží vyhnout se pozornosti, alespoň dokud není pozdě - což může být i několik set milisekund postačujících k jeho rozeslání se dalším obětem. Mohou napadat klientské počítače (obvykle použitím emailu, jako např. I Love You, Klez, nebo Sircam) nebo servery (Lion, Code Red 1 a 2, Nimda, nebo nejnovější Linux.Slapper).

Imunologie

Základním pravidlem pro úspěšné šíření infekcí je dostatečně hustá subpopulace jedinců citlivých na infekci v populaci. Infikovaný jedinec musí přijít do styku s pokud možno co největším množstvím ostatních ještě neinfikovaných ale infikovatelných jedinců. Při splnění této podmínky může dojít k epidemickému šíření. Princip je podobný lavinové štěpné reakci.

Očkování proti chorobám nezajišťuje vždy úplnou imunitu. Je-li však imunní dostatečné procento populace, občasný výskyt onemocnění nehrozí přerůst v epidemii (redukce pravděpodobnosti setkání infikovaného jedince s citlivým neinfikovaným). Další metodou je zabránění přenosu infekce na neinfikované jedince; dle situace rouška, dezinfekce, kondom, či jiné vhodné prostředky - v případě počítačů nejčastěji odstraňování podezřelých souborů z e-mailů nebo ostatní metody specifické pro daný typ červa; obvykle odstranění nebo přejmenování souborů, které červ potřebuje ke své činnosti, nebo vytvoření souboru se stejným jménem a umístěním jako soubor, který červ vytváří, ale s přístupovými právy, které červ nemá - což i když už se červ dostane dovnitř stroje a spustí se, způsobí jeho selhání. Je to sice přístup podobný zalepování praskliny v trupu letadla izolační páskou - bezpečnostní díru to neodstraní, ale o něco málo to zlepší situaci, alespoň na těch několik desítek minut, které potřebujete na nastudování problematiky, stažení souborů, a odstranění otvoru - pokud si nemůžete dovolit na tu dobu odstavit servery nebo alespoň příslušné děravé služby. Pokud však něco takového musíte udělat, nejspíše jste něco přehlédli již dříve, neboť červi typicky využívají již nějakou dobu publikované bezpečnostní díry.

Anatomie červa

Stejně jako u většiny intruzivních programů, červi mají dvě základní části: nosič, zodpovědný za průnik červa do systému a další šíření, a náklad, zprostředkující eventuelní další funkce. Nosič často obsahuje části zodpovědné za ukrytí červa před detekcí.

Pro úspěšnost červa je nejdůležitější nosič. Algoritmy šíření zajišťují kontakt s pokud možno co nejvyšším množstvím zranitelných cílů v obvykle pokud možno co nejkratším čase - čím starší červ je a čím známější je, tím pravděpodobnější je, že cílové systémy budou chráněny, a tím se snižuje červova statistická úspěšnost. Příliš pomalí červi nestačí za svůj život zkontaktovat příliš mnoho potenciálních obětí, příliš rychlí červi naopak přetěžují Síť - čímž sami sebe zpomalují, ztrácejí efektivitu a zbytečně na sebe přitahují pozornost.

Důležitým faktorem je i červův náklad; destruktivní červi jsou proti červům "benigním" v nevýhodě, zejména pokud mají tendenci zničit svého hostitele dříve, než se stačí dostatečně rozšířit. (Opět paralela s biologickými patogeny - porovnejte rozsahy afrických problémů s AIDS a s hemorrhagickými horečkami jako Ebola; AIDS zabíjí hostitele po dostatečně dlouhé době k nakažení potenciálně stovek dalších hostitelů a distribuci po široké geografické oblasti, zatímco Ebola vzhledem ke své krátké inkubační době a rychlému průběhu většinou stačí zabít hostitele dříve, než tento opustí lokalitu, kde se nakazil.)

Váš červ je v poště

Nejjednodušší přístup k šíření mají červy emailové - pošlou se cíli poštou. Průnik do systému je jednoduchý - uživatel si je sám dobrovolně vyzvedne z poštovní schránky. Ke svému spuštění pak červ použije buď naivitu uživatele, nebo díru v poštovním programu; jedněmi z nejpoužívanějších - a nejděravějšími vůbec - jsou Microsoft Outlook a Microsoft Outlook Express. Zapamatujte si jejich výrobce; ještě se s ním setkáme.

Využití naivity uživatele je jednoduché, zejména díky zdánlivé uživatelské příjemnosti Windows. Ve standardní instalaci je vypnuto zobrazování souborových přípon u typů, které jsou systému známé, a spustitelné soubory mohou mít vlastní ikonu. To je sice pěkné a efektní a dokonalé a všechno a světový mír, ale vede to k situacím, kdy soubor LookAtMe.txt.exe se svojí ikonou nastavenou na standardní ikonu pro textové soubory je zobrazen jako LookAtMe.txt s odpovídající ikonou. Typická oběť, nevědomá si rozdílů, na soubor clickne, a místo prohlédnutí jej spustí. Následuje rozeslání se červa dalším obětem. Názvy souborů jsou obvykle voleny za účelem použití psychologických mechanismů k maximalizaci pravděpodobnosti jejich otevření (a spuštění). I pokud jsou přípony zobrazeny, běžní uživatelé si všechny nebezpečné varianty nikdy nezapamatují - .exe, .com, .pif, .scr, .lnk, .vbs, a doslova desítky dalších. Maskování přípony a falešné ikony jsou často využívány i trojskými koni; pozor, kdo vám co posílá přes ICQ. Samozřejmě, maskování přípon se dá vypnout, ale obyčejný uživatel obvykle ani neví, že to jde.

Některé červy ovšem nepotřebují ani spustit ručně. Díky bezmezné genialitě vývojářů Microsoftu využívají Outlooky ten samý subsystém pro zobrazení HTML kódu, který používá i Internet Explorer. Jeho bezpečnost v principu prakticky neexistuje a různá omezení byla postupně přilepována, jak se objevovaly otvory, které již ani marketingová mašinérie nemohla zahrát do autu. Někdo také dostal ten výborný nápad, že emaily by mohly být dekorovány různými fonty a barevnými texty a obrázky a zvuky a multimédii v plném rozsahu. Co je k tomu lepší než HTML? Renderovací subsystém z Internet Exploreru byl již nějakou dobu těsně integrován do operačního systému (další chyba), za účelem praktického znemožnění nebo alespoň ztížení jeho oddělení z Windows - samozřejmě z důvodů posílení pozice v antitrustovém řízení. Proč jej tedy nevyužít. I stalo se tak, a jak již to u této firmy bývá, nikdo se nestaral o následky. Scripty a vložené objekty v HTML jsou spouštěny takřka bez kontroly. A jak už to ve Windows bývá, MIME typ souboru uvedený v hlavičce emailu je ignorován a místo toho je k identifikaci použita jeho přípona. Je tedy možné propašovat soubor worm.scr s tvrzením že se jedná o typ audio/wav. Typy souborů pro otevření v subobjektech HTML stránky, v našem případě emailu, se samozřejmě nekontrolují také - jen se zavolá funkce Windows, která je má zobrazit. Tato funkce je "inteligentní", automaticky rozpozná typ souboru a vybere potřebnou akci - tedy v případě zmíněného souboru pašovaného jako audio/midi nikoliv korektní vyvolání Media Playeru nebo jiného MIDI přehrávače a jeho nakrmení souborem worm.scr (což by vedlo k odmítnutí souboru, nebo v nejhorším případě ke kakofonii pazvuků), ale rozpoznání souboru jako spustitelného a jeho vykonání se všemi důsledky.

Kterak ovšem přimět zobrazovací systém k otevření a zpracování souboru? Zde se nabízí HTML tag IFRAME. Relativně užitečný pro zobrazení jiné HTML stránky nebo objektu v rámci mateřské stránky, v emailové komunikaci ovšem používaný výhradně k zobrazení reklam a podobných zwěrstew wšelikých, a ke spouštění červů. Uzavřenost zdrojového kódu Windows nám samozřejmě neumožňuje selektivní odmítnutí jeho zpracování, jsme tedy vydáni na nemilost. Červu pak nic nebrání nést svůj program jako objekt vložený do stránky, spolu s vlastní HTML podobou mailu obsahující IFRAME o nulové velikosti, do kterého je červový program vložen. Pak již stačí jen otevřít email v předběžném zobrazení (Preview), a - Houstone, máme problém.

Technicky vzato, tento otvor je již zalepen, ovšem vzhledem k notorické velikosti a četnosti těchto záplat je jejich rozšířenost v přírodě spíše výjimkou než pravidlem - komu by se chtělo stahovat každý týden několik megabytů, navíc s rizikem že zmíněná záplata vyřadí z činnosti něco jiného. Většina počítačů tedy zůstává neočkovaná a zranitelná. I kdyby však nebyly - nezoufejte. Je zde nová, lepší, vynikající, inovativní technologie - ActiveX, bezpečnostními techniky často láskyplně přezdívaná "Sito". I ActiveX komponenty standardně dodávané s Windows mají četné díry, obvykle typu buffer-overflow (viz níže); a jelikož bývají digitálně podepsané samotným Microsoftem a tudíž považované za důvěryhodnou (heh) součást systému, bývají typicky povoleny v naprosté většině úrovní zabezpečení. Jediné co jakž takž pomáhá je proxyserver který poškozuje HTML tagy "IFRAME", "SCRIPT", "OBJECT", a "EMBED", a přejmenovává všechny podezřelé přípony souborů přilepením ".worm" nebo ".danger", které jsou pro Windows neznámé a tudíž se je nebudou snažit za každou cenu spustit - několik desítek řádek poměrně jednoduchého kódu. Je otázkou proč tak triviální řešení nenabídla jistá multimiliardová firma již na začátku - na přílišnou jednoduchost spouštění neznámého kódu a nebezpečnost aktivního scriptování v emailech byl Microsoft upozorněn již během časné fáze přípravy Windows 95, mnoha zdroji včetně bezpečnostních specialistů Lockheedu. Ovšem s arogancí jisté korporaci vlastní nikdo varováním nevěnoval pozornost a zranitelnosti byly prezentovány jako výhody ("Podívejte jak je jednoduché vytvořit tu a tu aplikaci!"). Nakonec miliardové škody zaplatí spotřebitelé, práci si oddřou jejich administrátoři, a Microsoft jako bonus shrábne licenční poplatky za "novější" verzi, s některými otvory odstraněnými a jinými přidanými - licenční ujednání je přeci zbavuje jakékoliv zodpovědnosti.

Díky převládající technologii používané k jejich šíření se poštovní červi nazývají souhrnným termínem OTD (Outlook-Transmitted Disease, Outlookem-přenášená choroba).

Po svém spuštění červ získá seznam ostatních cílů. Přímým postupem je vyplenění Adresáře, získání všech emailových adres které zde uživatel má nastřádané. Nepřímým a o to zákeřnějším postupem, který záskal na popularitě poté co přístup k Adresáři začal být lépe hlídán, je prohlédnutí mailboxů a dočasných souborů s čerstvě navštívenými webovými stránkami, a "sklizení" adres odtamtud. Pak následuje vlastní šíření. Červ se pošle na zmíněný seznam adres, obvykle pod jménem aktuální oběti (takže i když vám podezřelý soubor poslal někdo koho znáte, nemusí to znamenat že je neškodný). Vzhledem k běžným velikostem červů (často i 100 kB) a délce seznamu (desítky až stovky adres) pak dochází k silnému zatížení poštovních serverů. V okamžiku objevení se nového virulentního červa není výjimkou ani několikasetnásobný nárůst přeneseného objemu e-mailů.

Dobrým trikem používaným k maskování červa je falšování adresy odesílatele. Jak? Červ je svým vlastním SMTP serverem, o komunikaci s poštovním serverem se stará sám, pak má plnou kontrolu nad hlavičkami emailu kde je uveden odesílatel a všechny ostatní informace - které pak může zfalšovat k obrazu svému. Mnohé antivirové systémy automaticky odpovídají odesílateli v případě že je v emailu od něj zjištěno něco závadného. Je-li však odesílatel zfalšovaný - obvykle nahrazený nějakou adresou ze seznamu cílů, dostane varování někdo jiný, kdo pak často zpanikaří že je zavirovaný když není. (Nebo taky je.) Nejznámější červ který používá tento trik je Klez.

Jiným zajímavým typem přenosu červa je signatura emailu. Outlook je možno nakonfigurovat pro vkládání externího textového souboru s podpisem. Je možné aby tento soubor obsahoval HTML kód, kompletně včetně javascriptu a volání ActiveX komponent. Je pak též možné tímto kódem prorazit jednou z četných bezpečnotních děr Outlooku nebo MSIE, získat přístup k Windows Registry a souborovému systému - a získat tím absolutní kontrolu nad obětí. Poté uložit příslušný kousek kódu do souboru, přidat klíč do Registru který nastavuje že tento soubor se bude vkládat do emailu jako podpis, a pak se již červ stává součástí každého emailu který je z napadeného stroje odeslán. Dobrým příkladem je KakWorm.

Scannuji, scannuješ, scannuje...

Poštovní červ to má jednoduché; pošle se poštou. Ovšem jak dostat červa do cíle když je cílem server? Co ho takhle nechat prolézt bezpečnostní dírou?

Jak? Využijeme nějakou službu na cíli běžící, která má nám známou zranitelnost. Obvykle buffer overflow, ale může se jednat i o takovou pitomost jako například defaultní heslo nebo backdoor. Pokud se nám podaří dostat červa dovnitř a spustit, je vyhráno.

Co je to buffer overflow: jedna z nejdůležitějších a nejčastějších slabin procesů. Běžící proces vytváří v paměti počítače různé struktury. Jednou z nich je tzv. zásobník (stack) - něco jako štos papírů. Když program volá subrutinu, uloží na zásobník adresu instrukce kterou právě vykonává, a na subrutinu skočí; při návratu pak vybere návratovou adresu ze zásobníku a skočí na ni a pokračuje dále. Zásobník se též využívá pro rozmanité lokální proměnné, včetně řetězcových. Řetězcová proměnná je pole znaků - bajtů. V některých jazycích - nejnotoričtějším provinilcem je C - je zločinně jednoduché udělat chybu a nekontrolovat délku dat která se do dotyčné proměnné zapíše. Pokud tato proměnná má pevnou délku a zapíšeme do ní více dat než se tam vejde, píšeme za její konec - přes cokoliv co je za ní, tedy přetečeme jí. V našem případě ostatní data na zásobníku - ostatní lokální proměnné, návratové adresy, lokální proměnné funkcí které volaly funkce které volaly zranitelnou funkci. Program pak obvykle zkolabuje - v případě Windows velmi častým Obecným porušením ochrany, pokud jsme měli smůlu pak i obávaným Modrým Oknem Smrti. Unixy obvykle vysypou jádro procesu - core dump. Pokud však víme co děláme, a máme proces jehož rozložení paměti známe, můžeme do dotyčné proměnné poslat příliš dlouhý řetězec dat, který má na svém konci strategicky rozložené bajty nesoucí informaci, kterou chceme zapsat do zásobníku. Tím můžeme nastavovat hodnoty některých interních proměnných programu, nebo i přesměrovat návratovou adresu, pokud víme kam a máme tam nějaký vhodný kód - při návratu ze subrutiny nám pak program skočí tam a ne zpět odkud byla funkce volána. Toto je velmi nebezpečné - útočník může získat přístup přímo k příkazové řádce systému, s přístupovými právy procesu který takto "prostřelil". Pokud se podaří z procesu spustit příkazový procesor (u unixů obvykle /bin/sh, u Windows obvykle c:\windows\command.com or c:\winnt\system32\cmd.exe) a proces má standardní vstup a výstup přesměrované na otevřené síťové spojení, gratuluji - jste uvnitř. Pokud máme alespoň trochu zkušeností, není využívání těchto zranitelností složité. I pokud zkušenosti nemáme, je jen otázkou času kdy nám na to někdo napíše utilitu - pak ovšem opouštíme řady hackerů a stáváme se script kiddies, kteří si neumí ani vyrobit vlastní nástroje. Samozřejmě, nebezpečnost buffer overflow se dá redukovat - pokud máme kompilátor, který generuje kód ověřující integritu zásobníku před návratem ze subrutiny. To je však nepatrně pomalejší a kompilátory na to nejsou standardně vybavené. Pokud na to autor nemyslel a vy máte jen spustitelné soubory a nikoliv zdrojový kód, máte smůlu; pokud zdrojáky máte, můžete si je překompilovat sami se zapnutými ochranami - některé programy pak sice odmítají fungovat, ale většinou to jde; nejznámějším produktem takto fungujícím je StackGuard. Jistá úroveň bezpečnosti se dá získat i modifikacemi jádra systému, k tomu však opět potřebujete jeho zdrojový kód. Pokud jste odkázáni na dobrou (ehm) vůli korporací, které vám jej ze zásady nedají a ještě mají tu drzost blábolit něco o průmyslových tajemstvích a intelektuálním vlastniství a právnících, máte hádejte co. Uhodli - smůlu.

Špatná zpráva. Děravé je téměř všechno. I pokud se zalepí otvory stylu buffer overflow, stále ještě existují otvory další - např. heap overflow nebo format string overflow. Jejich využití je však již obvykle podstatně obtížnější a četnost jejich výskytu nižší. Buffer overflows jsou však téměř ve všem. Příkladem je například jinak docela bezpečný Apache server, který ve verzích nižších než 1.3.26 měl otvor tohoto typu. Ano, po chvíli se skutečně objevil červ, nebyl však nijak moc úspěšný - unixoví administrátoři jsou obvykle zodpovědnější než ti z druhé strany barikády operačních systémů (což může souviset s jednodušší zabezpečitelností unixů, kde je frekvence objevování se děr k zalepení poněkud výrazně nižší). Druhým, nejnovějším, příkladem je otvor v OpenSSL, knihovně zabezpečující šifrování transakcí přes HTTPS - paradoxně služba mající za úkol zabezpečení se sama stala nebezpečím, a červ Linux.Slapper, který jej využívá.

Někdy se dá přesvědčit i samotný server aby nám spustil náš vlastní kód, o který jej požádáme. Spouštíme-li skripty na webserveru, žádáme server o spuštění procesu, který nakrmíme parametry - obvykle z nějakého formuláře, který jsme vyplnili. Z bezpečnostních důvodů smí server spouštět skripty pouze ve vybraných adresářích. My se však v některých případech můžeme dostat ven. Microsoft pro nás svého času připravil lahůdku v podobě podpory Unicode a odfláknuté kontroly požadavků. Chceme-li se v adresářové struktuře dostat o úroveň výš, použíjeme řetězec ".." jako jméno adresáře, oddělené lomítkem. Lomítko i tečku ovšem můžeme zapsat různými způsoby - "/../" - skok o úroveň nahoru - se dá zapsat jako "%c1%1c../", "%c0%2f../", "%252f../", "%255c../", a mnoha a mnoha (a mnoha) dalšími. Kontrolujeme-li řetězec na přítomnost "/../" před dekódováním těchto zápisů, tyto konstrukce nezachytíme. Pak můžeme zavolat /scripts/..%255c../winnt/system32/cmd.exe?prikaz+ktery+chceme+vykonat a máme kontrolu. (Díky Code Red a Nimdě má již většina NT (No-Thanks, Děkuji-nechci?) serverů tuto díru zalepenou. Zachovejte klid a čtěte Bugtraq - objeví se další. Pro úplnost, Windows 2000 nejsou nic jiného než tak dlouho slibované a o tolik let opožděné Windows NT5, jen poněkud - ehm - přejmenované.)

Jelikož různé instalace jsou si navzájem podobné až téměř identické, bezpečnostní otvory bývají identické též. Máme-li v síti (nebo Síti) dost žrádla pro červy - strojů se stejnou zranitelností, je jen otázkou času kdy se alespoň jeden červíček objeví. Epidemie většího či menšího rozsahu poté následuje.

V okamžiku kdy nám server umožní vykonávat na něm naše příkazy, máme vyhráno. Zbývá jen říci aby do sebe nacucl červa a spustil jej. Fáze infekce skončila, nastává fáze šíření.

Hostitel je nakažen, nyní je jeho úkolem najít a nakazit co nejvíce ostatních hostitelů. Jinak než metodou pokus-omyl to jde těžko. Máme však standardizaci - webservery jsou umístěny typicky na portu 80, emailové servery na portu 25, ostatní služby mají také svoje TCP nebo UDP porty - FTP na 21, SSH na 22, Telnet na 23, DNS na 53, Microsoft SQL na 1433, a tisíce dalších. Servery jsou rozmístěné po Síti všude možně - zkoušíte-li IP adresy náhodně, máte vždy určitou šanci že na nějaký narazíte. Některé segmenty však mají větší pravděpodobnost výskytu - typicky ty které patří providerům a kolokačním společnostem (těm které pronajímají skříň s vysokorychlostní internetovou přípojkou, do které si zákazník zapojí svůj vlastní počítač). Zde je obvykle server vedle serveru. Jiné mají pravděpodobnost velmi nízkou - ty které připadají providerům dialupovým, málo lidí provozuje server na modemu na dynamické adrese - nebo nulovou - ty neobsazené. Nebo naopak - síťové disky otevřené z Windows celému světu jsou běžnější u modemových providerů - Přítomnost serveru na segmentu tedy značí vyšší pravděpodobnost výskytu dalších serverů v jeho blízkosti; podobně jako je to s houbami. Přidanou hodnotou budiž fakt že lokální sítě mají obvykle podstatně vyšší rychlost v rámci sítě než vůči zbytku světa - příkladem budiž 100Mb síť připojená k Internetu přes 128k linku. Optimální kombinací je tedy zkoušení náhodné v rámci celosvětovém, kombinované se zkoušením soustavným v rámci lokálním. Náhodný přístup navíc není dlouhodobě příliš efektivní. Dochází k opakovanému zkoušení těch samých adres, které jsou buď již nakažené, nebo nenakazitelné. Nepočítáme-li vypínání a zapínání počítačů, jeden pokus na IP adresu je tak akorát. Pokud deset stejných červů zkouší jeden cíl, devět z nich dělá zbytečnou práci. Ve volné přírodě se zatím vyskytly nepříliš sofistikované algoritmy, povětšinou čistě náhodné nebo s pravděpodobností stupňovanou dle vzdálenosti v adresovém prostoru; v laboratorních podmínkách se však dosáhlo děsivé efektivity.

Odpoví-li nám při očichávání sítě server, přesněji služba o kterou se zajímáme, musíme ještě zjistit zda se jedná o zranitelnou verzi. Méně obvyklé je prověření odpovědi a přečtení typu a verze serverového programu, obvyklejší je zkouška naslepo; červ se připojí k cíli, a zadá požadavek který - pokud je cíl zranitelný - mu otevře cestu dovnitř. Někteří červi zkouší několik možných zranitelností (Nimda), někteří jiní dokonce i několik služeb (Morris Worm), většina se spokojí s jednou (Code Red, Code Red 2, Linux.Slapper, Lion) - často to stačí. Prorazíme-li dovnitř a získáme kontrolu nad serverem, cyklus se opakuje.

Nesmíme zapomenout na náklad který červ nese. Nemusí to být nic; pak máme jen šířící se program. Nebo červíček může otvírat přímý přístup do napadeného počítače (Code Red 2, Linux.Slapper). Může sloužit pro zprostředkování útoku na jiné počítače, buď jako "zombie" spící a čekající na příkazy zvenku, nebo jako disciplinovaný voják s rozkazem zaútočit v určitém čase na určité místo; vzhledem k potenciálně velkému množství červů je jejich použití pro DDoS (Distributed Denial of Service, spočívající v přetížení cíle a jeho zahlcení požadavky nebo dopravou a efektivnímu vyřazení z provozu) velmi lákavé. Mezi další možnosti patří škodolibé a účinné mazání souborů, instalace zadních vrátek do počítače za účelem jeho dalšího využití někým v terénu, tzv. rootkitu (v poslední době dost časté), nebo únik informací - vyhledávání souborů a jejich odesílání pryč.

Webserveroví červi mohou zjišťovat své potenciální sousedy i podstatně efektivněji než náhodně - jelikož mají přístupová práva webserveru, mohou prohlédnout stránky na něm uložené, vykuchat z nich adresy ostatních serverů na které míří odkazy, a vyzkoušet tyto adresy jako přednostní cíle.

Vedlejším efektem scannujících červů je velká zátěž Sítě. Několik agresivně scannujících serverů na jednom malém segmentu Sítě dokáže její připojení k Internetu slušně vytížit. Totéž platí o serverech spravujících mnoho IP adres, které představují podstatně větší terč; kolik adres mají na starost, tolikrát větší zátěž dostanou. Mnohdy pak již samotné vyřizování červích pokusů o napadení stojí server tolik úsilí - může se jednat často i o desetitisíce požadavků za hodinu - že jej dostane na kolena a vyřadí z provozu. Mnoho providerů se s těmito problémy setkalo když se Code Red probudil a začal řádit. Ten můj taky.

Flash worms, Warhol worms

Červi se obvykle šíří z jednoho zdroje. Čistě náhodné algoritmy hádání adres které jsou používané nyní dávají výsledky silně suboptimální; váženě náhodné zvýhodňující lokálnější šíření jsou jen o něco lepší. Střelba naslepo je velmi velmi neefektivní; různí červi stejného rodu se pokoušejí nakazit stejné cíle opakovaně. Časy nárůstu populací červů se pohybují typicky ve dnech, v nejlepším případě v desítkách hodin. Což, jak si jistě dovedete představit, není nic moc.

Při nulové znalosti pozic zranitelných strojů a vzájemně plně nezávislých a ekvivalentních červech je náhodný přístup víceméně nejlepší a určitě nejjednodušší. Jako obvykle však není nic ztraceno. Alternativ k náhodnému scannování Sítě je mnoho, s různými výhodami a nevýhodami. Desítky hodin se tak mohou smrsknout na 15 minut, nebo i pod jedinou minutu.

Většina pokusů o nalezení a infikování dalšího hostitele končí nezdarem. Nejčastěji cíl na dané adrese neexistuje, neprovozuje službu kterou hledáme (např. webserver), nebo služba není zranitelného typu a verze. Nebo je hostitel již infikovaný. Ve všech těchto případech je pokus neúspěšný a představuje plýtvání úsilím. My však můžeme červíčky vybavit potřebnou dávkou předběžných znalostí terénu, a z osamělých bojovníků vybudovat plně vycvičenou armádu.

K proměně samotářských amatérů na elitní komando potřebujeme rozdělit úkoly a zvýšit přesnost palby, alespoň ve fázi kdy je populace červů stále ještě nízká; pokud je co rána to zásah, co pokus to infekce, neplýtváme municí ani časem. Potřebujeme taktickou přípravu - získat seznam co největšího množství zranitelných cílů.

Seznam samotný nemusí být získán červem; můžeme jej mít připravený předem. K tomuto účelu se musíme podívat na dostatečné množství serverů. Máme mnoho možností. Můžeme zkoušet naslepo, postupně všechny IP adresy. Dá to práci a trvá to. Můžeme scannovat Síť z jedné jediné základny; máme-li dostatečně rychlou linku, může to být i praktické - máme-li neomezený rozpočet a OC12 linku, můžeme celou Síť prohlédnout během asi dvou hodin. Jsme-li švorc, můžeme scannovat distribuovaně: z desítek, stovek, nebo i tisíců míst najednou; každé místo by mělo mít co nejrychlejší připojení k Síti a pro optimální efektivitu by měly by být rozesety přibližně stejnoměrně po IP rozsazích. Jako základny pro distribuovaný scanning můžeme využít již existující populaci červů, které poskytují vzdálený přístup, nebo alespoň označují špatně hlídaný stroj se známou bezpečnostní dírou kam se můžeme nasquatovat. Můžeme též podstatně omezit množství potenciálních cílů; nakoupíme databázi poštovních adres, z těch odvodíme seznam domén, z těch odhadneme názvy korespondujících serverů které převedeme na IP adresy (ie, kdokoliv@zivel.cz -> zivel.cz -> www.zivel.cz -> 212.47.7.245) a máme vysoce kvalitní seznam webserverů, z nichž pak můžeme vybrat ty zranitelné aniž se zdržujeme zkoušením neexistujících a newebserverových adres. Můžeme se maskovat jako search engine (seznam.cz, google.com,...) a pocházet a indexovat Síť a vytvářet si databázi nejen webových stránek, ale i který počítač běží na jakém operačním systému a verzi serveru; toto je dobrá strategie neboť nám umožňuje získat velké množství informací s minimálním buzením podezření, zejména pokud některé z výsledků poskytujeme veřejně - kdoví jaké nepublikované vedlejší účely plní některé prohledávače. Sledujeme-li delší dobu, můžeme zaznamenávat změny verzí programů jednotlivých serverů a korelovat je proti objevům jejich bezpečnostních děr; tím získáme další cenné informace, tentokrát o bdělosti jednotlivých administrátorů. Sedíme-li na uzlu přes který jde větší množství dopravy, nemusíme dokonce ani dělat nic aktivního - jen posloucháme komunikaci a z hlaviček odezev požadavků odchytáváme identifikace serverů, a postupem času se nám plní a aktualizuje databáze. (Opět nic složitého, pro zájemce klíčová slova tcpdump, libpcap.) Pro tento přístup je optimální pokud máme přístup k počítačům přes které je vedena komunikace od nějakého vhodného serveru vyhledávače - tento nám pak poskytuje veškerá data která chceme, aniž my sami musíme vyvinout jakoukoliv činnost.) I pokud jste jen systémoví administrátoři nějaké větší instituce, můžete získat dost velké množství dat pasivním monitoringem komunikace vašich uživatelů. Logování packetů obsahujících klíčová slova (v našem případě "^Host: " (ve standardním regexp formátu) může zajistit i obyčejný systém na detekci útoku (např. Snort), pouhým přidáním direktivy do seznamu signatur; další zpracování je pak na nás - krásný příklad využití obranné technologie pro útočné účely. (Stejným způsobem můžete z komunikace odchytávat např. hesla, jsou-li posílány nezabezpečeně - telnetovým spojením, standardní verzí protokolu POP3 nebo IMAP, FTP... - většina lidí navíc používá stejné uživatelské jméno i heslo na více místech, např. pro výběr pošty (nezabezpečeně) a pro dálkový přístup do firemní sítě (zabezpečené, ale útočník si může odchytnout nezabezpečená hesla a pak je vyzkoušet zde) - pokud můžete, nepovolte svým uživatelům vybírat si vlastní hesla. Legitimní mainstreamová technologie navržená jako obranná, pouhou rekonfigurací přeměněná v nástroj Temné strany.) Můžeme si ovšem napsat i náš vlastní pasivní komunikační scanner, máme-li chuť a náladu. Jelikož je naše činnost pasivní - pouze posloucháme, nebudíme sebemenší podezření.

Nyní tedy máme databázi řekněme kolem sta až dvou set tisíc serverů; s tím se již dá něco rozumného dělat. Máme připravené tělo červa, s připravenými všemi funkcemi a nákladem, jen bez penetrační hlavice - nemáme vhodnou bezpečnostní díru, vše co máme je již příliš dlouho známé na to aby to bylo dostatečně běžné. Monitorujeme obchody v podsvětí; občas se objeví exploit (metoda k proražení díry) na něco na co ještě není známá obrana, tyto bývají vzácné leč velmi cenné - horké zboží které rychle zastarává. Monitorujeme bezpečnostní mailinglisty (BugTraq, CERT, VulnWatch...); informace odsud bývají podstatně kvalitnější, ale objevují se obvykle až když výrobci děravého produktu uveřejní patch (opravu). I tak v prvních několika hodinách máme celý svět plný zranitelných cílů; uvaříme kávu zabijáka, nastudujeme zranitelnost, zreprodukujeme, vyvineme exploit (když už víme kam koukat, relativně jednoduché), použijeme jako penetrační hlavici červa. Do červa jako palivo natankujeme seznam zranitelných cílů vybraný z naší předem připravené databáze serverů dle kritérií, a vypustíme jej do přírody. Jde doslova o minuty - čím dříve červ odstartuje, tím méně administrátorů mělo šanci se o použité bezpečnostní díře vůbec dozvědět. Již není návratu. Držte si klobouky, jedeme z kopce.

Červ je venku, co teď. Svojí práci jsme odvedli, v motorech červa bublá seznam zranitelných IP adres s údaji o odhadované rychlosti jejich připojení. První vlna bude několik set až tisíc cílů přibližně homogenně rozesetých po adresovém prostoru Sítě. Jsme rychlí, pravděpodobnost úspěchu zásahu na provedený scan může dosahovat vysoko přes 90%. Každý z červů druhé generace dostane od svého rodiče seznam cílů druhé vlny, nahromaděných v jeho síťovém okolí. Poté celá populace začíná soustavně scannovat síť - každý červíček své nejbližší okolí, plus občasné náhodné pokusy. Během méně než čtvrt hodiny je naprostá většina zranitelných serverů v rámci celé Sítě (přes 98%) červivá a červ získává svých warholovských 15 minut slávy.

Máme-li dobře zmapovaný terén - rozsáhlou a vhodně rozesetou mapu obsahující naprostou většinu zranitelných strojů, můžeme s přihlédnutím k dostupným přenosovým rychlostem jednotlivých infikovaných strojů zamořit celou Síť řádově v desítkách sekund; tato modifikace se nazývá Flash Worm, Bleskový červ.

Doomsday Worm - červ posledního soudu

Nyní máme přijatelně velkou populaci červíčků - statisíce napadených počítačů; měli-li jsme štěstí, možná i přes milión. Logická otázka: co s ní; s tolika vojáky po světě je planeta naše. Než nám je administrátoři objeví a pobijí, můžeme si užívat.

Co třeba položit na kolena banku? Nebo burzu? Nebo třeba celý Internet? Operace hodná naší velikosti.

Za dávných časů byl Internet, tehdy ještě ARPAnet, téměř nezranitelný. Navržený na plně rozvinutou jadernou válku, decentralizovaný, postrádající elementy významně důležitější než jiné. I při značné velikosti poškození schopný měnit strukturu za chodu. Každý zlatý věk však jednou musí skončit, a tak moc převzali účetní. Síť byla zprivatizována, a nezranitelnost přestala být prioritou - touto se stal, jako až příliš často, zisk. Ve jménu mrzkého mamonu byla decentralizace opuštěna a byla vybudována páteřní síť, backbone. Znepokojivě malé množství přenosových linek a routerů má nyní na starost většinu internetové dopravy na dlouhé vzdálenosti. Druhým slabým místem je architektura hierarchie doménových serverů, DNS. Pouhých 13 kořenových "root" serverů má na starost přesměrovávání žádostí na servery příslušných zemí a organizací. Jejich vyřazením podstatně omezíte až znemožníte ty služby Sítě, které jsou závislé na překladu jmen na IP adresy; tedy žádný Web, žádný e-mail, a mnoho dalších služeb vezme za své též.

DNS je důležitá věc, ale e-mail a web nejsou všechno. Vraťme se zpět k architektuře Sítě samotné. Vezměme si mapu konektivity a pozorně se podívejme na hlavní přenosové trasy. Věnujme hlavní pozornost nejslabším článkům - vysokokapacitním satelitním linkám a podmořským kabelům. Povšimněme si uzlů - routerů - které dotyčné linky propojují. Tyto budou naše cíle. Veďme útok stejným stylem jako kdybychom se snažili vyřadit silniční dopravu v metropolitním městě, útočme na vybrané důležité křižovatky a ponechme změněné toky dopravy ať se postarají o zbytek.

Na vyřazení všech routerů pravděpodobně nemáme kapacitu ani se superčervem. My však nepotřebujeme zneškodnit všechny; znalost hlavních a záložních tras nám umožní vybrat si menší skupinu cílů. Po vyřazení těchto strojů bude doprava která by jinak směřovala přes ně přepojena na routery ostatní. Pokud jsme plánovali dobře, budou zbylé routery beznadějně přetíženy a hlavní komunikační trasy na dlouhé vzdálenosti zkolabují. Nejen že nebude fungovat Web a email - nebudou chodit mnohé bankovní sítě, VPN sítě mezinárodních firem, mnohá dálková telefonní spojení - která jsou nyní z cenových důvodů vedena digitálně přes Internet. Zbylá telefonní infrastruktura, která je ještě pořád vedena na Internetu nezávisle, bude muset převzít i tato spojení a bude beznadějně přetížena - sbohem mezinárodní hovory. Kolaps tohoto rozsahu bude v počátcích obtížné i jen zmapovat. Prostředky které používají administrátoři ke vzájemné komunikaci - email, Usenet, telefony - budou přetíženy nebo vyřazeny úplně. V nastalém chaosu potrvá možná i desítky hodin než bude obnovena alespoň základní komunikace.

Jak toho však dokázati můžeme? Komplikovanost současných technologií nám dává mnoho možností; všechny rootové servery DNS používají stejnou verzi software. Známe-li její ještě nezalepenou zranitelnost, můžeme je odstřelit vcelku s minimálními náklady. Routery samotné jsou dnes již celé specializované počítače; dostanou-li vadný packet na který nejsou připraveny, je určitá šance že zkolabují - zaseknou se. Nebo třeba jen na okamžik vypadnou a restartují; pravděpodobnější a ne až tak lákavá varianta, ale i tak po několik milisekund až sekund nebudou schopny zpracovávat dopravu, a až opět naběhnou, můžeme po nich packetem-projektilem střelit znovu. A znovu. A znovu. Munice máme dost a na tento typ útoku ani nepotřebujeme červí armádu.

I pokud neznáme žádný sofistikovanější a efektivnější bojový styl, pořád ještě zbývá staré dobré kung-fu - distribuované odmítnutí služby, DDoS, nebo též Distributed Denial of Service. Obyčejné zahlcení cílů dopravou. Neelegantní hrubá síla, ale výsledek stejný.

Následující krizový scénář se může přihodit již dnes. Červ je vypuštěn jako gin z lahve. První, druhá, a třetí generace infikují servery dle seznamu, o několik desítek sekund později zahajují systematické scannování a infikují i zbytek obětí, vzájemně si seřizují hodiny pro další akci. V čase t0+15 zahajují koordinovaný útok na cíle dle seznamu. Dostupná přenosová kapacita Sítě během následujících desítek sekund prudce klesá. Telefony, tedy ty které ještě fungují, divoce zvoní; administrátoři po celém světě panikaří a snaží se zjistit co se děje. Nastává krvavý masakr a cyberspace se zaplňuje nedoručenou poštou. Červi pokračují v útoku s neztenčenou intenzitou; zasypávají cíle divokou změtí paketů, podobnou "legitimní" dopravě, znemožňující odfiltrování na místních routerech. Server po serveru je odpojován a množství červů ve volné přírodě se pomalu snižuje. Červi, na tento vývoj navržení, spolu komunikují a zjišťují postupný pokles své populace v regionech. Přeskupují své formace, ukončují útok na sekundární cíle a soustřeďují se již jen na primární. Eventuelně přichází další fáze - rozsáhlý scanning Sítě na servery s jinou zranitelností, rekrutující je pro druhou vlnu útoku. Po několika desítkách hodin je situace stabilizována; většina útoku je odražena, většina červů zneškodněna, zbytek je pouze otravný, ve zbývajícím množství však již nikoliv nebezpečný. Síť víceméně opět funguje, škody jdou do stovek miliard dolarů. Další miliardy budou stát nutné změny infrastruktury Sítě, návrat k původní plošné decentralizaci. Anebo spíše ne, protože se jako obvykle nikdo nepoučí.

Jediný člověk dokáže vyřadit celou Síť z provozu během několika sekund. Možná je to Váš soused, vyhozený z práce a zahořklý. Možná arabský programátor, mstící se za rodinu zabitou imperialistickou bombou. Agent CIA snažící se vyprovokovat krizovou situaci ze které by zmíněná organizace mohla vytěžit další pravomoce; nebylo by to poprvé. Možná specialista čínské armády na informační válku, jednající na rozkaz. Student, zvědavý jestli jeho počítačové simulace budou v souladu se skutečností. Nebo možná já.

Spěte klidně; velký průšvih je jen otázkou času. Červ nikdy nespí.

P2P worms, červárium

Červi po svém vypuštění do okolního prostředí nemusejí jednat samostatně. Velkou výhodou a zároveň zranitelností může být jejich vzájemná komunikace; mohou si vyměňovat informace, nebo dokonce i nové části kódu poskytující další funkce. Mohou být použity pro komunikaci. Vzájemná komunikace však může být využita i k vytrasování a následnému zničení ostatních červů. Je tedy dobré zvážit množství soudruhů které červ zná - čím více, tím je masová komunikace efektivnější, ale zároveň ohrožení populace červů větší.

Komunikace může být jednoduchá i velmi sofistikovaná. Doporučil bych používání šifry, zabezpečující neodposlechnutelnost jednotlivých relací, eventuelně zformování VPN mezi jednotlivými červy. Použití asymetrické šifry je výhodou; při žádosti o navázání komunikace červ zároveň nabídne svůj veřejný klíč, partner pokud komunikaci přijme pošle veřejný klíč svůj. Soukromé klíče zůstávají "majetkem" jednotlivých červů. Povolení a zamítání komunikace může být řízeno množstvím pripojených partnerů; je-li jich více než horní limit, odmítat žádosti, je-li jich méně, aktivně scannovat síť a hledat nové partnery. Komunikace může být uzavřená - pouze pro červy nebo vyvoleného operátora který má klíč, nebo úplně otevřená. Pro případ uzavřené komunikace s možností zadávání příkazů zvnějšku se hodí přístup s dvěma klíči; jeden pár klíčů generovaný pro každý exemplář červa v okamžiku jeho zrození a určený pro komunikaci s ostatními červy, a jedna polovina páru klíčů pro komunikaci tvůrce s červáriem, která je konstantní pro všechny exempláře.

Tímto zformujeme síť vzájemně propojených červů, kde můžeme posílat zprávy z jednoho konce na druhý a kde jednotlivé elementy mohou komunikovat mezi sebou - síť v Siti, červárium.

Evoluce

Geneticke algoritmy, evoluční techniky, dědičnost

Poměrně fádní problematiku můžeme vítaně oživit. Vzájemně komunikující červi si mohou předávat části kódu - nové algoritmy šíření, nové metody maskování, nové strategie chování; podmínkou je dostatečně modulární kód umožňující výměnu bloků programu za běhu. Potomci každého červa dědí jeho kompletní genetickou výbavu a nastavení jednotlivých proměnných, jež je podobné - ale mírně se odlišující o náhodnou hodnotu - od nastavení rodičů. Těmito hodnotami mohou být např. agresivita - s jakou intenzitou červ scannuje okolí, tendence zasporovat se (viz níže), nebo důvěra - s jakou pravděpodobností přijme kód od partnera který si chce vyměnit "genetickou informaci", nebo mnohé jiné. Agresivní červi budou okamžitě zřejmí, ale budou se rychle šířit. Naopak méně agresivní budou přitahovat méně pozornosti a mít větší šanci že si jich přepracovaní administrátoři nevšimnou, ale nakazí méně cílů ve stejném čase. Řešením může být pravděpodobnostně nebo algoritmicky řízená změna úrovně aktivity; nastavení jejích parametrů může být součást dědičnosti též.

Velmi důležitou vlastností je důvěra. Červ který plně důvěřuje všem modulům jež má přijmout jako svou součást se vystavuje vysokému riziku že bude odstraněn; nový software může být příkaz k sebezničení po určitém čase, nebo třeba i modul který není dobrý pro přežití z jiného důvodu, např. chyba programátora. Červ který je přiliš nedůvěřivý naopak odmítne všechny moduly a postupem času beznadějně zastará, ztratí kapacitu nakažení okolí které bude mezitím aktualizováno a nebude vykazovat zranitelnosti které červ zná, a bude časem odstraněn. Je-li tedy červárium složeno z červů o různé důvěřivosti, budou ti důvěřivější mít výhodu rychlejších aktualizací, zatímco ti méně důvěřiví budou mít větší šanci přežít eventuelní pokus vytlouci je ze Sítě pomocí autodestrukčního modulu - po takovéto akci zbyde jen populace méně důvěřivých, která se poté namnoží zpět do uvolněných teritorií. S postupem generací se pak zpětně dorovná i poměr důvěřivých a nedůvěřivých červů, dle toho co je v dané situaci pro přežití nejvýhodnější.

Červ se však může i zasporovat - usnout. Ve stavu spory je inaktivní, z pohledu pozorovatele se chová jako by v systému nebyl. Nenaslouchá na zprávy od ostatních červů, nesnaží se navázat spojení, nesnaží se množit. Jen spí a čeká - na čas, na událost, nebo dokonce i na reboot hostitele. Do tohoto stavu může přejít náhodně, nebo při detekci změn podmínek - ie, pokus o nalezení a odstranění. Pak i v případě, že se podaří vysledovat a odstranit všechny aktivní exempláře, budou v Síti pořád přítomny zárodky infekce připravené se probudit a znovu obsadit teritoria.

Výsledkem budiž červárium, Síť důkladně promořená rozmanitými červy všemožných vlastností, s kterými se díky jejich rozmanitosti bude bojovat velmi těžko.

Anonymizéry

Ve změněném světě poslední doby, kde si státní moc a tajné služby uzurpují další a další pravomoci, se anonymita stává cenným zbožím. Internetoví provideři jsou povinni uchovávat komunikační záznamy - seznamy návštěvníků serverů, seznamy přenesených e-mailů. V případě že se přimotáte k něčemu choulostivějšímu, třeba i jen ze zvědavosti, můžou si policejní složky zmíněné záznamy od providerů vyžádat a následně vás identifikovat. Může se jednat i o nevinnou záležitost; v polovině dubna 2001 si policie vyžádala a dostala kompletní seznam návštěvníků stránek www.rozmysli.to, nabádajících - oh jak strašný zločin - k porušování zákona o sčítání lidu, jmenovitě šířením pochybností. K logům má policie přístup bez soudního příkazu, s ním i k obsahu komunikace - k vlastním e-mailům. Rovnováha síly je tedy zřejmě narušena. My však máme červárium.

Předpokládejme že červi byli k tomuto účelu navrženi. Máme tedy síť uzlových bodů, vzájemně spolu šifrovaně komunikujících. My se spojíme s jedním z nich a zadáme mu příkaz propojit nás s jiným místem Sítě, např. zmíněným serverem rozmysli.to. Dočasný kanál je otevřen přes několik vybraných červů, poslední z nich nám zprostředkuje spojení s cílem. Na rozdíl od "oficiálních" anonymizujících služeb červi nevytváří logy, není tedy žádná možnost bez přímého odposlechu všech bodů Sítě zjistit kam jste se spojovali. Váš ISP může maximálně zjistit komunikaci Vás s nějakým červem, samozřejmě šifrovanou, cílový server má pak záznam o spojení s jiným červem někde úplně jinde. Šance zpetněho vysledování je takřka nulová a Autority mají utrum. Máte-li starost že byste mohli být popotahováni i za pouhou komunikaci s červem, nechte se jím nakazit sami. Dokazatelnost proběhlé komunikace v rámci vašeho vlastního počítače je při základech datové hygieny (nepoužívat Windows, nezapisovat choulostivá data na záznamová média) velmi obtížná.

Špionáž

V okamžiku kdy červ napadl server, má přístup k souborům na jeho disku. V závislosti na typu serveru jen k některým nebo ke všem; vždy však ke všem ke kterým měla přístup napadená služba. Máme-li zájem o některá specifická data, můžeme červy instruovat aby prohlédli soubory na diskách obětí a poslali nalezené soubory vyhovující kritériím zpět. Toto však může přivést stopu k nám. Jako vylepšení se tedy dokumenty mohou rozkopírovat po celém červáriu, kde si je pak můžeme kdykoliv vyzvednout z jiného uzlu. Zajímavé jsou též databáze; cenné bývají zejména záznamy o klientech v elektronické komerci - identity, adresy, čísla účtů a kreditkaret. Teorie velí choulostivá data na serverech ukládat zašifrovaná; v praxi to však nikdo nedělá.

V základní podobě se toto již vyskytlo u např. emailových červů typu Sircam a Klez. Tito drobečci při svém rozesílání ke svému tělu přibalí náhodně vybraný dokument z napadeného počítače. Již čistě pasivním sledováním odfiltrovaných příchozích červů má administrátor s dostatkem času šanci získat choulostivé dokumenty od ostatních firem. Jejich použití - prodej, či "insider" informace pro burzovní investice - je již jen otázkou vašich možností a fantazie.

Superpočítač

Červi však mají k dispozici i jiný prostředek: procesorovou kapacitu napadeného serveru. Komunikují-li mezi sebou, není principielní problém spřáhnout několik desítek až stovek tisíc počítačů k řešení výpočetních úloh, jak se v poněkud dobrovolnější variantě využívá například pro projekt SETI@Home. Výpočetní kapacita tohoto rozsahu se již může směle měřit se superpočítači vlastněnými Pentagonem a NSA. Jistým omezením je nestejná kapacita jednotlivých uzlů a nezaručená rychlost vzájemné komunikace. Toto se však pro mnohé typy úloh dá obejít vhodným rozparcelováním. Podrobnosti viz teorie distribuovaných počítačů (distributed computing).

Další potenciálně zajímavou aplikací je umělá inteligence. Napadené počítače se stávají jednotkami v celosvětovém systému, bloky neuronových subsítí v jedné velké síti vzdáleně podobné mozku.

Mobilní červi

Nové mobilní telefony mají mnoho víceméně zbytečných funkcí; jednou z nich jsou hry. Mnohé telefony nyní obsahují i interpreter jazyka Java, a umožňují stáhnout si nové hry. Některé telefony - mně známá je Nokia - mají zvláštní formát SMS zpráv který umožňuje měnit nastavení telefonu na dálku nebo i spustit stažení datového objektu. Bude-li přítomna funkce poslání aktivního datového objektu - např. java appletu - z telefonu na telefon podobně jako SMS, situace se jeětš zjednoduší; přijmeme červa na telefonu, tento vyplení náš adresář a rozešle se všem obětem. Ti kteří budou mít zranitelný typ telefonu budou šířit infekci dál.

Nový formát multimediálních SMS, nebo též MMS (a nějaká ne-úplně-kompatibilní odvozenina specifická pro Nokii, zavrženíhodný pokus udržet si podíl na trhu pomocí úmyslného vnášení nekompatibilit) je složitý. Nedivil bych se kdyby některé telefony měly zranitelnost třídy Buffer Overflow.

Vyhánění červa ďáblem

Máme Síť. Je červivá. My si své počítače ochránit dokážeme, ale co tisíce čističů min a expertů v Solitéru (Mine Cleaners and Solitaire Experts, držitelé titulu MCSE), příliš neschopných na to aby vůbec zjistili že se něco děje? Scany z jejich strojů nás stojí přenosovou kapacitu i nervy. My však můžeme vyhnat červa ďáblem.

Červ může plnit i úlohu exterminátora. Šířit se z počítače na počítač, hledat stopy přítomnosti jiného červa, odstraňovat je a pokračovat dál. Samozřejmě se všemi riziky z toho vyplývajícími. Dobrý antičerv by měl být opatrný, nepřetěžovat Síť, a po časovém limitu se pokud možno odstranit.

Příkladem budiž Linux.Cheese.Worm, reakce na Linux.Lion.worm. Lion využíval díru v DNS daemonu Bind (jeden z nejděravějších programů světa unixů, spolu se Sendmailem vedoucí statistiku potíží). Scannoval port 53 a po infekci serveru otevřel zadní vrátka s oprávněním root na portu 10008, a začal napadat ostatní servery. Cheese scannoval tento port 10008, při jeho zjištění se nainstaloval do počítače, otevřený port uzavřel, vypudil Liona, a zaujal jeho místo, vyhledávajíc další servery s otevřeným portem 10008. Nebyl nikdy příliš rozšířen.

Reakcí na příchod Code Red 2 byl Code Green. Scannuje Síť náhodným algoritmem, vyhledává NT servery napadené červem Code Red verze 2, napadá je přes stejnou zranitelnost kterou využívá Code Red, vypudí původního nájemníka, pak stáhne z Microsoftu záplatu (patch) na zranitelnost a nainstaluje ji na server, pak pokračuje ve vyhledávání ostatních cílů.

Druhou reakcí byl CRclean. Jeho zajímavostí je pasivní šíření. Nescannuje, nešíří se, pouze čeká na pokus o napadení Code Red. Reaguje zpětným napadením útočníka, a odstraněním Code Red, pak se jeho kopie usídlí i na původním útočníkovi kde původní zranitelnosti zazáplatuje stejně jako Code Green, a čeká na další pokusy o napadení jako nášlapná mina. Pokud je později než listopad 2001, CRclean se při vypínání systému ze serveru odstraní.

Použití antičervů je poněkud kontroverzní záležitost. Jedná se o zásah do systému bez souhlasu správce, mnozí bezpečnostní technici - stále ještě idealisté, nebo vyděšení strachem z právníků - s tímto postupem nesouhlasí. Svět je však k prasknutí přecpaný idioty a zákonitě se mnohým z nich podařilo přesvědčit jejich ještě o něco více blbé okolí že umí systémovou administraci natolik dobře že se z nich stali správci. Otázkou je nakolik si můžeme dovolit brát ohledy na souhlas někoho natolik neschopného že si nechal nepozorovaně začervit server, zejména pokud jeho server začal aktivně ohrožovat své okolí. Jisté dilema existuje u antičervů aktivních, které díky vedlejším efektům scannování mohou působit škodu. Pasivní antičervi jsou řešení čisté a efektivní. I pokud protiútok zhavaruje napadený server, žádná škoda - aspoň to konečně přiláká pozornost jeho administrátora a jako vítaný vedlejší efekt odstraní zdroj dalšího rizika a otravných scanů ze Sítě. Z čistě etického hlediska to prý není košer, ale proponenti tohoto nepraktického názoru zřejmě nestrávili dost času zachraňováním situace když byl jejich ISP přetížený, nechodilo nic včetně e-mailů kritických pro chod firmy, oni měli na krku bzučící roj zoufalých uživatelů, a nemohli LAUTR NIC dělat. Když je válka, musí se zabíjet.

Core Wars - souboje červů

Nebyli by to programátoři aby si z červů neudělali sport. Již od let šedesátých byly pořádány neformální souboje červů, obvykle simulovaných v nějakém prostředí, zvané Core Wars (dle tehdy běžných feritových pamětí, jader, cores - v překladu tedy "války o jádro", nebo poetičtěji "jaderné války"). V březnu roku 1984 byly uveřejněny přesné specifikace hry Core Wars, v publikaci D.W. Jones, A.K. Dewdney: Core Wars Guidelines, z kanadské Západoontarijské Univerzity. Prostředím je MARS, Memory Array Redcode Simulator, jazykem je Redcode, jednoduchý assembler. Dva programy napsané v jazyku Redcode jsou umístěny do náhodných pozic v paměti MARS, a vypuštěny na sebe. Účelem je ukončit všechny procesy protivníka, zůstat v paměťovém prostoru sám.

Existuje velké množství různých strategií a programy různé složitosti. Nejjednodušší přístup je jediná instrukce která se kopíruje z adresy na adresu a přepisuje všechno co je v cestě. Jiný přístup je program o čtyřech instrukcích, který přepisuje každou pátou instrukci instrukcí "ukonči program" - nic co je v cestě a delší než 4 instrukce nepřežije, alespoň ne bez poškození. Strategie mohou být i mnohem mnohem složitější, zahrnovat detekci narušení vlastního kódu a následné opravy, detekci narušení prostoru v okolí programu, skrývání sebe sama, vypouštění malých jednoduchých destruktivních procesů, a mnohé jiné.

Byly a


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     



Zpět na seznam článků     Číst komentáře (2)     Verze pro tisk


Hodnocení/Hlasovalo: 1/2

1  2  3  4  5    
(známkování jako ve škole)