RootkitRevealer v1.71

Door Mark Russinovich

Gepubliceerd: 1 november 2006

DownloadRootkitRevealer(231 KB) downloaden
Nu uitvoeren vanuit Sysinternals Live.

Introductie

RootkitRevealer is een geavanceerd hulpprogramma voor rootkitdetectie. Het wordt uitgevoerd op Windows XP (32-bits) en Windows Server 2003 (32-bits), en de uitvoer vermeldt discrepanties tussen register- en bestandssysteem-API's die kunnen wijzen op de aanwezigheid van een rootkit in de gebruikersmodus of kernelmodus. RootkitRevealer detecteert veel permanente rootkits, waaronder AFX, Vanquish en HackerDefender (opmerking: RootkitRevealer is niet bedoeld om rootkits zoals Fu te detecteren die hun bestanden of registersleutels niet proberen te verbergen). Als u deze gebruikt om de aanwezigheid van een rootkit te identificeren, laat het ons dan weten.

De reden dat er niet langer een opdrachtregelversie is, is dat malwareauteurs zijn begonnen met het targeten van de scan van RootkitRevealer met behulp van de uitvoerbare naam. Daarom hebben we RootkitRevealer bijgewerkt om de scan uit te voeren vanaf een willekeurig benoemde kopie van zichzelf die wordt uitgevoerd als een Windows-service. Dit type uitvoering is niet gunstig voor een opdrachtregelinterface. Houd er rekening mee dat u opdrachtregelopties kunt gebruiken om een automatische scan uit te voeren met resultaten die zijn vastgelegd in een bestand. Dit is het equivalent van het gedrag van de opdrachtregelversie.

Wat is een rootkit?

De term rootkit wordt gebruikt om de mechanismen en technieken te beschrijven waarmee malware, waaronder virussen, spyware en Trojaanse paarden, hun aanwezigheid probeert te verbergen voor spywareblokkeringen, antivirus- en systeembeheerprogramma's. Er zijn verschillende rootkitclassificaties, afhankelijk van of de malware het opnieuw opstarten overleeft en of deze wordt uitgevoerd in de gebruikersmodus of kernelmodus.

Permanente rootkits
Een permanente rootkit is een rootkit die is gekoppeld aan malware die wordt geactiveerd telkens wanneer het systeem wordt opgestart. Omdat dergelijke malware code bevat die automatisch elke systeemstart moet worden uitgevoerd of wanneer een gebruiker zich aanmeldt, moet deze code opslaan in een permanente opslag, zoals het register of bestandssysteem, en een methode configureren waarmee de code wordt uitgevoerd zonder tussenkomst van de gebruiker.

Rootkits op basis van geheugen
Rootkits op basis van geheugen zijn malware die geen permanente code heeft en daarom een herstart niet overleeft.

Rootkits in de gebruikersmodus
Er zijn veel methoden waarmee rootkits detectie proberen te omzeilen. Een rootkit in de gebruikersmodus kan bijvoorbeeld alle aanroepen naar de Windows FindFirstFile/FindNextFile API's onderscheppen, die worden gebruikt door hulpprogramma's voor het verkennen van het bestandssysteem, waaronder Verkenner en de opdrachtprompt, om de inhoud van bestandssysteemmappen op te sommen. Wanneer een toepassing een mapvermelding uitvoert die anders resultaten zou retourneren die vermeldingen bevatten die de bestanden identificeren die zijn gekoppeld aan de rootkit, onderschept de rootkit en wijzigt de uitvoer om de vermeldingen te verwijderen.

De systeemeigen Windows-API fungeert als de interface tussen gebruikersmodusclients en kernelmodusservices en geavanceerdere rootkits voor het onderscheppen van bestandssysteem, register en procesinventarisatiefuncties van de systeemeigen API. Dit voorkomt de detectie door scanners die de resultaten van een Windows API-opsomming vergelijken met de resultaten die worden geretourneerd door een systeemeigen API-opsomming.

Rootkits in de kernelmodus
Rootkits in de kernelmodus kunnen nog krachtiger zijn, omdat ze niet alleen de systeemeigen API in de kernelmodus kunnen onderscheppen, maar ze kunnen ook rechtstreeks kernelmodusgegevensstructuren manipuleren. Een veelgebruikte techniek voor het verbergen van de aanwezigheid van een malwareproces is het verwijderen van het proces uit de lijst met actieve processen van de kernel. Omdat procesbeheer-API's afhankelijk zijn van de inhoud van de lijst, wordt het malwareproces niet weergegeven in hulpprogramma's voor procesbeheer, zoals Taakbeheer of Procesverkenner.

