Conficker i profesionalizacija malwarea
Deset milijuna zaraženih računala, vojske i bolnice na koljenima — i jedan botnet koji je samo... čekao. Do danas ne znamo na što.
Godina je 2008. Netko u Poljskoj, ili Rumunjskoj, ili tko zna gdje, sjedi za računalom i radi ono što svaki normalan poslovni čovjek radi kad mu posao raste: razmišlja o skalabilnosti — dosadnom pojmu koji jednostavno znači „kako da ovo što radim proširim bez da se sve raspadne”. Ne razmišlja o tome kako će razbiti tuđi hard disk i ostaviti poruku »pozdrav od hakera«, nego o tome kako će mu se infrastruktura nositi s dodatnih pola milijuna zaraženih strojeva do kraja tjedna. Vandalizam iz devedesetih, onaj s potpisom i egom, umro je negdje usput. Sad je to biznis. Ozbiljan, dosadan, tablicama i procesima organiziran biznis.
Zamisli, ako hoćeš, ransomware — zlonamjerni program koji ti zaključa sve datoteke na računalu, kao da ti netko preko noći promijeni sve brave u kući, pa ti onda ljubazno pošalje račun za novi ključ. E, sad zamisli da taj program, kad te već opljačka, otvori i chat prozorčić s podrškom. Ljubazno pitanje kako ti mogu pomoći, uputa kako platiti otkupninu u nekoliko jednostavnih koraka, možda i sitna isprika za neugodnost. Postoje ljudi koji rade smjene da ti to objasne. Doslovno smjene. Malware ima korisničku podršku prije nego što je pola svijeta uopće čulo za pojam malwarea. Otrov je postao usluga, a usluga ima kvalitetu isporuke.
A onda, u tu istu 2008., upada nešto što neće poslati niti jedan spam mail, neće zaključati niti jedan disk, neće tražiti niti jedan dolar otkupnine. Zove se Conficker, i to je crv — vrsta zlonamjernog programa koja se, za razliku od virusa, širi sama od sebe, kao prehlada koja se prenosi zrakom: ne treba joj da otvoriš zaraženu datoteku ili kliknete bilo što, dovoljno je da si spojen na istu mrežu. I u nekoliko tjedana Conficker napravi ono što nijedan crv prije njega nije — proguta milijune računala širom planeta, tiho, bez drame, kao da je isprika. Bolnice. Ministarstva. Vojske. Francuska mornarica u jednom trenutku prizemljuje avione jer sustav za planiranje leta ne može komunicirati sam sa sobom. Njemačka vojska ima problem. Britanske bolnice imaju problem. I onda — tišina.
Roj čeka — botnet, tako se zove vojska zaraženih računala kojom netko upravlja izdaljinski kao jednim tijelom, poput pastira koji jednim zviukom pokrene cijelo stado. Milijuni strojeva, spojenih na isti nevidljivi konac, čekaju naredbu koju je netko, negdje, trebao poslati. I ta naredba nikad ne stiže. Ne znamo zašto. Ne znamo tko je to napravio, ne znamo je li htio nešto ukrasti, nešto slomiti, ili je samo htio dokazati da može — a onda se, iz nekog razloga koji ostaje najveća nedoumica ove priče, jednostavno predomislio, ili prestrašio, ili nestao.
Datum: 23. listopada 2008. Microsoft objavljuje MS08-067, hitni izvanredni zakrpu za nešto što bi normalno čekalo do drugog utorka u mjesecu — Microsoft je, naime, imao fiksni raspored kad izbacuje sigurnosne zakrpe, taj takozvani „Patch Tuesday”, i kad nešto probije taj raspored i izađe izvanredno, to je znak da je stvar ozbiljna. A ova je bila toliko ozbiljna da je rupa mogla dopustiti nekome da preuzme tvoje računalo bez klika, bez lozinke, bez ičega. Samo da si spojen na mrežu. Popravak je izašao. Objavljen, dostupan, besplatan. I onda su svi... nastavili raditi ono što su radili prije. Ništa. To je ta rečenica koju treba upamtiti iz ovog poglavlja: obrana je stigla PRIJE napada. Nije bila zakašnjela, nije bila spora, nije bila ničija greška u smislu da nije postojala. Samo je ležala neinstalirana na milijunima strojeva, kao lijek koji nitko nije uzeo.
Sjeća li se tko poglavlja o Windows XP-u iz Knjige 4? Ista lekcija, samo pet godina kasnije i puno skuplja: firme, bolnice i ministarstva vole operativni sustav koji radi, a ne vole operativni sustav koji se restarta zbog ažuriranja usred smjene. Pa se ne ažurira. I onda dođe nešto poput Confickera i sjedne točno u tu rupu koju je Microsoft, iskreno, već pokrpao — samo što je poruka do administratora stigla otprilike brzinom glasnika na konju, a crv je putovao brzinom svjetlosti kroz optički kabel.
Dobro, kako crv zapravo radi, ogoljeno do kostura? Zamisli ga kao vrlo uporna nasrtljivca koji lupa po tuđim vratima — pokuca na MS08-067 rupu, i ako vrata nisu zakrpana, uđe, kopira sam sebe, i onda kreće dalje lupati na sljedeća vrata. Nije pametan u smislu da razmišlja. Jednostavno mehanički provjerava adresu po adresu, mrežu po mrežu, dok ne nađe sljedeći nezakrpani stroj. Ogromna količina pokušaja, non-stop, na razini cijelog interneta — statistika koju bi svaka ozbiljna botnet-kompanija (jer, spoiler, to postoji) potpisala rukom.
Ali najzanimljiviji dio nije kako Conficker ulazi — najzanimljiviji dio je kako se nakon toga javlja šefu. Zaraženi stroj mora nekako doći do naredbi: gdje skinuti novu verziju, koga napasti, što raditi. Naivan crv bi imao jednu fiksnu adresu za to — problem je što bi sigurnosne tvrtke tu adresu ugasile do popodneva, i cijeli botnet bi ostao nijem i glup. Conficker je pametniji: svaki dan generira nekoliko stotina novih, naizgled nasumičnih internetskih adresa, po tajnoj formuli koja ovisi o datumu. Svaki zaraženi stroj u istom trenutku računa istu listu, pa onda odlazi provjeriti je li se autor negdje na njoj javio s uputama. To se zove domain generation algoritam, i suštinski je isto kao da dogovoriš tajni sastanak s prijateljem tako da mu kažeš: „Nađemo se na jednom od nekoliko stotina mjesta koje ćemo obojica znati izračunati, ali koje ni ti ni ja ne kažemo unaprijed.” Obrana je onda morala igrati mačku i miša u velikom stilu — registrirati unaprijed te domene dnevno, svaki dan, da autor crva nikad ne dobije rendezvous samo za sebe. O tome više u sljedećoj sekciji, jer to je zapravo najluđi dio cijele priče.
Za slučaj da internetska veza jednog dana bude isključena ili nedostupna, Conficker je imao i analogni rezervni plan — USB štapiće. Zarazi jedan, i taj štapić putuje s tvog laptopa na kolegičin, s kolegičinog u printer-servis, iz printer-servisa u vojnu bazu koja iz sigurnosnih razloga nema internet, samo lokalnu mrežu i hrpu ljudi koji unose podatke sa štapića donesenih od kuće. Crv koji putuje pješice, u džepu, dok mu digitalna verzija juri mrežama — to je bila kombinacija koja je epidemiju pretvorila u pandemiju.

