Rootkiti predstavljaju veliku opasnost u području računalne sigurnosti zbog svoje sposobnosti dugotrajne i prikrivene prisutnosti u sustavima. Rootkit je tempirana bomba zbog svoje uloge u otvarajući vrata ostalim vrstama napadima dok sama ne sudjeluje u njihovom izvršavanju, ostavljajući na upit jeli uopće nanijela štetu ili čeka okidač. U kontekstu računalne forenzike, stvaraju poseban izazov jer aktivno ometaju prikupljanju i analizi digitalnih dokaza, čime se ugrožava integritet forenzičkog postupka. Ovaj rad pruža pregled temeljnih koncepata vezanih uz rootkite, uključujući njihovu definiciju, svrhu i klasifikaciju, te način kako se može otkriti, ukloniti i obraniti od njih. Na kraju su prikazani primjeri stvarnih napada koji ilustriraju praktičnu primjenu rootkita u suvremenim kibernetičkim prijetnjama. Cilj rada je pružiti razumijevanje problema rootkita i njihove forenzičke analize te naglasiti važnost preventivnih mjera i pravilnog odgovora na incidente.
Razvojem zlonamjernog softvera, napadači su sve više usmjereni na tehnike koje omogućuju dugotrajnu i neprimjetnu prisutnost unutar kompromitiranih sustava. Jedna od takvih tehnika jest uporaba rootkita – specijaliziranog softvera dizajniranog za prikrivanje aktivnosti napadača i zaobilaženje sigurnosnih mehanizama operativnog sustava. U kontekstu računalne forenzike, rootkiti su posebno problematični jer aktivno ometaju procese prikupljanja dokaza, skrivajući procese, datoteke, mrežne veze i zapise u memoriji. Time se narušava integritet forenzičke analize i otežava rekonstrukcija napada, identifikacija napadača te utvrđivanje opsega kompromitacije. Cilj ove stranice jest pružiti pregled osnovnih koncepata vezanih uz rootkite, njihovu klasifikaciju te metode njihove detekcije i uklanjanje.
Rootkit je prikrivena vrsta softvera, najčešće zlonamjerna, osmišljena za skrivanje prisutnosti sebe ili nekog drugog softvera i održavanje privilegiranog pristupa sustavu. Pojam rootkit složenica je od “root” tradicionalni naziv privilegiranog računa na Unix operativnim sustavima i riječi “kit” koja se odnosi na softverske komponente koje implantiraju alat. Rootkit nije samostalni vektor prijetnje, jer se ne koristi za pokretanje kibernetičkog napada, naprotiv to je vrsta nakon napadnog malvera osmišljenog za dugoročni, prikriveni pristup kompromitiranom sustavu. Napadači korist rootkit za podršku postojanosti, eskalaciji privilegija i nadzoru. Rootkiti manipuliraju ključnim komponentama operativnog sustava poput modula jezgre, bootloadera, ili firmvera kako bi sakrili datoteke, procese i mrežne veze od tradicionalnih alata za detekciju. Rootkiti nisu samo korišteni za zlonamjerne uporabe, također ih koriste firme i provoditelji zakona za nadzor zaposlenika što im omogućuje istraživanje uređaja i zaustavljanje mogućih kibernetičkih napada.
Rootkiti se klasificiraju prema komponentama sustava koje zaražavaju, od onih na najnižoj razini firmvera (najvišim privilegijama), do najmanje privilegiranih korisnički orijentiranih varijanti koje rade u prstenu 3 (Protection rings). Hibridne kombinacije mogu se pojaviti, na primjer, u korisničkom načinu rada i načinu rada jezgre. Mjesto na kojem rootkit napada obično određuje koliki pristup hakeri imaju, koliko štete mogu nanijeti zaraženim računalnim sustavima i koliko je lako otkriti i zaustaviti napade.
Ovaj tip rootkita radi s najvišim privilegijama operativnog sustava (Prsten 0) dodavanjem koda ili zamjenom dijelova jezgre. Većina operativnih sustava podržava upravljačke programe uređaja u jezgrenom načinu rada (device driver) koji se izvršavaju s istim privilegijama kao sami operativni sustavi, zbog toga većina rootkita razvijeni su kao upravljački programi uređaja (device driver). Ova vrsta rootkita ima neograničen sigurnosni pristup, ali ju je teže napisati. Složenost čini greške čestima, a svaka greška na razini jezgre može ozbiljno utjecati na stabilnost sustava, što olakšava otkrivanje. Ovaj tip rootkita može biti posebno težak za otkriti i ukloniti jer rade na istoj sigurnosnoj razini kao i operativni sustav, te su stoga u stanju presresti ili potkopati najpouzdanije operacije sustava. Bilo koji softver, poput antivirusni softver, koje se pokreće na kompromitiranom sustavu jednako je ranjiv, stoga niti jednom dijelu sustava se može vjerovati. Uobičajeno je da rootkit stvara skriveni, šifrirani datotečni sustav u kojem može sakriti drugi zlonamjerni softver ili originalne kopije datoteka koje je zarazio. Operativni sustavi se razvijaju kako bi se suprotstavili prijetnji rootkita u jezgrenom načinu rada. Na primjer, 64-bitna izdanja Microsoft Windowsa sada implementiraju obvezno potpisivanje svih upravljačkih programa na razini jezgre kako bi otežali izvršavanje nepouzdanog koda s najvišim privilegijama u sustavu.
Ovaj tip rootkita izvodi se u 3. prstenu sigurnosti s drugim korisničkim aplikacijama. Imaju niz mogućih vektora instalacije za presretanje i mijenjanje standardnog ponašanja sučelja za programiranje aplikacija (API). Neki ubrizgavaju dinamički povezane biblioteke (DLL) u druge procese i stoga se mogu izvršavati unutar bilo kojeg ciljnog procesa kako bi ga lažirali, drugi s dovoljnim privilegijama jednostavno prepisuju memoriju ciljne aplikacije. Neke od metoda ubrizgavanja su:
Bootkit je varijanta rootkita u jezgri operativnog sustava koja zarazi Master Boot Record(MBR), Volume Boot Record(VBR) ili boot sektor, što znači da se ne pojavljuje u korisnikovom datotečnom sustavu, to ga čini veoma teškim za detektirati s pomoću antivirusnih i antirootkit softverom. Ima mogućnost izmjene Boot zapisa što može uzrokovati štete pri uklanjanju. Ova vrsta rootkita može se koristiti za napad na sustave s punim šifriranjem cijelog diska. Primjer takvog napada je "evil maid attack" u zamišljenom scenariju čistačica instalira zlonamjerni rootkit preko USB-a u hotelskoj sobi gdje je žrtva ostavila svoju opremu.
Ovi rootkiti su u akademskim krugovima kao dokaz koncepta. Iskorištavanjem značajki virtualizacije hardvera kao što su Intel VT ili AMD-V, ova vrsta rootkita radi u -1 prstenu i izvršava ciljni operativni sustav kao virtualni stroj, omogućujući rootkitu presretanje hardverskih poziva koje upućuje izvorni operativni sustav. Za razliku od normalnih hipervizora, ne moraju se učitati prije operativnog sustava, već se mogu učitati u operativni sustav prije nego što ga promoviraju u virtualni stroj. Hipervizorski rootkit ne mora vršiti nikakve izmjene u jezgri kako bi ga subvertirao, to ne znači da ga gostujući operativni sustav ne može otkriti. Na primjer, vremenske razlike mogu se otkriti u procesorskim instrukcijama. Godine 2009. istraživači iz Microsofta i Državnog sveučilišta Sjeverne Karoline predstavili su anti-rootkit na hipervizorskoj razini pod nazivom Hooksafe, koji pruža generičku zaštitu od rootkita u jezgrenom načinu rada.
Firmver rootkit koristi firmver uređaja za stvaranje trajne slike softvera u hardveru kao što su router, mrežna kartica, tvrdi disk, BIOS. Velika opasnost ovog tipa rootkita jest detekcija, jer se integritet koda obično ne provjerava u firmveru, i brisanje. U ožujku 2009. istraživači Alfredo Ortega i Anibal Sacco objavili su detalje o rootkitu za windows na razini BIOS-a koji je uspio preživjeti zamjenu diska i ponovnu instalaciju operativnog sustava. Ova vrsta rootkita ne koristi se samo za zlonamjerne svrhe, već i za protuprovalnu zaštitu. Sandy Bridge i budući chipseti imaju hardverski rootkit ugrađen koji može pomoći u oporavku ukradenih računala, uklanjanje podatka i njihovom onesposobljavanju. sličnu ulogu ima i “Absolute Persistence Technology” koji je ugrađen u većina uređaja, kao što su Lenovo, Dell, HP, koja također služi za pratnju, oporavak, zaštitu uređaja čak i kada operativni sustav bude nanovo instaliran jer se samoobnavlja iz BIOS-a. Iako su ove tehnologije izmišljene u dobre svrhe, još uvijek predstavljaju problem sigurnosti i privatnosti jer omogućuje upravi ili nekoj trećoj strani koja iskorištava ranjivost neotkriveno špijuniranje i preusmjeravanje korisnika.
Memorijski rootkit skriva se u memoriji računala (RAM). Ovi rootkiti imaju kratak vijek trajanja obično nestaju kada se sustav ponovno pokrene, ali ponekad mogu zahtijevati dodatni rad za uklanjanje. Smanjuju performanse RAM-a računala trošeći resurse svojim zlonamjernim procesima i mogu obavljati izuzetno štetne aktivnosti u pozadini računala.
Otkrivanje rootkita predstavlja jedan od zahtjevnijih zadataka jer su rootkiti po svojoj funkcionalnosti antiforenzički. Za razliku od klasičnog zlonamjernog softvera, rootkiti aktivno mijenjaju ponašanje operativnog sustava kako bi lažirali rezultate sigurnosnih i forenzičkih alata. Jedna od prepreka u analizi rootkita je ograničenja forenzičaru u mogućim postupcima. Rootkit ne može aktivno kriti svoju prisutnost ako nije pokrenut, no nismo uvijek u stanju da sustav smijemo gasiti, jer može predstavljati veliki trošak klijentu da ga drži ugašenim. Forenzika nije brz proces treba kvalitetno i učinkovito istražiti sve dijelove kako bi donijeli odliku, što pridonosi vremenu kojim bi sustav trebao biti ugašen ako odlučimo tim postupkom. Unatoč napretku forenzičkih alata i tehnika, ne postoji univerzalna metoda koja može pouzdano otkriti sve vrste rootkita. Napredni firmver i hardverski rootkiti mogu u potpunosti zaobići operativni sustav i ostati nevidljivi čak i tijekom offline analize. Zbog toga se u praksi preporučuje kombinacija više metoda detekcije te pretpostavka kompromitacije u slučajevima visoke razine rizika. U forenzičkom kontekstu, cilj detekcije rootkita nije samo njihovo pronalaženje, već i očuvanje integriteta dokaza, razumijevanje mehanizama skrivanja te procjena opsega kompromitacije sustava. Metode detekcije rootkita mogu se podijeliti u nekoliko osnovnih kategorija: detekcija temeljena na potpisima, detekcija temeljena na integritetu, usporedna (cross-view) analiza, analiza ponašanja te analiza izvan zaraženog sustava (offline i memory forenzika).
Detekcija temeljena na potpisima koristi unaprijed definirane obrasce poznatih rootkita, slično kao i klasični antivirusni alati. Ovi potpisi mogu se temeljiti na hash vrijednostima datoteka, specifičnim sekvencama instrukcija ili poznatim strukturama u memoriji. Iako je ova metoda učinkovita protiv poznatih rootkita, njezina glavna slabost je nemogućnost otkrivanja novih, prilagođenih ili modificiranih varijanti. Napadači često koriste polimorfizam i enkripciju kako bi izbjegli detekciju potpisima, čime se ova metoda čini nedovoljnom kao jedini mehanizam obrane.
Metode temeljene na integritetu oslanjaju se na usporedbu trenutačnog stanja sustava s poznatim ispravnim (baseline) stanjem. To uključuje provjeru kriptografskih hash vrijednosti kritičnih sistemskih datoteka, upravljačkih programa i konfiguracijskih zapisa. Ako rootkit izmijeni jezgru operativnog sustava, sistemske biblioteke ili upravljačke programe, takve promjene mogu se otkriti odstupanjem od referentnih vrijednosti. Međutim, ova metoda pretpostavlja da je referentno stanje sustava stvoreno prije kompromitacije i da se provjera provodi iz pouzdanog okruženja. Rootkiti na razini jezgre mogu presresti sistemske pozive i vratiti lažne podatke alatima za provjeru integriteta, čime se dodatno otežava njihova detekcija. Imajte na umu da se registar često mijenja, a privremene datoteke se redovito stvaraju i brišu u odgovarajućim mapama. Autori rootkita su toga svjesni i mogu pokušati oponašati ove normalne obrasce skrivanjem rootkita u /tmp ili .tmp datoteci. Potražite promjene u svim kritičnim direktorijima operativnog sustava i usporedite ih sa zapisnicima kako biste utvrdili jesu li to bile ovlaštene promjene. Posebnu pozornost treba posvetiti i unosima u registar koji bi se mogli koristiti za učitavanje rootkita u memoriju, neki primjeri bi bili:
Cross-view analiza jedna je od najčešće korištenih tehnika za otkrivanje rootkita. Temelji se na usporedbi informacija dobivenih iz različitih izvora ili različitih razina sustava. Na primjer, popis aktivnih procesa dobiven putem standardnih API poziva operativnog sustava može se usporediti s izravnim očitavanjem memorije ili tablica jezgre. Ako se uoče razlike (npr. proces postoji u memoriji, ali nije vidljiv standardnim alatima), to može upućivati na prisutnost rootkita. Ova metoda je posebno učinkovita protiv korisničkih i rootkita na razini jezgre koji skrivaju procese, datoteke ili mrežne veze, ali postaje manje pouzdana u slučaju naprednih rootkita koji uspješno manipuliraju svim razinama prikaza podataka.
Analiza ponašanja usmjerena je na prepoznavanje neuobičajenih ili sumnjivih aktivnosti sustava koje mogu ukazivati na prisutnost rootkita. To uključuje neočekivane promjene u ponašanju sistemskih poziva, neobjašnjive mrežne veze, anomalije u vremenskim mjerenjima izvršavanja instrukcija ili nestabilnost sustava. Hipervizorski rootkiti, primjerice, mogu se otkriti analizom vremenskih razlika u izvođenju određenih procesorskih instrukcija. Iako analiza ponašanja može otkriti i nepoznate rootkite, ona često pati od velikog broja lažno pozitivnih rezultata te zahtijeva visoku razinu stručnosti analitičara za ispravnu interpretaciju podataka.
Najpouzdaniji pristup detekciji rootkita jest analiza sustava izvan kompromitiranog okruženja. To uključuje pokretanje sustava s pouzdanog medija (npr. forenzičkog live sustava) ili analizu kloniranog diska i snimke radne memorije (memory dump). Budući da rootkit u tom slučaju nije aktivan, ne može manipulirati rezultatima analize. Analiza radne memorije posebno je važna jer mnogi rootkiti, osobito memorijski i rootkiti na razini jezgre, ostavljaju minimalne tragove na disku. Alati za memorijsku forenziku omogućuju otkrivanje skrivenih procesa, jezgrenih hookova, izmijenjenih tablica sistemskih poziva i drugih artefakata koji nisu vidljivi standardnim alatima operativnog sustava.
Postoje razni anti-rootkit proizvodi npr. Rootkit Revealer, Blacklight, GMER, Icesword, Zeppoo, kstat, KsID … Iako sam alat nije lijek za sve, on može pružiti korisne informacije o stanju operativnog sustava. Mnogi stariji rootkiti modificiraju SSDT i IAT tablice hookvima kako bi izravno upućivale na vlastiti kod, i ovakve vrste promjena skeneri mogu trivijalno otkriti skenirajući IAT i SSDT tablice tražeći pokazivače koje ne upućuju na samu jezgru. Postojanje hooka ne jamči prisutnost rootkita, postoje i legitimne aplikacije koje mogu hookat kao što su anti-virusne aplikacije i vatrozid. U teoriji, u operativnom sustavu bi trebalo biti dovoljno malo hookova da se svaka može pažljivo ispitati i utvrditi jeli zlonamjerna ili ne. Noviji rootkiti ne hookaju tablice izravno, već mijenjaju kod legitimnog API rukovatelja ili DLL-a kako bi umetnuli JUMP instrukciju unutar zaglavlja datoteka koja upućuje na rootkit i time ostavljaju tablicu netaknutom i nepromijenjenom. Dok svaki proces koji pokušava pozvati taj API bit će preusmjeren na rootkit. Slika ispod prikazuje aplikaciju Icesword koji prijavljuje niz jezgrenih hookova.
Zlonamjerni kod ubrizgan je u ntoskrnl.exe jezgre operativnog sustava Windows koji je hooko SSDT API za NtOpenProcess, NtTerminateThread, NtCreateThread, NtCreateProcessEx, NtTerminateProcess i NtOpenThread. Ovaj rootkit može pratiti i kontrolirati svaki pokušaj pokretanja novog procesa ili ubijanja postojećeg.
Rootkit može biti izuzetno teško ukloniti, ali se može spriječiti zaraza računala na isti način kao i s drugim oblicima zlonamjernog softvera. Opasniji rootkiti zahtijevaju napadaču fizički pristup uređaju što za obične korisnike se rijetko događa, dok firme mogu se služiti van softverskim metodama kao ograničen pristup bitnoj infrastrukturi (npr server) ili koristeći hardverskog rootkita za nadzor prometa i aktivnosti na poslovnim uređajima. Među ostalog ispod su navedeni osnovni koraci koji mogu pomoći u sprječavanju zaraze:
Najpouzdanija i najučinkovitija metoda uklanjanja rootkita je formatiranje zaraženog tvrdog diska na niskoj razini s pomoću proizvođačevog softvera ili firmvera za tu svrhu i ponovno učitavanje operativnog sustava iz poznatih ispravnih sigurnosnih kopija. U slučajevima kada se sumnja na kompromitiranje računalnog firmvera, dodatni korak ponovnog ažuriranja svih BIOS firmvera s pomoću proizvođačevog kriptografsko potpisanog firmvera može biti nužna. Ako je to nepraktično, mogu se poduzeti koraci za pokušaj ručnog uklanjanja rootkita u dijelovima, no uspjeh nije garantiran. Ključ ručnog uklanjanja rootkita je točno i temeljito mapiranje svih njegovih funkcija, hookova i datoteka. Često će rootkit biti programiran da provjeri jesu li njegovi hookovi i datoteke netaknute i zamijeni ih ako su modificirane ili izbrisane. Kako bi se rootkit u potpunosti uklonio, sve njegove datoteke, hookovi i unosi u registar moraju se ukloniti dok je računalo ugašeno kako bi se spriječilo da rootkit otkrije promjene i poništi ih. Osim toga, sve upravljačke programe i datoteke ljuske koje je rootkit modificirao morat će se vratiti iz sigurnosne kopije jer su ključni za rad operativnog sustava i ne mogu se jednostavno izbrisati. Prilikom vraćanja oštećenih upravljačkih programa i datoteka ljuske bit će ključno osigurati da su iste verzije kao i original. Prije pokušaja uklanjanja, preporučljivo je promatrati rootkit u radu na kloniranom disku s pomoću naprednih alata za debugging, kao što su SoftICE i Ollydbg, koji prate gomilu, stog, registre, prepoznaju procedure, petlje, API pozive, sklopke, tablice, konstante i nizove znakova kako bi se osiguralo da su sve skrivene komponente otkrivene u najvećoj mogućoj mjeri. Međutim, mnogi rootkiti prate memorijski prostor u potrazi za poznatim programima za debugging i pokušat će zbuniti proces isključivanjem, krivotvorenjem podataka ili prekidanjem programa za debugging. Važno je prikupiti što više informacija prije pokušaja uklanjanja jer ako se propusti čak i jedna komponenta, rootkit i dalje može biti operativan i ponovno stvoriti izbrisane komponente ili ih preuzeti svježe sa svog kontrolnog poslužitelja. U slučaju MBR infekcije, MBR će trebati prebrisati čistom kopijom s pomoću programa kao fdisk, fixmb ili za Linux grub-install. Ako je rootkit pozitivno identificirao dobavljač antivirusnog programa, moguće je koristiti antivirusni softver tog dobavljača za automatsko uklanjanje nekih ili svih datoteka rootkita. Iz tog razloga, web-mjesta za skeniranje više antivirusnih programa bit će vrijedna u identificiranju koji dobavljač antivirusnih programa ima potpise za detekciju rootkita. Osim toga, mogu postojati informacije online ili dostupne izravno od dobavljača antivirusnih programa koje potpunije opisuju rad rootkita i točne upute za uklanjanje. Čak i ako nijedan dobavljač antivirusnih programa nema potpise za rootkit, i dalje može biti korisno pokrenuti antivirusno skeniranje koje uključuje dobru heurističku detekciju, kako bi se nadopunili drugi napori i osiguralo da ništa nije propušteno.
Rootkiti predstavljaju jednu od najsloženijih kategorija zlonamjernog softvera zbog svoje sposobnosti duboke integracije u operativni sustav i aktivnog prikrivanja tragova kompromitacije. Njihova prisutnost značajno otežava forenzičku analizu jer narušavaju pouzdanost standardnih alata i tehnika prikupljanja dokaza. Razina na kojoj rootkit djeluje izravno utječe na šansu otkrivanja, štetni potencijal i složenost uklanjanja. Analiza različitih vrsta rootkita pokazuje da napadači kontinuirano pomiču granice prema nižim razinama sustava, uključujući boot mehanizme, firmver i hardver, čime dodatno smanjuju mogućnost otkrivanja i povećavaju perzistentnost napada. Dok su proizvođači i akademici u utrci za naoružanjem osmišljavajući sve bolje mehanizme zaštite kritičnim dijelovima sustava. Iako postoje brojni alati i metode za detekciju rootkita, nijedna pojedinačna tehnika ne može se smatrati univerzalnim rješenjem. U praksi je nužna kombinacija više forenzičkih pristupa. Preventivne mjere, poput redovitog ažuriranja softvera, edukacije korisnika, praćenja mrežnog prometa, imaju ključnu ulogu u smanjenju vjerojatnosti uspješne infekcije. Rootkiti ostaju ozbiljna prijetnja suvremenim informacijskim sustavima, osobito u okruženjima s visokim zahtjevima za povjerljivost i integritet podataka. Razumijevanje njihovih mehanizama rada i ograničenja forenzičkih metoda ključno je za učinkovit odgovor na incidente i očuvanje digitalnih dokaza u modernim kibernetičkim napadima.