Povijest i razvoj alata za prikrivanje prisutnosti napadača

Kada se govori o računalnoj sigurnosti, većina s tim pojmom povezuje računalne viruse, crve i trojanske konje (iako to nipošto nije jedini aspekt računalne sigurnosti). Radi jednostavnosti će računalni virusi, crvi i trojanski konji biti označeni samo kao računalni virusi iako to nije sasvim točna definicija i karakterizacija. Računalni virusi su računalni programi sa zloćudnim svojstvima koji mogu onesposobiti računalo korisnika ili mu ukrasti privatne podatke, a uz to još imaju sposobnost samostalnog širenja i zaraze drugih računala. Takvi zloćudni programi pojavili su se još u samim početcima računarstva i kao način subverzivnog djelovanja ostali su prisutni do danas. Mijenjala se jedino njihova funkcionalnost: od vrlo jednostavnih ranih računalnih virusa koji su uglavnom ispisivali različite poruke i nisu imali destruktivne sposobnosti, do današnjih vrlo sofisticiranih crva koji pretvaraju računala u zombije (engl. bots) koji čekaju naredbe glavnog računala za provedbu različitih zloćudnih aktivnosti, npr. distribuiranih napada uskraćivanjem računalnih resursa (engl. Distributed Denial of Service). Međutim, razvojem i širenjem Interneta, a osobito pojavom velikih virusnih epidemija (računalni crvi Blaster, Sasser i Netsky) podigla se opća svijest o važnosti računalne sigurnosti i zaštite osobnog računala. Gotovo svaki korisnik računala danas upotrebljava antivirusni program i sigurnosnu zaštitnu stijenu na svojem računalu. Velik je broj korisnika koji upotrebljavaju i dodatne specijalizirane programe za zaštitu od neželjene elektroničke pošte, za zaštitu od aplikacija za špijuniranje korisnika (engl. spyware) i takozvanih oglasnih aplikacija (engl. adware). Velika potražnja korisnika za što boljim sigurnosnim aplikacijama, ali i nastojanje velikih softverskih kompanija poput Microsofta da svoje proizvode učini sigurnijima i makne sa svojeg imena stigmu "nesigurne" kompanije uzrokovali su opće poboljšanje sigurnosti aplikacija i operacijskih sustava i postavili nove temelje za razvoj budućih (sigurnijih) aplikacija. Današnji sofisticirani antivirusni programi i sigurnosne zaštitne stijene obiluju zaštitnim funkcijama i iznimno su uspješni u borbi s "tradicionalnim" zloćudnim programima. Sve ove činjenice dovele su do znatnog opadanja broja novih virusa koje stvaraju autori zloćudnih programa (postoje brojni stariji računalni virusi i crvi koji su još uvijek aktivni i prenose "zarazu" na računala diljem svijeta).

No autori zloćudnog softvera uvijek su pratili razvoj sigurnosnih aplikacija i prilagođavali svoje programe kako ih antivirusni i drugi programi ne bi mogli jednostavno otkriti. Razvojem i povećanjem kompleksnosti sigurnosnih aplikacija, autori zloćudnog softvera morali su pronaći nove i složenije načine izbjegavanja detekcije. Također, jednom zaraženi sustav nastoji se što duže zadržati u napadačevom "vlasništvu" bez znanja korisnika jer ponovni upad možda neće biti moguće provesti. Iako se broj novih virusa smanjuje, oni koji se pojavljuju znatno su opasniji i sofisticiraniji od svojih prethodnika. Autori novih zloćudnih programa moraju imati izvanredna znanja o unutrašnjosti i svim detaljima operacijskog sustava kojeg žele "napasti" jer je trend novih zloćudnih programa djelovanje na što nižoj razini, tj. na razini jezgre operacijskog sustava (engl. kernel). Izvještaj tvrtke McAfee iz 2006. godine [1McAfee, Inc, Rootkits, Part 1 of 3: The Growing Threat, White Paper, travanj 2006.] govore kako se broj zloćudnih programa koji koriste neku naprednu tehniku skrivanja ili rade u jezgrinom načinu rada do 2006. godine povećao čak 9 puta, a samo u prvom dijelu 2006. godine bio je malo manji od cijele 2005. i 2004. godine zajedno.