Razmjeri i mete
Dobro, sad brojke. I brojke su ovdje čudne, jer nitko ne zna točan broj — što je, ako se malo zamisliš, samo po sebi zastrašujuće. Kad ti nešto zarazi milijune računala, a ti kao industrija ne možeš reći je li to devet milijuna ili petnaest, to znači da je stvar prerasla svaku alatku koju imaš za brojanje. Procjene su se kretale od skromnih pet milijuna do ludih trideset. Realnija brojka koju danas navode analitičari negdje je između devet i petnaest milijuna zaraženih strojeva, u vrhuncu. Zapamti tu brojku, jer za trenutak ćemo je usporediti s nečim puno konkretnijim.
Konkretnije, evo primjera: francuska ratna mornarica je u siječnju 2009. moralo prizemljiti cijelu eskadrilu borbenih aviona Rafale. Ne zato što je netko hakirao raketni sustav u nekom holivudskom scenariju, nego zato što se sustav za preuzimanje planova leta, Intranet Marine, zarazio Confickerom, a piloti nisu mogli preuzeti dokumentaciju potrebnu za polijetanje. Najskuplji zrakoplov francuske mornarice, prikovan za zemlju, jer je netko unutar sustava zaboravio zakrpiti Windows. Ne treba ti neprijateljska raketa da onesposobiš ratnu mornaricu — treba ti crv koji je star tri mjeseca.
Britanija je u istom razdoblju gledala kako se Conficker uvlači u bolničke sustave — Sheffield je prijavio da mu je zaraženo gotovo osam stotina računala, uključujući uređaje u rendgen odjelima i operacijskim salama. Ministarstvo obrane u Londonu potvrdilo je zarazu na brodovima i podmornicama Kraljevske mornarice. U Njemačkoj je crv pogodio računala Bundeswehra, dovoljno da vojska javno prizna problem, što vojske uglavnom ne rade osim kad nemaju izbora. Nabroji to još jednom, polako: zrakoplovstvo, bolnice, podmornice, vojska. Nije riječ o slabim meksičkim internetskim kafeima s piratskim Windowsima — riječ je o infrastrukturi država koje se hvale svojom sigurnošću.
I tu vidiš uzorak koji će se ponoviti kroz cijelu ovu dekadu sjena, samo u većim i skupljim inačicama: kritična infrastruktura civilizacije — vojna, medicinska, industrijska — sjedi na istom operativnom sustavu na kojem tvoja teta igra pasijans. Ista rupa, nazvana MS08-067, koja je nizu prosječnih kućnih računala izazvala tek pop-up s čudnom porukom, francuskoj je mornarici zabranila letenje. To nije bug u zrakoplovu. To je bug u pretpostavci da se ozbiljni sustavi ponašaju ozbiljno.
Microsoft, gledajući kako mu se vlastita zakrpa iz listopada 2008. pretvara u globalni sigurnosni požar, povukao je potez koji dotad nije bio njegov stil — raspisao je nagradu od 250.000 dolara za informacije koje bi dovele do uhićenja autora Confickera. Simbolika je nezgrapna, ali stvarna: najveća softverska tvrtka na planetu, s vojskom pravnika i inženjera, u biti je objavila potjernicu poput šerifa na Divljem zapadu. Plakat s natpisom TRAŽI SE, samo digitalni. Novac nikad nije isplaćen. Nitko nije uhvaćen. A duh koji su tražili, kako ćemo vidjeti, nije čak ni pokušao pobjeći — samo je nastavio čekati.

