RootkitRevealer v1.71

Door Mark Russinovich

Gepubliceerd: 1 november 2006

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

Inleiding

RootkitRevealer is een geavanceerd hulpprogramma voor rootkitdetectie. Het wordt uitgevoerd op Windows XP (32-bits) en Windows Server 2003 (32-bits) en de uitvoerlijsten Register- en bestandssysteem-API-discrepanties die kunnen duiden 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 geen opdrachtregelversie meer is, is dat malwareauteurs zijn begonnen met het scannen van RootkitRevealer met behulp van de naam van het uitvoerbare bestand. 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 verleidelijk voor een opdrachtregelinterface. U kunt opdrachtregelopties 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 waarbij malware, inclusief virussen, spyware en trojans, proberen hun aanwezigheid te verbergen tegen spywareblokkeringen, antivirus- en systeembeheerprogramma's. Er zijn verschillende rootkit-classificaties, 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 gekoppeld aan malware die wordt geactiveerd telkens wanneer het systeem wordt opgestart. Omdat dergelijke malware code bevat die automatisch moet worden uitgevoerd elk systeem wordt gestart 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 dus niet overleeft een herstart.

Rootkits in de gebruikersmodus
Er zijn veel methoden waarmee rootkits proberen detectie 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 bestandssysteemverkenning, waaronder Explorer 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. Hiermee voorkomt u dat de detectie wordt uitgevoerd door scanners waarmee de resultaten van een Windows-API-inventarisatie worden vergeleken met de resultaten die worden geretourneerd door een systeemeigen API-inventarisatie.

Rootkits in kernelmodus
Rootkits in de kernelmodus kunnen nog krachtiger zijn, omdat ze niet alleen de systeemeigen API kunnen onderscheppen in de kernelmodus, maar ze kunnen ook rechtstreeks gegevensstructuren in de kernelmodus bewerken. Een veelvoorkomende 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. Aangezien procesbeheer-API's afhankelijk zijn van de inhoud van de lijst, wordt het malwareproces niet weergegeven in hulpprogramma's voor procesbeheer, zoals Taakbeheer of Process Explorer.

Hoe RootkitRevealer werkt

Omdat permanente rootkits werken door API-resultaten te wijzigen zodat een systeemweergave met behulp van 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 Register hive (een Hive-bestand is de opslagindeling van het register op schijf). Rootkits, ongeacht of de gebruikersmodus of kernelmodus, die de Windows-API of systeemeigen API manipuleren om hun aanwezigheid te verwijderen uit een mapvermelding, wordt bijvoorbeeld door RootkitRevealer gezien als een discrepantie tussen de informatie die wordt geretourneerd door de Windows-API en die wordt gezien in de onbewerkte scan van de bestandssysteemstructuren van een FAT- of NTFS-volume.

Kan een Rootkit verbergen voor RootkitRevealer
Het is theoretisch mogelijk dat een rootkit zich verbergt voor RootkitRevealer. Hiervoor moet rootkitRevealer's leesbewerkingen van register-hive- of bestandssysteemgegevens worden onderschept en de inhoud van de gegevens worden gewijzigd, zodat de registergegevens of -bestanden van de rootkit niet aanwezig zijn. Dit vereist echter een niveau van verfijning dat niet in rootkits tot op heden wordt gezien. Voor wijzigingen in de gegevens is zowel een intieme kennis van de NTFS-, FAT- en Registry Hive-indelingen vereist, plus de mogelijkheid om gegevensstructuren te wijzigen, zodat ze de rootkit verbergen, maar geen inconsistente of ongeldige structuren of afwijkingen met side-effect veroorzaken die worden gemarkeerd door RootkitRevealer.

Is er een manier om te weten te komen over de aanwezigheid van een rootkit
Over 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 wordt geretourneerd door een API, met inbegrip van de onbewerkte leesbewerkingen van register hive- en bestandssysteemgegevens die worden uitgevoerd door RootkitRevealer, kan worden aangetast. Hoewel het vergelijken van een on-line scan van een systeem en een off-line scan vanuit een beveiligde omgeving, zoals opstarten in een installatie van een cd-besturingssysteem, betrouwbaarder is, kunnen rootkits zich richten op dergelijke hulpprogramma's om detectie door zelfs hen te omzeilen.

De onderste regel is dat er nooit een universele rootkit-scanner zal zijn, maar de krachtigste scanners zijn on-line/off-line vergelijkingsscanners die integreren met antivirus.

RootkitRevealer gebruiken

RootkitRevealer vereist dat het account waaruit de uitvoering is toegewezen, de back-upbestanden en mappen, laadstuurprogramma's en volumeonderhoudstaken uitvoeren (op Windows XP en hoger) bevoegdheden. Deze bevoegdheden worden standaard toegewezen aan de groep Beheer istrators. Als u fout-positieven wilt minimaliseren, voert u RootkitRevealer uit op een niet-actief systeem.

Voor de beste resultaten sluit u alle toepassingen af en houdt u het systeem inactief tijdens het scanproces rootkitRevealer.

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

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 de acties in een statusgebied onder aan het venster en noteert verschillen in de uitvoerlijst. De opties die u kunt configureren:

  • NTFS-metagegevensbestanden verbergen: deze optie is standaard ingeschakeld en bevat RootkitRevealer geen standaard NTFS-metagegevensbestanden, die zijn verborgen voor de Windows-API.
  • Scanregister: deze optie is standaard ingeschakeld. Als u de selectie ongedaan maakt, voert RootkitRevealer geen registerscan uit.

