RootkitRevealer v1.71

Av Mark Russinovich

Publicerad: 1 november 2006

Laddaned Ladda ned RootkitRevealer(231 KB)
Kör nu från Sysinternals Live.

Introduktion

RootkitRevealer är ett avancerat identifieringsverktyg för rootkit. Den körs på Windows XP (32-bitars) och Windows Server 2003 (32-bitars) och dess utdata visar avvikelser i register- och filsystemets API som kan tyda på förekomsten av ett rotkit för användarläge eller kernelläge. RootkitRevealer identifierar många beständiga rootkits, inklusive AFX, Vanquish och HackerDefender (obs: RootkitRevealer är inte avsett att identifiera rootkits som Fu som inte försöker dölja sina filer eller registernycklar). Om du använder den för att identifiera förekomsten av ett rootkit bör du meddela oss!

Anledningen till att det inte längre finns en kommandoradsversion är att författare av skadlig kod har börjat rikta in sig på RootkitRevealers genomsökning med hjälp av dess körbara namn. Vi har därför uppdaterat RootkitRevealer för att köra genomsökningen från en slumpmässigt namngiven kopia av sig själv som körs som en Windows tjänst. Den här typen av körning är inte störande för ett kommandoradsgränssnitt. Observera att du kan använda kommandoradsalternativ för att köra en automatisk genomsökning med resultat som loggas till en fil, vilket motsvarar kommandoradsversionens beteende.

Vad är ett Rootkit?

Termen rootkit används för att beskriva mekanismer och tekniker där skadlig kod, inklusive virus, spionprogram och trojaner, försöker dölja sin närvaro från spionprogramsblockerare, antivirus och systemhanteringsverktyg. Det finns flera rootkit-klassificeringar beroende på om den skadliga koden klarar omstart och om den körs i användarläge eller kernelläge.

Beständiga rootkits
En beständig rootkit är en som är associerad med skadlig kod som aktiveras varje gång systemet startas. Eftersom sådan skadlig kod innehåller kod som måste köras automatiskt varje system startar eller när en användare loggar in, måste de lagra kod i ett beständigt arkiv, till exempel registret eller filsystemet, och konfigurera en metod som koden körs med utan inblandning av användaren.

Minnesbaserade rootkits
Minnesbaserade rotkit är skadlig kod som inte har någon beständig kod och därför inte klarar en omstart.

Rootkits för användarläge
Det finns många metoder som rootkits försöker kringgå identifiering med. Ett rotkit i användarläge kan till exempel fånga upp alla anrop till Windows FindFirstFile/FindNextFile-API:er, som används av filsystemutforskningsverktyg, inklusive Explorer och kommandotolken, för att räkna upp innehållet i filsystemkataloger. När ett program utför en kataloglista som annars skulle returnera resultat som innehåller poster som identifierar filerna som är associerade med rootkit, fångar rootkit upp och ändrar utdata för att ta bort posterna.

Den Windows inbyggda API:et fungerar som gränssnittet mellan klienter i användarläge och kernellägestjänster och mer avancerade rotkit för användarläge som fångar upp filsystem, register och processuppräkningsfunktioner i det interna API:et. Detta förhindrar identifiering av skannrar som jämför resultatet av en Windows API-uppräkning med den som returneras av en intern API-uppräkning.

Rootkits i kernelläge
Kernellägesrotkit kan vara ännu kraftfullare eftersom de inte bara kan fånga upp det inbyggda API:et i kernelläge, utan även direkt manipulera datastrukturer i kernelläge. En vanlig teknik för att dölja förekomsten av en skadlig kod är att ta bort processen från kernelns lista över aktiva processer. Eftersom processhanterings-API:er förlitar sig på innehållet i listan visas inte den skadliga koden i processhanteringsverktyg som Aktivitetshanteraren processutforskaren.

Så här fungerar RootkitRevealer

Eftersom beständiga rootkits fungerar genom att ändra API-resultat så att en systemvy med API:er skiljer sig från den faktiska vyn i lagring, jämför RootkitRevealer resultaten av en systemgenomsökning på den högsta nivån med den på den lägsta nivån. Den högsta nivån är Windows API och den lägsta nivån är rådatainnehållet på en filsystemvolym eller registreringsdatafil (en hive-fil är registrets lagringsformat på disk). Rootkits, oavsett om det är användarläge eller kernelläge, som manipulerar Windows-API:et eller det interna API:et för att ta bort deras närvaro från en kataloglista, kommer därför att ses av RootkitRevealer som en avvikelse mellan informationen som returneras av Windows-API:et och den som visas i den råa genomsökningen av en FAT- eller NTFS-volyms filsystemstrukturer.

