|
Rootkits
En angribers første
mål efter at have opnået adgang til et computer system er
ofte at forsøge at skjule sig for systemets ejere. Det kan f.eks. ske ved at slette logfiler
og andre elektroniske spor, eller ved at forsøge at skjule
installation af hackerens egne programmer på systemet. Dette
kan gøres manuelt, men foregår ofte fuldstændigt
automatiseret.
Rootkits er således mere eller mindre avancerede programmer og
scripts angribere benytter til at automatisere en række
forskellige handlinger efter at have overtaget kontrollen med en
maskine.
Rootkits skjuler både spor og programmer
Udover at slette spor efter det indledende angreb benyttes rootkit ofte til at skjule
angriberens processer (programmer) med forskellige teknikker,
så de ikke opdages af systemets ejere, ligesom rootkits kan skjule udvalgte filer
(eller
indhold i filer). En angriber kan f.eks. have interesse i at
skjule sine egne logfiler over indsamlede tastaturtryk
og passwords fra systemet eller løbende at skjule specifik
data i systemets logfiler. Rootkits kan derudover have en række
specialiserede funktioner såsom at oplyse forkert størrelse
af systemets harddisk så store filer eller Warez
distribution kan skjules for administratoren.
Rootkits
inkluderer ofte en række programmer til at sniffe/logge data, f.eks.
passwords og tastaturtryk, sammen med programmer hackeren planlægger at
benytte til at angribe andre maskiner. Endelig bruges rootkits næsten
altid til at give og skjule bagdøre på systemet, så angriberen sikre
det er muligt at vende tilbage til systemet på et senere tidspunkt.
Rootkits er således beregnet til angriberen kan "keep root" på et
system - dvs. beholde administrator adgang til systemet efter at have
overtaget kontrollen over det. Der er mange
forskellige typer rootkits, og som udgangspunkt skal man regne med, at
det er muligt for hackeren at skjule og ændre alt på systemet. Man kan
derfor ikke umiddelbart stole på data fra et "rootkit'et" system og en
af grundreglerne i computer forensics er også, at man ikke bør
eksekvere programmer fra et mistænkeligt systems harddisk. I stedet bør
man som minimum altid benytte programmer der er "known good",
dvs. programmer man tidligere har gemt på en diskette/cd eller som
man eksekvere over netværket fra en anden computer. Endnu bedre er det
at lave undersøgelsen på en kopi af systemet med specialiserede
programmer - eller i det mindste at boote det mistænkte system i et nyt
operativ system (en "known good" kerne). Dette gøres for at beskytte
imod rootkits og lign.
Typer af rootkits
Der er to grundlæggende typer rootkits: "traditionelle" og
"kernel" rootkits. I de traditionelle rootkits udskifter hackeren
udvalgte programmer på systemet med sine egne versioner af
programmerne.
Det kan f.eks. være en ny version af netstat,
der skjuler udvalgte porte og IP-adresser som hackeren benytter,
eller en ny version af ls/dir der skjuler alle hackerens filer.
Denne type rootkits kaldes også for "user mode rootkits"
fordi alle rootkit programmerne ligger i
user space. Det
er denne type rootkits man kan beskytte sin undersøgelse imod, ved
at bruge egne "known good" programmer til
undersøgelsen. Traditionelle rootkits kan bl.a. findes ved at
udføre MD-5 check på
systemets programmer, mere
information om dette og andre metoder til at finde rootkits
følger her på siden på et senere tidspunkt.
"Kernel mode" rootkits er en nyere - meget mere avanceret - type
rootkits hvor selve programmerne ikke udskiftes, men hvor data i
stedet skjules for brugerne af instruktioner inde fra selve
kernen af operativ systemet. "Known good" programmer finder
ikke denne type rootkits og uden specielle programmer og
teknikker kan det være meget svært at opdage
de avancerede rootkits.
Traditionelt har rootkits været mest udbredte på Unix
systemer, men inden for de seneste år er der sket en kraftig
udvikling inden for Windows rootkits.
Windows rootkits?
Der er naturligvis mange grunde
til servere bliver hacket, men med en grov generalisering
kan man sige, at truslen traditionelt har været afhængig af
hvilket operativ system man har benyttet. Windows er blevet
massivt angrebet af såkaldte Script Kiddies (hackere uden
egentlig viden, se min
kommentar i Computerworld)
og orme. Den største trussel har været ændringer af
hjemmesider, og i mere sjældne tilfælde installation af
værktøjer til angreb af andre servere, eller distribution af
f.eks. Warez. For andre operativsystemer, f.eks. Solaris,
er truslen ofte kommet fra dygtigere hackere, der tager fuld
kontrol over maskinen og bliver på netværket igennem længere
tid vha. rootkits.
Indtil begyndelsen af 2003
var de
avancerede rootkits således særligt udbredt på Unix
systemer, hvorimod Windows næsten helt undgik
problemer med rootkits. Der har naturligvis eksisteret Windows rootkits i
undergrunden i en del år, men disse er blevet holdt i
lukkede kredse og intet tyder på at de nogensinde er blevet
udnyttet i stor stil.
Men det har ændret sig
og Windows rootkits (inklusive kernel mode) er nu så
udviklede - og frit tilgængelige på Internettet, at vi ser
eksplosivt stigende brug på Windows platforme.
Microsoft oplyste
i december 2005 at 50% af alle Windows XP computere uden service packs
- og omkring 20% af XP med SP 2 - var inficeret med mindst et rootkit.
Billedet ovenfor viser i øvrigt uddrag af min Windows rootkit samling
jeg begyndte i 2002 (omkring 50 forskellige rootkits midt i 2005, i dag findes der 100’vis af forskellige rootkits). Se også
artikel i Computerworld: voldsom stigning i brugen af rootkits.
Siden første version af rootkit siden i 2004 er der nu ganske meget offentligt tilgængeligt
information om Windows rootkits på Internettet: f.eks. invisiblethings.org, 3 gode artikler fra James Butler og Sherri Sparks fra SecurityFocus:
1,
2 og
3. Wikipedia og AntiRootkit.com.
Black Hat har en lang række rootkit præsentationer fra omkring 2004 og frem til idag,
præsentation fra
Techpathways og selvfølgelig hovedsiden
rootkit.com. Min præsentation fra 2003 bliver lagt på siden på et tidspunkt. Jesper Johansson fra
Microsoft har en række gode råd
her og
her.
Security Overflow bloggen har mange gode tekster, se bl.a. Introduktion til rootkits, Rootkit profiling, Windows rootkit detection og Windows rootkit prevention, se mere på bloggen. Sysinternals forum har en lang tråd med eksempler på anti-rootkit programmer.
Spændende dansk projekt med fokus på hjælp til hjemmebrugere, der muligvis er inficeret med et Windows rootkit.
Meget interessant
teknisk undersøgelse udført af Microsoft, sammenlign i
øvrigt memory dumpet i artiklen med
billedet øverst på index siden fra en undersøgelse jeg
lavede i 2003 af en server med Hacker Defender rootkittet
installeret. Microsoft Research
hjemmeside med masser af
information om rootkits. Der er jævnligt information
om Windows rootkits i Robert Hensing fra Microsofts
Incident Response Blog
Unix rootkits
Rootkits er selvfølgelig på ingen måde begrænset til Microsoft systemer. Se siden for Unix anti-rootkit programmer for mere information og en lang liste over programmer.
3.generation rootkits på vej
Den næste generation af rootkits tyder på at blive hardware rootkits.
Det kan f.eks. omfatte opbevaring af data og eksekvering af programmer
fra videokort RAM og CPU samt andre former for hardware. Avancerede virtualiserede (tænk "VMware") rootkits bliver også aktivt udviklet.
Information om en række af de nyere rootkits kan f.eks. findes her, her, her PCI rootkits og her firmware rootkits.
Hvorfor er rootkits
farlige for en undersøgelse?
Rootkits gør det meget svært at bestemme om en server er blevet hacket
eller ej. Det er muligt man har en følelse af at "noget er
galt", men det er ikke umiddelbart muligt at sætte en finger
på, hvad problemet er. Almindelige undersøgelser viser ingen
programmer der ikke burde være der, og undersøgelserne finder
umiddelbart hverken bagdøre, logfiler eller uautoriserede services.
Hackeren har derfor mulighed for, i lang tid, at have fuld
kontrol over serveren, normalt indtil den geninstalleres. På
det tidspunkt kan der naturligvis være risiko for at
hackeren har udvidet sin kontrol til andre servere på
netværket, evt. ved at sniffe passwords.
Identifikation af rootkits
Der er en række forskellige teknikker, der kan benyttes til at identificere rootkits, en række grundlæggende teknikker introduceres her. Undersøgelserne tager alle sammen tid og erfaring, så for almindelige brugere er det hurtigste og bedste næsten altid at geninstallere systemet med det samme.
Man skal være meget opmærksom på, at det typisk er meget svært at finde rootkits, og det gælder i særdeleshed for de rootkits der ikke er offentligt tilgængelige, dvs. når man ikke kender de tekniker der benyttes i rootkittet.
Man skal også være opmærksom på, at selvom man har fundet ét rootkit på et system kan man ikke være sikker på man har fundet alle. Dvs. man er nødt til at validere hele systemets integritet hvis man vil bevise systemet er rent - og det er svært.
Rootkit scannere
Langt de fleste anti-rootkit programmer er, som anti-virus programmer, baseret på rootkit signature og fanger derfor kun kendte rootkits.
Der er en liste over en lang række gratis Windows anti-rootkit programmer og en tilsvarende liste for Unix anti-rootkit programmer man kan bruge.
Som nævnt ovenfor er det ekstremt svært at checke for avancerede rootkits, så man skal altid være klar over, at der er risiko for man potentielt kan være inficeret selvom en rootkit scanner ikke finder noget.
Det er altid lettere at udvikle rootkits end at finde dem. Indtil det bliver opdaget hvordan et rootkit - eller en hel ny type rootkits - virker, kan det være ekstremt svært at beskytte den del af systemet. Og når der findes en kendt måde at opdage et rootkit kan udvikleren finde en måde at undgå opdagelse ved at teste de kendte programmer og teknikker på nye programmer.
Men der er mange andre ting man selv kan overveje at forsøge, bl.a.:
Boot i nyt OS
Ved at tage harddisken ud af det system der skal undersøges eller ved at boote systemet i et rent operativ system vha. en boot CD kan man undersøge filsystemet for filer og programmer der ellers ville være skjult af rootkittet. Mange rootkits bliver dog gemt dybt inde i filsystemet, f.eks. "C:\WINDOWS\system32\spool\PRINTERS\abc\xyz\rootkitfiler" i stedet for "c:\rootkitfiler". Så ved en manuel undersøgelse må man forsøge at finde *alle* uønskede problemer, lige meget hvor skjulte de er og hvor mange forskellige steder de ligger.
Checksum
Ved at tage en checsum/beregne hash værdier af filerne på systemet og efterfølgende sammenligne summen med samlinger af "known good" og "known bad" filer kan man undersøge om der er uønskede filer på systemet.
Hvis SHA-1 hashen for "net.exe" under Windows XP professional SP2 er kendt som "4069ba1d5314124d6faa4dc84227f424cc3ce0db" er det let at opdage ændringer, da enhver ændring af programmet medfører en helt ny hash værdi. På samme måde udføres "known bad" undersøgelser: når man kender checksummen for kendte "hackerprogrammer" kan man let undersøge om der er checksumme på systemet der matcher de kendte programmer.
"Usermode rootkits" findes ofte ved at beregne hash værdier på filer på et system. Men vær opmærksom på, at mere avancerede rootkits altid kan ændre resultatet af beregningerne hvis de laves direkte på det mistænkelige system. mistænkte system. Samtidigt er det ikke længere så almindeligt at rootkits kun udskifter kendte filer i usermode, det er nu mere almindeligt at rootkittet kontrollerer kernen af operativ systemet. Denne type rootkits kan ikke findes ved at beregne hash værdier.
Se siden om hash funktioner og computer forensics for mere information samt eksempler på databaser med kendte hash værdier.
Logfiler
Se på logfiler fra systemet - og ikke mindst fra andre systemer på netværket, inklusive firewalls, IDS, routere osv. Dette kræver naturligvis at logningen er aktiv, tilstrækkelig og ikke er blevet slettet af angriberen.
Se siden om log forensics for mere information om logning.
Netværkstrafik
Det er muligt at aflytte netværkstrafikken (fra et andet system) for at identificere ukendt trafik fra det mistænkelige system. Dette bliver vanskeligt hvis der er meget trafik på systemet, hvis man ikke er vant til at tolke netværkstrafik og specielt svært hvis rootkittet benytter teknikker til at "skjule trafikken" ("covert channels")
Se også siden om netværks forensics for programmer og mere information. samt min gamle tekst om teknikker til forbigåelse af firewall beskyttelse.
Forensics undersøgelser
En rigtig forensics undersøgelse af et system vil typisk inkludere de relevante elementer af de ovenstående teknikker. Man vil derudover næsten altid tage en identisk kopi af harddisken fra de mistænkelige system og efterfølgende undersøge kopien med special programmer som Sleuth Kit eller kommercielle programmer.
|