Hoe RootkitRevealer werkt

Omdat permanente rootkits werken door API-resultaten te wijzigen, zodat een systeemweergave met API's verschilt van de werkelijke weergave in de opslag, vergelijkt RootkitRevealer de resultaten van een systeemscan op het hoogste niveau met die op het laagste niveau. Het hoogste niveau is de Windows-API en het laagste niveau is de onbewerkte inhoud van een bestandssysteemvolume of registercomponent (een Hive-bestand is de opslagindeling van het register op schijf). Rootkits, gebruikersmodus of kernelmodus, die de Windows-API of systeemeigen API manipuleren om bijvoorbeeld hun aanwezigheid uit een mapvermelding te verwijderen, worden door RootkitRevealer gezien als een discrepantie tussen de informatie die wordt geretourneerd door de Windows-API en die in de onbewerkte scan van de bestandssysteemstructuren van een FAT- of NTFS-volume.

Kan een Rootkit zich verbergen voor RootkitRevealer
Het is theoretisch mogelijk dat een rootkit zich verbergt voor RootkitRevealer. Als u dit doet, moet rootkitRevealer-leesbewerkingen van register hive-gegevens of bestandssysteemgegevens worden onderschept en de inhoud van de gegevens zodanig worden gewijzigd dat de registergegevens of -bestanden van de rootkit niet aanwezig zijn. Dit vereist echter een niveau van verfijning dat tot nu toe niet in rootkits wordt gezien. Wijzigingen in de gegevens vereisen een uitgebreide kennis van de INDELINGen NTFS, FAT en Registry Hive, plus de mogelijkheid om gegevensstructuren zodanig te wijzigen dat ze de rootkit verbergen, maar geen inconsistente of ongeldige structuren of afwijkingen bij neveneffect veroorzaken die worden gemarkeerd door RootkitRevealer.

Is er een manier om de aanwezigheid van een rootkit te weten te komen
In het algemeen niet vanuit een actief systeem. Een rootkit in de kernelmodus kan elk aspect van het gedrag van een systeem beheren, zodat informatie die door een API wordt geretourneerd, met inbegrip van de onbewerkte leesbewerkingen van registercomponent en bestandssysteemgegevens die worden uitgevoerd door RootkitRevealer, kan worden aangetast. Hoewel het vergelijken van een online scan van een systeem en een offline scan vanuit een beveiligde omgeving, zoals een opstart naar een installatie van een besturingssysteem op basis van een cd, betrouwbaarder is, kunnen rootkits zich richten op dergelijke hulpprogramma's om detectie door zelfs hen te omzeilen.

Het komt erop neer dat er nooit een universele rootkit-scanner zal zijn, maar de krachtigste scanners zullen on-line/offline vergelijkingsscanners zijn die integreren met antivirus.

RootkitRevealer gebruiken

RootkitRevealer vereist dat het account van waaruit de uitvoering is toegewezen, de back-upbestanden en mappen, stuurprogramma's laden en Volumeonderhoudstaken uitvoeren (op Windows XP en hoger) bevoegdheden. Deze bevoegdheden worden standaard toegewezen aan de groep Administrators. Voer RootkitRevealer uit op een niet-actief systeem om fout-positieven te minimaliseren.

Sluit voor de beste resultaten alle toepassingen af en houd het systeem anders inactief tijdens het scanproces RootkitRevealer.

Als u vragen of problemen hebt, gaat u naar het Sysinternals RootkitRevealer Forum.

Handmatig scannen

Als u een systeem wilt scannen, start u het op het systeem en drukt u op de knop Scannen. RootkitRevealer scant het systeem dat zijn acties rapporteert in een statusgebied onderaan het venster en noteert discrepanties in de uitvoerlijst. De opties die u kunt configureren:

  • NTFS-metagegevensbestanden verbergen: deze optie is standaard ingeschakeld en rootkitRevealer bevat geen standaard NTFS-metagegevensbestanden, die verborgen zijn voor de Windows-API.
  • Register scannen: deze optie is standaard ingeschakeld. Als u de selectie opheffen, kan RootkitRevealer geen registerscan uitvoeren.

