Klasifikacija rootkita

Točna klasifikacija alata za prikrivanje prisutnosti napadača zapravo i ne postoji, već se razlikuje od izvora do izvora. Jednu moguću klasifikaciju prema okruženju u kojem alati djeluju i vremenu u kojem djeluju predložio je kolega Nikola Ivković [11N. Ivković, Rootkit - alat za prikrivanje napadača u računalnom sustavu, Seminar, 2007.] te je na temelju te klasifikacije načinjena nešto opširnija prikazana na slici.

Iz dijagrama je vidljivo da alati prema okruženju i vremenu tijekom kojeg su aktivni mogu biti podijeljeni na postojane i nepostojane.

Klasifikacija rootkita

Postojani su oni koji se nakon ponovnog pokretanja sustava (bilo resetiranja, bilo ponovnog uključivanja) pokreću zajedno sa sustavom i nastavljaju djelovati kao i prije pokretanja sustava. Budući da na neki način moraju osigurati svoje ponovno pokretanje, mehanizmi koji im to omogućavaju mogu se nadzirati i na taj način je moguće detektirati ovakvu vrstu alata za prikrivanje prisutnosti napadača u nekim slučajevima.



Nepostojani alati za prikrivanje prisutnosti napadača nakon gašenja sustava i njegovog ponovnog pokretanja ne mogu se ponovno pokrenuti, tj. gašenjem sustava prestaje njihov životni vijek (iako sam kôd, odnosno dijelovi alata mogu ostati prisutni na sustavu u neaktivnom stanju). Takvi alati mnogo se teže otkrivaju jer koriste vrlo visoku razinu nevidljivosti u obavljanju svojih djelatnosti. Također, naknadna analiza sustava nemoguća je u određenim slučajevima jer se memorijski nepostojani alati u potpunosti uklanjaju ponovnim pokretanjem sustava i time nestaju svi tragovi da je alat ikada bio prisutan na sustavu (naravno, ukoliko autor samog alata nije bio nepažljiv i napravio nenamjernu pogrešku koja bi otkrila prisutnost alata na sustavu). No zbog svoje nepostojanosti i potencijalno kratkog životnog vijeka (korisnička računala se u pravilu dosta često isključuju i ponovno pokreću, no poslužitelji ostaju aktivni mjesecima) njihova "snaga" ponekad može biti manja od učinkovitosti postojanih alata za prikrivanje prisutnosti napadača.

I postojani i nepostojani alati za prikrivanje prisutnosti napadača mogu biti vezani za memoriju ili mogu biti vezani za sklopovlje računala. Pod nazivom "memorija" misli se na radnu memoriju, tvrdi disk i u rjeđim slučajevima USB memorije i optičke diskove (koji su zbog svoje prenosivosti potencijalno zanimljivi za prenošenje zaraze, ali nepraktični kao okruženje u kojem se alat nastanio i odakle se pokreće).

Većina današnjih alata za prikrivanje prisutnosti napadača vezana je za memoriju, bili oni postojani ili nepostojani i upravo će tim alatima biti posvećen najveći dio ovog rada te će se i praktični dio rada odnositi na takve alate.

Ipak, alati za prikrivanje prisutnosti napadača vezani za sklopovlje nisu ništa manje zanimljivi i ništa manje opasni. Štoviše, njihova vezanost za sklopovlje i neovisnost o operacijskom sustavu čini ih vrlo nevidljivima i opasnima. Primjer postojanog alata za prikrivanje prisutnosti napadača koji je vezan za sklopovlje je alat koji se ugrađuje u memoriju PCI uređaja [12J. Heasman, Implementing and Detecting a PCI Rootkit, White Paper, 2006.] ili alat koji je vezan za ACPI [13J. Heasman, Implementing and Detecting an ACPI Rootkit, Black Hat Federal, 2006.], dio BIOS-a koji je zadužen za kontrolu napajanja i snage i koji koristi vlastiti programski jezik AML (engl. ACPI Machine Language).

Također su vrlo zanimljivi i alati za prikrivanje prisutnosti napadača koji se temelje na virtualizaciji. Primjer memorijski postojanog alata temeljenog na virtualizaciji je SubVirt [14University of Michigan, Microsoft Inc, Subvirt: Implementing malware with virtual machines, 2006.]. SubVirt se ugrađuje u ciljno računalo ispod operacijskog sustava samog ciljnog računala i djeluje kao nadglednik virtualnog stroja (engl. VMMVirtual Machine Monitor) pri čemu je virtualni stroj upravo operacijski sustav ciljnog računala. Budući da je veza operacijski sustav – hardver "prekinuta" samim alatom, SubVirt ima mogućnost mijenjati i utjecati na cjelokupni operacijski sustav ciljnog računala koji uopće nije svjestan postojanja dodatno umetnutog sloja.