Conficker Working Group: obrana se organizira
I onda se dogodilo nešto što se do tad u povijesti interneta nije dogodilo baš nikad: ljudi koji se inače natječu, mrze i tuže po sudovima, sjeli su za isti virtualni stol i rekli — dobro, ovo je veće od nas. Microsoft, Symantec, ICANN, Verisign, sveučilišni istraživači, timovi iz desetak zemalja koji obično razgovaraju samo preko odvjetnika — svi u istoj konferencijskoj pozivnici, s jednim zadatkom. Zvali su se Conficker Working Group, ime dosadno kao izvještaj o troškovima, a rade najnapetiju stvar koju je sigurnosna industrija ikad izvela: utrku u predviđanju budućnosti, jednom dnevno, do daljnjega.
Sjećaš se algoritma iz prošle sekcije? Crv svaki dan generira stotine imena domena, naizgled nasumičnih, i onda pokušava svima njima nešto reći — ako netko odgovori, to je novi šef, nova naredba. Obrana je shvatila da nema smisla čekati napad. Nasumično nije nasumično ako znaš formulu. Istraživači su rastavili algoritam, onaj isti koji je koristio crv, i počeli generirati identičan popis domena — samo dan unaprijed, ili više. Onda su otrčali do registra domena, tvrtke koja za tu zemlju ili tu internetsku ekstenziju (poput .hr ili .com) prodaje i vodi evidenciju o tome čije je koje ime na internetu, i kupili ih. Sve. Prije nego što bi ih crv i pipnuo.
Zvuči kao rutina na papiru, u praksi je bio pravi obrambeni šah odigran u realnom vremenu, na globalnoj razini, protiv protivnika koji ne spava i ne pregovara. Domene su bile na kineskom, japanskom, sve moguće ekstenzije — .cn, .ws, .info, gomila registara s kojima nitko iz sigurnosne branše prije nije morao razgovarati, a sad im je trebalo hitno objasniti zašto bi trebali blokirati stotine imena koja još nisu ni registrirana. Neki registri su na suradnju pristali za sat vremena. Neki su tražili tjedne papirologije dok je crv već preplavljivao njihove korisnike. A onda je autor Confickera, tko god bio, odgovorio kao svaki dobar protivnik u šahu — promijenio pravila igre.
Nova verzija Confickera, ona koja je stigla nekoliko mjeseci kasnije, nije više generirala nekoliko stotina domena dnevno — generirala je pedeset tisuća. Preko stotinu registara odjednom, svaki dan, zauvijek. Radna skupina koja je do tad ručno blokirala stotine imena tjedno sad se suočila s brojem koji se fizički nije mogao pratiti, ni uz svu dobru volju svih registara na planetu. To je bio trenutak kad je postalo jasno — ovo nije samo crv. Ovo je nešto što je netko dizajnirao da nadživi svaki pokušaj obrane koji trenutno postoji, unaprijed, kao da je autor gledao šahovsku partiju tri poteza ispred protivnika.
I ovdje je zanimljivo baš ono što se nije dogodilo. Roj od milijuna zaraženih računala, koordiniran, sposoban da jednom naredbom obori pola interneta ako mu se tako kaže — tu naredbu nikad nije dobio. Nitko se nije javio na te domene s uputom da krene rat, krade novac u velikom stilu ili radi nešto slično onome što su istovremeno radile druge, tiše operacije malwarea usmjerene na krađu novca, o kojima više u sljedećoj sekciji. Radna skupina je držala crva na uzici, autor je držao roj u tišini, i tako su ostali — dvije strane koje se nikad nisu izravno sukobile, samo su jedna drugu gledale preko domenskog registra.
Autor Confickera nikad nije uhvaćen. Ne postoji ime, ne postoji lice, ne postoji ni ozbiljna optužnica — samo teorije, i sve s dovoljno ograda da ih možeš citirati bez straha od tužbe. Neki misle da je riječ o ukrajinskoj ili ruskoj ekipi koja je testirala infrastrukturu za nešto veće, pa se predomislila. Neki misle da je projekt jednostavno izmakao kontroli samom autoru, koji nije imao plan za milijune zaraženih strojeva i sad se, negdje, jednako čudi kao i mi. A neki, malo cinični, misle da je cijela stvar bila samo dokaz izvedivosti — probna verzija napravljena da se pokaže kupcu kako nešto ovakvo može funkcionirati — za kupca koji se nikad nije pojavio: malware kao demo-verzija za tržište koje 2008. još nije bilo posve spremno platiti.
Ono što ostaje, bez obzira na sve nedovršene teorije, jest da je Conficker Working Group postavila obrazac koji se koristi do danas — kad se otkrije domain generation algoritam, prvi poziv ide registrima, ne policiji. Sudska istraga je spora, domene su brze. Rat se nije dobio hapšenjem. Dobio se — ili bolje rečeno, odgodio unedogled — kupovinom pravih imena prije nego što ih netko drugi kupi. Ironično najmirniji trik u povijesti sigurnosti: pobijediti crva tako da prije njega stigneš na šalter.