Een automatische scan starten

RootkitRevealer ondersteunt verschillende opties voor systemen voor automatisch scannen:

Gebruik: rootkitrevealer [-a [-c] [-m] [-r] outputfile]

Parameter Beschrijving
-A Automatisch scannen en afsluiten wanneer u klaar bent.
-c Uitvoer opmaken als CSV.
-M NTFS-metagegevensbestanden weergeven.
-R Scan het register niet.

Houd er rekening mee dat de bestandsuitvoerlocatie zich op een lokaal volume moet bevinden.

Als u de optie -c opgeeft, wordt de voortgang niet vermeld en worden discrepanties afgedrukt in CSV-indeling, zodat u deze eenvoudig in een database kunt importeren. U kunt scans van externe systemen uitvoeren door deze uit te voeren met het hulpprogramma Sysinternals PsExec met behulp van een opdrachtregel zoals de volgende:

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

De uitvoer interpreteren

Dit is een schermopname van RootkitRevealer die de aanwezigheid van de populaire HackerDefender-rootkit detecteert. De registersleutelverschillen tonen aan dat de registersleutels die het apparaatstuurprogramma en de service-instellingen van HackerDefender opslaan, niet zichtbaar zijn voor de Windows-API, maar aanwezig zijn in de onbewerkte scan van de registercomponentgegevens. Op dezelfde manier zijn de aan HackerDefender gekoppelde bestanden niet zichtbaar voor windows API-mapscans, maar zijn ze aanwezig in de scan van de onbewerkte bestandssysteemgegevens.

Rootkit Revealer

U moet alle discrepanties onderzoeken en de kans bepalen dat deze wijzen op de aanwezigheid van een rootkit. Helaas is er geen definitieve manier om op basis van de uitvoer te bepalen of er een rootkit aanwezig is, maar u moet alle gemelde discrepanties onderzoeken om er zeker van te zijn dat ze verklaarbaar zijn. Als je vaststelt dat je een rootkit hebt geïnstalleerd, zoek dan op het web naar verwijderingsinstructies. Als u niet zeker weet hoe u een rootkit verwijdert, moet u de harde schijf van het systeem opnieuw formatteren en Windows opnieuw installeren.

Naast de onderstaande informatie over mogelijke RootkitRevealer-discrepanties, bespreekt het RootkitRevealer-forum op Sysinternals gedetecteerde rootkits en specifieke fout-positieven.

Verborgen in Windows-API

Deze verschillen zijn de verschillen die de meeste rootkits vertonen; Als u echter de BESTANDEN met NTFS-metagegevens verbergen niet hebt gecontroleerd, kunt u een aantal van dergelijke vermeldingen op een NTFS-volume verwachten, omdat NTFS de metadabestanden, zoals $MFT en $Secure, van de Windows-API verbergt. De metagegevensbestanden die aanwezig zijn op NTFS-volumes variëren per versie van NTFS en de NTFS-functies die zijn ingeschakeld op het volume. Er zijn ook antivirusproducten, zoals Kaspersky Antivirus, die gebruikmaken van rootkit-technieken om gegevens te verbergen die ze opslaan in alternatieve NTFS-gegevensstromen. Als u een dergelijke virusscanner gebruikt, ziet u een discrepantie verborgen in Windows-API voor een alternatieve gegevensstroom op elk NTFS-bestand. RootkitRevealer biedt geen ondersteuning voor uitvoerfilters, omdat rootkits kunnen profiteren van filters. Ten slotte, als een bestand wordt verwijderd tijdens een scan, kunt u deze discrepantie ook zien.

Dit is een lijst met NTFS-metagegevensbestanden die zijn gedefinieerd vanaf 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

De toegang wordt geweigerd.
RootkitRevealer mag deze discrepantie nooit melden, omdat er mechanismen worden gebruikt waarmee toegang kan worden gegeven tot een bestand, map of registersleutel op een systeem.

Zichtbaar in Windows-API, mapindex, maar niet in MFT.
Zichtbaar in Windows-API, maar niet in MFT of directory-index.
Zichtbaar in Windows-API, MFT, maar niet in de directory-index.
Zichtbaar in de directory-index, maar niet in De Windows-API of MFT.