Een automatische scan starten

RootkitRevealer ondersteunt verschillende opties voor systemen voor automatisch scannen:

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

Parameter Description
-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 uitvoerlocatie van het bestand zich op een lokaal volume moet bevinden.

Als u de optie -c opgeeft, worden de voortgang niet weergegeven en worden verschillen afgedrukt in CSV-indeling voor eenvoudige import in een database. U kunt scans van externe systemen uitvoeren door deze uit te voeren met het hulpprogramma Sysinternals PsExec met behulp van een opdrachtregel zoals hieronder:

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 verschillen in registersleutels 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 register hive-gegevens. Op dezelfde manier zijn de aan HackerDefender gekoppelde bestanden niet zichtbaar voor scans van Windows API-directory's, maar zijn aanwezig in de scan van de onbewerkte bestandssysteemgegevens.

Rootkit Revealer

U moet alle discrepanties onderzoeken en de waarschijnlijkheid bepalen dat deze wijzen op de aanwezigheid van een rootkit. Helaas is er geen definitieve manier om te bepalen, op basis van de uitvoer, als er een rootkit aanwezig is, maar moet u alle gerapporteerde discrepanties onderzoeken om ervoor te zorgen dat ze kunnen worden uitgelegd. Als u vaststelt dat u een rootkit hebt geïnstalleerd, zoekt u op het web naar instructies voor het verwijderen. Als u niet zeker weet hoe u een rootkit verwijdert, moet u de harde schijf van het systeem opnieuw opmaken en Windows opnieuw installeren.

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

Verborgen voor Windows-API

Deze verschillen zijn de verschillen die worden getoond door de meeste rootkits; Als u echter niet de NTFS-metagegevensbestanden verbergen hebt gecontroleerd, zou u een aantal van dergelijke vermeldingen op een NTFS-volume moeten zien, omdat NTFS de metagegevensbestanden, zoals $MFT en $Secure, uit 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 Antivirus Antivirus, die rootkittechnieken gebruiken om gegevens te verbergen die ze opslaan in alternatieve NTFS-gegevensstromen. Als u een dergelijke virusscanner uitvoert, ziet u een verborgen windows-API-discrepantie voor een alternatieve gegevensstroom op elk NTFS-bestand. RootkitRevealer biedt geen ondersteuning voor uitvoerfilters omdat rootkits kunnen profiteren van filters. Als een bestand tijdens een scan wordt verwijderd, ziet u mogelijk ook deze discrepantie.

Dit is een lijst met NTFS-metagegevensbestanden die zijn gedefinieerd als 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 is geweigerd.
RootkitRevealer mag deze discrepantie nooit rapporteren, omdat er mechanismen worden gebruikt om toegang te krijgen tot bestanden, mappen of registersleutels op een systeem.

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

Een bestandssysteemscan bestaat uit drie onderdelen: de Windows-API, de NTFS Master File Table (MFT) en de indexstructuren van ntfs op schijfmap. Deze verschillen geven aan dat een bestand slechts in één 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
1-3-2005 17:26
8 bytes
Zichtbaar in De Windows-API, maar niet in de MFT- of directory-index.

De lengte van de Windows-API is niet consistent met onbewerkte hive-gegevens.
Rootkits kunnen proberen zichzelf te verbergen door de grootte van een registerwaarde verkeerd weer te geven, zodat de inhoud ervan niet zichtbaar is voor de Windows-API. U moet een dergelijke discrepantie onderzoeken, maar het kan ook 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 die van de onbewerkte hive-gegevens. Een rootkit kan de gegevens maskeren door deze op te slaan als een REG_BINARY waarde, bijvoorbeeld door de Windows-API te laten geloven dat deze een REG_SZ waarde is; als er aan het begin van de gegevens een 0 wordt opgeslagen, heeft de Windows-API geen toegang tot volgende gegevens.

Sleutelnaam bevat ingesloten null-waarden.
De Windows-API behandelt sleutelnamen als null-beëindigde tekenreeksen, terwijl de kernel ze behandelt als getelde tekenreeksen. Het is dus mogelijk registersleutels te maken die zichtbaar zijn voor het besturingssysteem, maar slechts gedeeltelijk zichtbaar zijn voor registerhulpprogramma's zoals Regedit. De Reghide-voorbeeldcode op Sysinternals demonstreert deze techniek, 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 uptimewaarde van Microsoft SQL Server, die hieronder worden weergegeven en de 'laatste scan'-waarden van de virusscanner. U moet een gerapporteerde waarde onderzoeken om ervoor te zorgen dat het een geldige toepassings- of systeemregisterwaarde is.

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

Rootkit-resources

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

Sony, Rootkits en Digital Rights Management Too Far
Lees mark's blogbericht over zijn ontdekking en analyse van een Sony rootkit op een van zijn computers.

Rootkits opheffen
Mark's June Windows IT Pro Magazine artikel biedt een overzicht van rootkit technologieën en hoe RootkitRevealer werkt.

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

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

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

Malware: Schadelijke code bestrijden, door Ed Skoudis en Listen Zeltser

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

DownloadRootkitRevealer downloaden(231 KB)

Nu uitvoeren vanuit Sysinternals Live.