Upravo ovdje na scenu stupaju tzv. rootkiti. U hrvatskom jeziku ne postoji doslovan prijevod ove kovanice, niti bi on imao smisla. U engleskom jeziku pojam root označava korisnika na UNIX/LINUX operacijskom sustavu koji posjeduje administratorske privilegije. Rootkit bi dakle bio alat (engl. kit) ili skup alata koji napadaču omogućava zadržavanje administratorskih dozvola jednom kada napadač dobije pristup sustavu. Najčešće se rootkite prevodi kao alate za prikrivanje prisutnosti napadača i iako taj naziv ne govori o svim mogućnostima koje rootkiti imaju, bit će korišten u daljnjem tekstu umjesto engleskog termina rootkit.

Dio definicije alata za prikrivanje prisutnosti napadača sadržan je u samom imenu, no općenito ih možemo definirati kao program ili skup programa i programskog koda koji omogućava napadaču da trajno ili duže vrijeme neopaženo održi svoju prisutnost na zaraženom računalu. Ključna riječ u ovoj definiciji je neopazivost samog alata. Sposobnost skrivanja zloćudnog programa od korisnika nije nova tehnika: brojni virusi skrivaju svoju prisutnost uzimajući imena izvršnih datoteka i procesa u memoriji koja su slična sistemskim imenima (npr. Isass.exe i lsass.exe, gdje prvi proces predstavlja Optix.Pro virus, dok drugi proces – Local Security Authority Subsystem Service predstavlja dio Windows operativnog sustava). Međutim, ovakve promjene specijalizirani alati iznimno lako otkrivaju i takvi virusi ne predstavljaju nikakav problem za današnje antivirusne alate. Neki virusi skrivaju u potpunosti proces u kojem se izvršavaju od alata kao što je Windows Task Manager. Takve metode su nešto složenije, no i dalje je sam proces odnosno kod virusa vidljiv u memoriji, odnosno na disku korištenjem današnjih antivirusa. Alati za prikrivanje prisutnosti napadača uglavnom rade na razini jezgre operacijskog sustava i u mogućnosti su gotovo u potpunosti sakriti svoju prisutnost od većine današnjih sigurnosnih aplikacija. Sposobni su prikriti direktorije, datoteke, procese, dretve unutar procesa, dijelove memorije, ključeve u sustavskom registru (engl. system registry), mrežni promet (IP adrese i pristupe) i brojne druge objekte operacijskog sustava. Uobičajene antivirusne tehnike najčešće nisu uspješne protiv takvih alata i samim time su alati za prikrivanje prisutnosti napadača vrlo opasni, ali i zanimljivi programi. Tako sakriveni, alati za prikrivanje prisutnosti napadača osiguravaju ponovno prijavljivanje napadača na sustav (odnosno njegovu interakciju sa zaraženim sustavom u bilo kojem obliku). Uz svoju glavnu funkciju mogu vršiti razne druge (najčešće zloćudne) aktivnosti: prikupljanje lozinki i brojeva kreditnih kartica, prisluškivanje mrežnog prometa, korištenje računala za DDoS napade i brojne druge aktivnosti. Osim djelovanja na jezgrinoj razini, alati mogu djelovati i u korisničkoj razini i iako se takvi alati lakše otkrivaju i odstranjuju sa sustava, nisu nimalo bezazleni o čemu će više riječi biti u nastavku.

Povijest razvoja alata za prikrivanje prisutnosti napadača najbolje se može razmotriti na vremenskoj liniji prikazanoj na slici desno.Vremenska linija