Een bestandssysteemscan bestaat uit drie onderdelen: de Windows-API, de NTFS-hoofdbestandstabel (MFT) en de ntfs-mapindexstructuren op schijf. Deze verschillen geven aan dat een bestand slechts in een of twee van de scans wordt weergegeven. Een veelvoorkomende reden is dat een bestand wordt gemaakt of verwijderd tijdens de scans. Dit is een voorbeeld van het discrepantierapport van RootkitRevealer voor een bestand dat is gemaakt tijdens het scannen:

C:\newfile.txt
01-03-2005 17:26
8 bytes
Zichtbaar in Windows-API, maar niet in MFT of directory-index.

Windows API-lengte niet consistent met onbewerkte hive-gegevens.
Rootkits kunnen proberen zichzelf te verbergen door de grootte van een registerwaarde verkeerd voor te stellen, zodat de inhoud ervan niet zichtbaar is voor de Windows-API. U moet een dergelijke discrepantie onderzoeken, hoewel deze ook kan worden weergegeven als gevolg van registerwaarden die tijdens een scan veranderen.

Type komt niet overeen tussen Windows-API en onbewerkte hive-gegevens.
Registerwaarden hebben een type, zoals DWORD en REG_SZ, en deze discrepantie merkt op dat het type van een waarde zoals gerapporteerd via de Windows-API verschilt van dat van de onbewerkte hive-gegevens. Een rootkit kan de gegevens maskeren door deze bijvoorbeeld op te slaan als een REG_BINARY-waarde en de Windows-API te laten geloven dat het een REG_SZ waarde is; Als er een 0 wordt opgeslagen aan het begin van de gegevens, heeft de Windows-API geen toegang tot de volgende gegevens.

Sleutelnaam bevat ingesloten null-waarden.
De Windows-API behandelt sleutelnamen als tekenreeksen die zijn beëindigd met null, terwijl de kernel ze behandelt als getelde tekenreeksen. Het is dus mogelijk om registersleutels te maken die zichtbaar zijn voor het besturingssysteem, maar slechts gedeeltelijk zichtbaar voor registerhulpprogramma's zoals Regedit. De Reghide-voorbeeldcode op Sysinternals laat deze techniek zien, die wordt gebruikt door zowel malware als rootkits om registergegevens te verbergen. Gebruik het hulpprogramma Sysinternals RegDelNull om sleutels met ingesloten null-waarden te verwijderen.

Gegevens komen niet overeen tussen Windows-API en onbewerkte hive-gegevens.
Deze discrepantie treedt op als een registerwaarde wordt bijgewerkt terwijl de registerscan wordt uitgevoerd. Waarden die regelmatig worden gewijzigd, zijn tijdstempels zoals de waarde voor de uptime van Microsoft SQL Server, die hieronder wordt weergegeven, en de 'laatste scan'-waarden van de virusscanner. U moet een gerapporteerde waarde onderzoeken om er zeker van te zijn dat het een geldige toepassings- of systeemregisterwaarde is.

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

Rootkit-resources

De volgende websites en boeken zijn bronnen voor meer informatie over rootkits:

Sony, Rootkits en Digital Rights Management zijn te ver gegaan
Lees mark's blogpost over zijn ontdekking en analyse van een Sony rootkit op een van zijn computers.

Rootkits uit het onderzoek
Mark's artikel windows IT Pro Magazine van juni geeft een overzicht van rootkittechnologieën en hoe RootkitRevealer werkt.

Rootkits: De Windows-kernel subverteren
Dit boek van Greg Hoglund en Jamie Butler is de meest uitgebreide behandeling van rootkits die beschikbaar zijn.

www.phrack.org
Deze site slaat het archief op van Phrack, een crackergeoriënteerd tijdschrift waar ontwikkelaars fouten in beveiligingsgerelateerde producten, rootkittechnieken en andere malware-trucs bespreken.

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

Malware: Fighting Malicious Code, door Ed Skoudis en Lenny Zeltser

Windows Internals, 4e editie, door Mark Russinovich en Dave Solomon (het boek gaat niet over rootkits, maar het begrijpen van de Windows-architectuur is handig om rootkits te begrijpen).

DownloadRootkitRevealer(231 KB) downloaden

Nu uitvoeren vanuit Sysinternals Live.