Ekonomija ispod: malware kao industrija
Dok se Conficker Working Group borila s domenama i algoritmima, u nekom drugom dijelu grada — metaforički, jer grad je bio cijeli internet — nešto se tiho slagalo u sasvim drugačiji oblik. Conficker je bio spektakl: milijuni zaraženih strojeva, mornarice koje prizemljuju avione, novinski naslovi. Prava revolucija te godine, međutim, nije imala naslove. Zvala se Zeus, i nije htjela pažnju — htjela je tvoj internetski bankovni račun, tiho, uredno, bez ijednog prizemljenog aviona.
Zeus je bio trojanac napravljen da krade bankovne podatke, i to prilično dobro — trojanac je, za razliku od crva, malware koji se ne širi sam, nego se maskira u naizgled bezopasan program ili datoteku i čeka da ga korisnik sam pokrene, otprilike kao poklon-bomba koju sam otvoriš jer na omotu piše „besplatni ekran čuvar”. Ali ono što ga čini važnijim od same krađe jest model po kojem se prodavao. Zeus se, naime, mogao kupiti. Ne ukrasti, ne skinuti s foruma za entuzijaste — kupiti, kao Photoshop, samo s manje pravnih posljedica i s korisničkom podrškom na ruskom. Autor je napisao alat, prodavao licence, povremeno izdavao zakrpe kad bi antivirusne tvrtke skužile trik, i — ovo je ključno — nikad osobno nije opljačkao ni jedan račun. To je radio kupac. Podjela rada bila je potpuna: jedan čovjek piše kod, drugi ga iznajmljuje kao infrastrukturu, treći ga koristi za pecanje lozinki, četvrti — najniža karika, najizloženija, najjeftinija — prima novac na svoj račun i prosljeđuje ga dalje. Zovu ih mule. Ne znaju gotovo ništa o tome kako softver radi. Znaju samo da im je netko rekao da će zaraditi trista eura ako prime uplatu i podignu je na bankomatu. Kad ih uhvate, uhvate mulu. Pisac koda je u tom trenutku u drugoj državi, spava.
Ta podjela rada nije bila slučajna — bila je kopija onoga što je legitimna softverska industrija radila desetljeće ranije: proizvod, distribucija, podrška, korisnička baza segmentirana po riziku i profitu. Samo je ovdje proizvod bio krađa, a korisnička baza kriminalci koji ne znaju napisati ni petlju u kodu, ali znaju platiti za rezultat. Spamerski karteli su radili identično — netko je gradio botnet za slanje spama, netko ga je iznajmljivao po satu, netko je pisao tekst maila o čudesnim tabletama, netko je vodio afilijacijski program koji je plaćao po broju klikova. Postojali su cjenici. Doslovno — forumi na kojima se prodavala pristupna prava zaraženim računalima po komadu, gdje je zaraženo računalo u Njemačkoj vrijedilo više od onog u nekoj zemlji s manje bankovnih računa po glavi stanovnika, jer — logično — vrijednost mete diktira cijenu robe, baš kao na burzi.
Usporedi to s vandalima iz trećeg poglavlja ove knjige — klincima koji su pisali viruse da vide hoće li im ime ostati zapisano u nekom antivirusnom biltenu, da dokažu prijatelju da mogu, da se osjete pametnima na petnaest minuta. Ta era je 2008. formalno mrtva. Malware više nije bio čin, bio je proizvod. Imao je opskrbni lanac, podjelu rada, tržišnu cijenu i — što je najbolniji detalj — korisničku podršku, jer ako si platio za pristup zaraženim računalima i ne radi, imaš pravo na povrat novca ili zamjensku robu. Nitko to nije zvao industrijom naglas. Ali brojevi, cjenici i hijerarhija govore sami za sebe: dok je Conficker Working Group brojao domene koje treba preuzeti sutra ujutro, negdje je netko treći kvartal zaredom bilježio rast prihoda.