Teško je sa sigurnošću odrediti početak pojave alata za prikrivanje prisutnosti napadača. Oduvijek su autori zloćudnih programa i napadači na računalne sustave nastojali na neki način sakriti svoju prisutnost na sustavu (postoje naravno i tzv. "glasni" napadi gdje korisnik želi da se njegova prisutnost otkrije ili zbog same prirode napada ne može sakriti svoju prisutnost – primjeri su DDoS napadi i vandaliziranje web stranica). Prvim alatima za prikrivanje prisutnosti napadača mogu se smatrati čistači log datoteka za operacijski sustav Linux. Brisanjem log datoteka efektivno se briše svaka aktivnost napadača na sustavu.

Prvim pravim alatom za prikrivanje prisutnosti napadača u današnjem smislu riječi može se smatrati onaj namijenjen SunOS v4 operacijskom sustavu jer je imao mogućnost prikrivanja svoje prisutnosti zamjenjujući programe za izlistavanje direktorija, datoteka i procesa na sustavu, zajedno s brisanjem log datoteka. Tijekom godina su alati za prikrivanje prisutnosti napadača migrirali na druge operacijske sustave, najprije Linux (gdje su djelovali na razini jezgre, kao većina današnjih), a potom i Windows operacijski sustav. Razvijen je čitav niz alata za prikrivanje prisutnosti napadača namijenjenih operacijskom sustavu Linux s različitom funkcionalnosti i različitom razinom djelovanja. Gotovo svi djeluju na razini jezgre, no neki djeluju kao jezgrini moduli – pandan upravljačkim programima na Windows operacijskom sustavu – a neki naprednim tehnikama pristupaju jezgrinom memorijskom prostoru [2S. Cesare, Runtime kernel kmem patching, studeni 1998. ]. Na Windows operacijskom sustavu takvi su alati najprije djelovali na korisničkoj razini, poput poznatog Back Orifice alata. Bez obzira na to što su djelovali na korisničkoj razini, takvi su alati bili vrlo moćni zbog inherentne nesigurnosti prvih inačica Windows operacijskog sustava (verzije Windows 95, 98 i ME). Pojavom Windowsa NT i kasnije Windowsa 2000 i XP takvi alati su izgubili na svojoj "snazi". Ipak, alati koji djeluju u korisničkom načinu rada najčešće zahtjevaju manje privilegije od onih koji djeluju u jezgrinom načinu rada i vrlo su opasni kao što će ovaj rad demonstrirati. Nakon pojave Windows NT porodice, vrlo brzo se pojavio i prvi alat za Windowse koji radi u jezgrenom načinu rada, NT Rootkit.

Na vremenskoj liniji vidljivi su i današnji trendovi: sve zanimljiviji su alati za prikrivanje prisutnosti napadača temeljeni na virtualizaciji. Pretpostavlja se da će se u budućnosti pojavljivati sve više alata temeljenih na virtualizaciji, kao i alata koji se jednim svojim dijelom smještaju u prvi sektor tvrdog diska, takozvanih MBR alata za prikrivanje prisutnosti napadača.

Posebno je zanimljiv slučaj tvrtke Sony koja je 2005. godine na nosače zvuka i videa izvođača koji izdaju pod njihovom etiketom počela stavljati zaštitu od neovlaštenog kopiranja [3M. Russinovich, Sony, Rootkits and Digital Rights Management Gone Too Far, listopad 2005.]. Zaštita je funkcionirala tako da se bez znanja korisnika na njegovo računalo kopira upravljački program koji mijenja adrese nekih sistemskih poziva u jezgri operativnog sustava i nadgleda eventualne pokušaje kopiranja sadržaja CD-a. Sony je sudskom nagodbom bio prisiljen povući inkriminirajuću tehnologiju, a naknadno i sve nosače zvuka i videa koji su tu tehnologiju koristili.

Vrlo je zanimljiv i slučaj Rustock.C alata koji je otkriven u ljeto 2007. godine i smatra se najduže neotkrivenim zloćudnim programom u Windows operacijskom sustavu – ukupno "vrijeme života" tijekom kojega nije bio otkriven je jedna godina i šest mjeseci. Detaljna analiza može se pronaći na stranici [4Rootkit.com, Rustock.C, svibanj 2008.].

Natrag na vrh