Kan ett Rootkit döljas från RootkitRevealer
Teoretiskt sett är det möjligt för ett rootkit att dölja från RootkitRevealer. Detta kräver att RootkitRevealers läsningar av Registreringsdata för registreringsdata eller filsystemdata fångas upp och innehållet i data ändras så att rootkit-registrets data eller filer inte finns. Detta kräver dock en nivå av sofistikerade som hittills inte har setts i rootkits. Ändringar av data skulle kräva både en nära kunskap om NTFS-, FAT- och Registry Hive-formaten, samt möjligheten att ändra datastrukturer så att de döljer rootkit, men inte orsaka inkonsekventa eller ogiltiga strukturer eller sidoeffektsavvikheter som skulle flaggas av RootkitRevealer.

Finns det ett säkert sätt att känna till en rootkit-närvaro?
I allmänhet inte inifrån ett system som körs. Ett kernellägesrotkit kan styra vilken aspekt som helst av ett systems beteende så att information som returneras av ett API, inklusive råläsningar av registreringsdata och filsystemdata som utförs av RootkitRevealer, kan komprometteras. Även om en jämförelse av en onlinegenomsökning av ett system och en avsökning från en säker miljö, till exempel en start i en CD-baserad operativsysteminstallation, är mer tillförlitlig, kan rootkits rikta sådana verktyg för att undvika identifiering av även dem.

Den nedre raden är att det aldrig kommer att finnas en universell rootkit-skanner, men de mest kraftfulla skannrarna kommer att vara online-/off-line jämförelseskannrar som integreras med antivirus.

Använda RootkitRevealer

RootkitRevealer kräver att kontot som dess körning har tilldelat till sig behörigheterna Säkerhetskopiera filer och kataloger, Läsa in drivrutiner och Utföra volymunderhållsuppgifter (på Windows XP och högre). Gruppen Administratörer tilldelas dessa behörigheter som standard. För att minimera falska positiva resultat kör du RootkitRevealer på ett inaktivt system.

För bästa resultat avslutar du alla program och håller systemet inaktivt under RootkitRevealer-genomsökningsprocessen.

Om du har frågor eller problem kan du besöka Sysinternals RootkitRevealer-forumet.

Manuell genomsökning

Om du vill skanna ett system startar du det på systemet och trycker på knappen Skanna. RootkitRevealer söker igenom systemet och rapporterar sina åtgärder i ett statusområde längst ned i fönstret och ser avvikelser i utdatalistan. De alternativ som du kan konfigurera:

  • Dölj NTFS-metadatafiler: Det här alternativet är på som standard och rootkitRevealer visar inte NTFS-standardmetadatafiler, som är dolda från Windows-API:et.
  • Genomsök register: det här alternativet är på som standard. Om du avmarkerar den utförs ingen registergenomsökning av RootkitRevealer.

Starta en automatisk genomsökning

RootkitRevealer stöder flera alternativ för system för automatisk genomsökning:

Användning: rootkitrevealer [-a [-c] [-m] [-r] utdatafil]

Parameter Beskrivning
-a Skanna och avsluta automatiskt när du är klar.
-c Formatera utdata som CSV.
-m Visa NTFS-metadatafiler.
-r Sök inte igenom registret.

Observera att filens utdataplats måste finnas på en lokal volym.

Om du anger alternativet -c rapporterar den inte förlopp och avvikelser skrivs ut i CSV-format för enkel import till en databas. Du kan utföra genomsökningar av fjärrsystem genom att köra det med Verktyget Sysinternals PsExec med hjälp av en kommandorad som liknar följande:

psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log

Tolka utdata

Det här är en skärmbild av RootkitRevealer som identifierar förekomsten av populära HackerDefender Rootkit. Avvikelserna i registernyckeln visar att registernycklarna som lagrar HackerDefenders enhetsdrivrutiner och tjänstinställningar inte är synliga för Windows-API:et, men att de finns i rådatagenomsökningen av Hive-registerdata. På samma sätt är HackerDefender-associerade filer inte synliga för Windows API-katalogsökningar, men finns i genomsökningen av rådata för filsystemet.

Rootkit Revealer

Du bör undersöka alla avvikelser och fastställa sannolikheten att de indikerar förekomsten av ett rootkit. Tyvärr finns det inget definitivt sätt att fastställa, baserat på utdata, om det finns en rootkit, men du bör undersöka alla rapporterade avvikelser för att se till att de är förklarande. Om du har kommit fram till att du har en rootkit installerad söker du efter borttagningsanvisningar på webben. Om du är osäker på hur du tar bort ett rootkit bör du formatera om systemets hårddisk och installera om Windows.

Förutom informationen nedan om möjliga Avvikelser i RootkitRevealer diskuterar RootkitRevealer-forumet på Sysinternals identifierade rootkits och specifika falska positiva resultat.

Dolt från Windows API