Ostavština: normalizacija zaraze
Pa dobro, i onda? Roj je obuzdan, ne znamo tko ga je pustio, ne znamo zašto — kraj, idemo dalje. Samo što to nije kraj. To je trenutak kad se svijet, tiho i bez ceremonije, pomirio s time da će od sada uvijek postojati milijuni zaraženih računala negdje tamo, u pozadini, kao šum klima-uređaja u uredu. Čuješ ga toliko dugo da ga prestaneš čuti.
Conficker nikad nije potpuno nestao. Godinama poslije, sigurnosne firme su i dalje brojale zaražene strojeve po tvornicama, bolnicama, po zaboravljenim printerima u kutovima ureda koje nitko od 2009. nije restartao. Postao je pozadinska buka civilizacije — statistika koju spomeneš u godišnjem izvještaju i preskočiš na sljedeći slajd. I to je, ako malo razmisliš, puno jeziviji ishod od hipotetskog napada koji se nikad nije dogodio. Napad bi imao datum. Ovo je stanje.
Nešto se, doduše, promijenilo — sporo, kao sve što je bitno. Microsoft je iz cijele epizode izvukao lekciju koju je trebao izvući iz Slammera pet godina prije: čekanje da korisnik sam odluči hoće li instalirati zakrpu je poziv na katastrofu, jer korisnik neće. Auto-update, koji od tad gnjavi cijelu planetu s prozorčićem „restartaj sad ili za četiri sata”, direktan je unuk ove epidemije. Sljedeći put kad te Windows prekine u sred važnog posla da instalira ažuriranje koje ti nisi tražio — eto ti spomenika. Ne baš mramornog, ali funkcionalnog.
Ali stvarna posljedica 2008. nije bila tehnička, nego promjena publike koja gleda. Dok su antivirusne firme i registri domena satima raspravljali kako preuzeti sljedeću seriju algoritamski generiranih domena — onih nasumičnih adresa koje je Conficker svaki dan iznova smišljao da bi dobio nove naredbe — u sobama bez prozora, u nekoliko glavnih gradova, sjedili su ljudi koji nisu radili za antivirusnu firmu. Radili su za države. I gledali su isto što i mi: rekordan botnet, milijune strojeva pod jednom voljom, autora kojeg nikad nisu uhvatili — i pitali se ne „kako se ovo zaustavlja”, nego „tko bi mogao ovo naručiti, i za koju cijenu”.
Sljedeće godine, dok je Conficker Working Group brojila domene, u nekom drugom laboratoriju je već tinjala ideja koja neće biti kriminalna, ni amaterska, ni bez motiva — bit će vrlo precizno naručena, s ciljem koji nema veze s novcem. Zvat će se Stuxnet, i o njemu ćemo pričati kasnije, u poglavlju o oružjima koja nemaju detonator. Ali sjeme je posijano ovdje: kad je Conficker dokazao da roj od deset milijuna strojeva može čekati mjesecima za naredbu koja nikad ne stigne, netko je negdje zaključio da bi ta ista strpljivost mogla, uz malo drugačiju naredbu, biti izuzetno korisna vanjskoj politici.