Virtualizacijski alati za prikrivanje prisutnosti napadača mogu biti vezani i za sklopovlje. Primjer takvih alata su BluePill [15J. Rutkowska, Introducing Blue Pill, lipanj 2006.] i Vitriol [16D. A. D. Zovi, Hardware Virtualization Rootkits, Black Hat USA 2006.]. Ti su alati vezani za sklopovlje u smislu da ovise o virtualizacijskim načinima rada i instrukcijama samih procesora, a noviji procesori proizvođača Intel i AMD nude takve instrukcije i načine rada (AMD nudi AMD-V – engl. AMD-Virtualization, dok Intel nudi VT-x – engl. Virtualization Technology). BluePill i Vitriol alati (za razliku od SubVirt-a) imaju vrlo malen nadglednik virtualnog stroja (on se kod ovakvih alata naziva hipervizor), a način djelovanja im je sličan kao i kod SubVirt-a, samo što nisu postojani, već nakon ponovnog pokretanja sustava postaju neaktivni.

Ova klasifikacija alata za prikrivanje prisutnosti napadača nije jedina, no dobro obuhvaća gotovo sve danas prisutne alate.

U daljnjem tekstu najviše će riječi biti o memorijski postojanim alatima. Memorijski postojani alati (pritom nisu uzeti u obzir alati temeljeni na virtualizaciji jer se oni smatraju "nestandardnima") mogu se podijeliti na one koji djeluju u korisničkom načinu rada i one koji djeluju u jezgrinom načinu rada.

Kao što se može i pretpostaviti, na korisničkoj razini je efikasnost alata manja jer se ne može kontrolirati svaki aspekt sustava, na raspolaganju je ograničeni broj resursa, jezgrini objekti (jezgrini procesi, sustavske dretve, imenovani cjevovodi, uređaji i dr.) uglavnom nisu dostupni alatu i alat je znatno lakše otkriti i (što je još važnije) odstraniti sa sustava. Ipak, ovakve je alate mnogo lakše napraviti nego alate koji rade u jezgrinom načinu rada pa je to osnovni razlog zašto ovakvi alati nisu tako rijetki. Također, kritična pogreška koju je nenamjerno napravio autor alata neće dovesti do nestabilnosti kompletnog sustava, (ne)popularnog Blue Screen-a i time vrlo vjerojatno otkriti samu prisutnost alata na sustavu, već će samo dovesti do rušenja aplikacije, što može proći nezapaženo. Međutim, iako je u teoriji ovakve alate jednostavnije otkriti, kao što će biti opisano u radu, današnje sigurnosne aplikacije začudo nisu savršeno uspješne u otkrivanju takvih alata. Upravo je to bio jedan od razloga za nastanak rada s ovom temom jer se mnogo važnosti poklanja alatima koji djeluju u jezgrinom načinu rada (ti alati doista jesu mnogo moćniji i samim time "zanimljviji" i napadačima i autorima sigurnosnog softvera) i zanemaruje se prisutnost zloćudnog kôda u korisničkoj razini.

U jezgrinom načinu rada napadačevom alatu su na raspolaganju apsolutno svi prije navedeni objekti sustava i napadač ima potpunu kontrolu nad operacijskim sustavom. Antivirusni i drugi alati za otkrivanje zloćudnih programa moraju raditi u jezgrinom načinu rada kako bi mogli otkriti ovakve alate. No i tada valja uočiti da su alati samo u ravnopravnom položaju i najčešće o umješnosti napadača, odnosno autora antivirusnog alata i snazi skrivanja odnosno detekcije ovisi da li će zloćudni alat biti otkriven ili ne. Ravnopravni položaj ne znači automatsku detekciju, već više sposobnost detekcije, ako zloćudni program nije previše napredan.

Budući da se u radu obrađuje Intelova x86 arhitektura, na slici je prikazana klasifikacija i granice razina sigurnosti i privilegija pod kojima se neki kôd izvodi.

Razine privilegija x86 arhitekture

Pojedine razine privilegija (na slici prikazane kao koncentrične kugle, a u dvodimenzionalnom prostoru bi se radilo o koncentričnim kružnicama) nazivaju se prsteni (engl. rings). Prsten jezgre predstavlja najveće moguće privilegije i naziva se prsten 0 (engl. ring 0, zero ring). Nakon njega dolaze prsteni 1 i 2 koji su rezervirani za upravljačke programe (npr. programe za grafičku karticu, mrežnu karticu) i na kraju dolazi najmanje privilegirani prsten, onaj u kojem se nalaze sve korisničke aplikacije i koji nosi oznaku prsten 3.

Treba napomenuti da je na slici prikazana originalna Intelova specifikacija, dok se konkretne realizacije u pojedinim operacijskim sustavima razlikuju. U svim verzijama Windows operacijskog sustava koriste se samo prsten 0 i prsten 3, pri čemu se u prstenu 0 nalazi jezgra sustava i svi upravljački programi, a u prstenu 3 korisničke aplikacije.

U nastavku će biti obrađeni alati za prikrivanje prisutnosti napadača u korisničkom načinu rada. Iako oni nisu najrašireniji i najsofisticiraniji zloćudni alati ove vrste, njihova relativna jednostavnost, ali i opasnost koju predstavljaju dovoljna su motivacija za njihovo proučavanje. Ideja je da se alati opišu onim redosljedom i s onim funkcionalnostima do kojih bi (postupno razvijajući svoju ideju) mogao doći napadač. Na taj način lakše će biti odrediti ključne elemente operacijskog sustava koje treba zaštititi od djelovanja ovakvih alata.

Natrag na vrh