Computer Forensics.DK Sidste opdatering: 9.august 2007
hjem | computer forensics | incident response | electronic discovery | programmer | knowledge base | links | rootkits | mig | sitemap | kontakt


                                                                   
      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.

 
Copyright © 2004-2008 Computerforensics.DK