Dessa avvikelser är de som uppvisas av de flesta rootkits. Men om du inte har kontrollerat Dölj NTFS-metadatafiler bör du förvänta dig att se ett antal sådana poster på en NTFS-volym, eftersom NTFS döljer sina metadatafiler, till exempel $MFT och $Secure, från Windows-API:et. De metadatafiler som finns på NTFS-volymer varierar beroende på version av NTFS och de NTFS-funktioner som har aktiverats på volymen. Det finns även antivirusprodukter, till exempel Antivirus Antivirus, som använder rootkit-tekniker för att dölja data som lagras i NTFS alternativa dataströmmar. Om du kör en sådan virusskanner visas en avvikelse i API:et dold från Windows för en alternativ dataström på varje NTFS-fil. RootkitRevealer stöder inte utdatafilter eftersom rootkits kan dra nytta av all filtrering. Slutligen, om en fil tas bort under en genomsökning kan du också se den här avvikelsen.

Det här är en lista över NTFS-metadatafiler som definierats från Windows Server 2003:

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Åtkomst nekas.
RootkitRevealer bör aldrig rapportera den här avvikelsen eftersom den använder mekanismer som gör att den kan komma åt filer, kataloger eller registernycklar i ett system.

Visas i Windows API, katalogindex, men inte i MFT.
Synligt i Windows API, men inte i MFT eller katalogindex.
Visas i Windows API, MFT, men inte i katalogindex.
Synligt i katalogindex, men inte Windows API eller MFT.

En genomsökning av filsystemet består av tre komponenter: Windows API, NTFS Master File Table (MFT) och KATALOGindexstrukturerna för NTFS på disk. Dessa avvikelser indikerar att en fil endast visas i en eller två av genomsökningarna. En vanlig orsak är att en fil antingen skapas eller tas bort under genomsökningarna. Det här är ett exempel på RootkitRevealers avvikelserapport för en fil som skapades under genomsökningen:

C:\newfile.txt
2005-03-01 17:26
8 byte
Synligt i Windows API, men inte i MFT eller katalogindex.

Windows API-längden stämmer inte överens med rådata för registreringsdata.
Rootkits kan försöka dölja sig själva genom att felaktigt representera storleken på ett registervärde så att dess innehåll inte är synligt för Windows API. Du bör undersöka eventuella sådana avvikelser, även om det också kan visas som ett resultat av registervärden som ändras under en genomsökning.

Skriv ett matchningsfel mellan Windows API och hive-rådata.
Registervärden har en typ, till exempel DWORD och REG_SZ, och den här avvikelsen noterar att typen av ett värde som rapporteras via Windows-API:et skiljer sig från typen av hive-rådata. Ett rootkit kan maskera sina data genom att lagra dem som ett REG_BINARY-värde, till exempel och få Windows-API:et att tro att det är ett REG_SZ-värde. Om det lagrar ett 0 i början av data kan Windows-API:et inte komma åt efterföljande data.

Nyckelnamnet innehåller inbäddade null-värden.
I Windows-API:et behandlas nyckelnamn som null-avslutade strängar, medan kerneln behandlar dem som räknade strängar. Det är därför möjligt att skapa registernycklar som är synliga för operativsystemet, men bara delvis synliga för registerverktyg som Regedit. Referensexempelkoden på Sysinternals visar den här tekniken, som används av både skadlig kod och rootkits för att dölja registerdata. Använd verktyget Sysinternals RegDelNull för att ta bort nycklar med inbäddade null-värden.

Datamatchning mellan Windows-API:et och hive-rådata.
Den här avvikelsen inträffar om ett registervärde uppdateras medan registergenomsökningen pågår. Värden som ändras ofta omfattar tidsstämplar, till exempel Microsoft SQL Server för drifttid, som visas nedan, och virusskannervärden för "senaste genomsökning". Du bör undersöka eventuella rapporterade värden för att säkerställa att det är ett giltigt program- eller systemregistervärde.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
2005-03-01 16:33
8 byte

Rootkit-resurser

Följande webbplatser och böcker är källor till mer information om rootkits:

Sony, Rootkits och Digital Rights Management Gone Too Far
Läs Marks blogginlägg om hans identifiering och analys av ett Rootkit för Rotor på en av hans datorer.

Ta bort rootkits
Mark's June Windows IT Pro Magazine innehåller en översikt över rootkit-tekniker och hur RootkitRevealer fungerar.

Rootkits: Devertera Windows Kernel
Den här boken av Greg Rotor rotorsak ochCertifikat Butler är den mest omfattande behandlingen av rootkits som är tillgängliga.

www.phrack.org
På den här webbplatsen lagras arkivet med Phrack, en knackningsorienterad stidning där utvecklare diskuterar brister i säkerhetsrelaterade produkter, rootkit-tekniker och andra skadliga trick.

The Art of Computer Virus Research and Defense, av Peter Szor

Skadlig kod: Skadlig kod sombekämpas , av Ed Skoudis och Malware Houtser

Windows Internals, 4th Edition, av Mark Russinovich och Dave Bob (boken pratar inte om rootkits, men förståelsen av Windows-arkitekturen är användbar för att förstå rootkits).

Laddaned Ladda ned RootkitRevealer(231 KB)

Kör nu från Sysinternals Live.