Skip to main content

RootkitRevealer 1.71

Von Bryce Cogswell und Mark Russinovich

Veröffentlicht: 01. Nov 2006

Einführung

RootkitRevealer ist ein leistungsfähiges Dienstprogramm zur Rootkiterkennung. Es wird unter Windows NT 4.0 und höher ausgeführt und seine Ausgabe listet Registrierungs- und Dateisystem-API-Unstimmigkeiten auf, die die Anwesenheit eines Benutzermodus- oder Kernelmodusrootkits anzeigen können. RootkitRevealer erkennt erfolgreich viele beharrliche Rootkits, darunter AFX, Vanquish und HackerDefender. (Hinweis: RootkitRevealer ist nicht dazu gedacht, Rootkits wie Fu zu erkennen, die nicht versuchen, ihre Dateien oder Registrierungsschlüssel zu verbergen.) Wenn Sie es dazu verwenden, die Anwesenheit eines Rootkits zu identifizieren, teilen Sie uns das bitte mit.

Der Grund dafür, dass es keine Befehlszeilenversion mehr gibt, ist Folgender: Die Autoren von Malware haben angefangen, den Scan von RootkitRevealer über den Namen von dessen ausführbarer Datei anzugreifen. Wir haben daher RootkitRevealer so aktualisiert, dass der Scan von einer zufällig benannten Kopie des Programms in Form eines Windows-Diensts ausgeführt wird. Diese Art der Ausführung eignet sich nicht für eine Befehlszeilenschnittstelle. Sie können Befehlszeilenoptionen verwenden, um einen automatischen Scan mit Ergebnissen auszuführen, die in einer Datei protokolliert werden, was dem Verhalten der Befehlszeilenversion entspricht.

Zum Seitenanfang

Was ist ein Rootkit?

Der Begriff Rootkit wird verwendet, um die Mechanismen und Verfahren zu beschreiben, durch die Malware, einschließlich Viren, Spyware und Trojaner, versuchen, ihre Anwesenheit vor Spywareblockern, Antivirus- und Systemverwaltungsdienstprogrammen zu verbergen. Es gibt mehrere Rootkitklassifizierungen, die davon abhängen, ob die Malware einen Neustart übersteht und ob es im Benutzermodus oder Kernelmodus ausgeführt wird.

Beständige Rootkits

Ein beständiges Rootkit ist Malware, die bei jedem einzelnen Systemstart aktiviert wird. Weil solche Malware Code enthält, der bei jedem Systemstart oder bei jeder Benutzeranmeldung automatisch ausgeführt werden muss, müssen sie den Code in einem permanenten Speicher, wie z. B. in der Registrierung oder im Dateisystem, speichern und eine Methode konfigurieren, damit der Code ohne einen Benutzereingriff ausgeführt wird.

Speicherbasierte Rootkits
Bei einem speicherbasierten Rootkit handelt es sich um Malware, die keinen dauerhaften Code enthält und daher einen Neustart nicht übersteht.

Benutzermodusrootkits
Es gibt viele Methoden, mit denen Rootkits versuchen, eine Erkennung zu vermeiden. Zum Beispiel könnte ein Benutzermodusrootkit alle Aufrufe von Windows FindFirstFile/FindNextFile-APIs abfangen, die von Dienstprogrammen zur Dateisystemuntersuchung, einschließlich von Explorer und der Eingabeaufforderung, verwendet werden, um den Inhalt von Dateisystemverzeichnissen zu spezifizieren. Wenn eine Anwendung eine Verzeichnisauflistung durchführt, deren Ergebnis normalerweise Einträge enthalten würde, durch die sich zum Rootkit gehörende Dateien identifizieren lassen, fängt das Rootkit die Ausgabe ab und entfernt diese Einträge.

Die systemeigene API von Windows dient als Schnittstelle zwischen Benutzermodusclients und Kernelmodusdiensten. Fortgeschrittene Benutzermodusrootkits hören das Dateisystem, die Registrierung und die Prozessenumerationsfunktionen der systemeigenen API ab. Dies verhindert ihre Erkennung durch Scanner, die die Ergebnisse einer Windows-API-Enumeration mit derjenigen vergleichen, die von einer systemeigenen API-Enumeration zurückgegeben werden.

Kernelmodusrootkits
Kernelmodusrootkits können sogar leistungsfähiger sein, da sie nicht nur die systemeigene API im Kernelmodus abfangen, sondern auch Kernelmodusdatenstrukturen direkt manipulieren können. Häufig wird die Anwesenheit eines Malwareprozesses verborgen, indem der Vorgang von der Kernelliste der aktiven Prozesse entfernt wird. Da sich Prozessverwaltungs-APIs auf den Inhalt der Liste verlassen, wird der Prozess der Malware in Prozessverwaltungstools wie Task-Manager oder Process Explorer nicht angezeigt.

Zum Seitenanfang

Funktionsweise von RootkitRevealer

Da dauerhafte Rootkits API-Ergebnisse ändern, sodass eine Systemansicht unter Einsatz von APIs sich von der eigentlichen Ansicht im Speicher unterscheidet, vergleicht RootkitRevealer die Ergebnisse eines Systemscans auf höchster Ebene mit denen auf der niedrigsten Ebene. Die höchste Ebene ist die Windows-API, die niedrigste Ebene ist der Rohinhalt eines Dateisystemvolumes oder einer Registrierungsstruktur. (Eine Strukturdatei ist das Datenträgerspeicherformat der Registrierung.) Folglich werden Rootkits (unabhängig davon, ob Benutzermodus oder Kernelmodus), die die Windows-API oder die systemeigene API manipulieren, um ihre Anwesenheit z. B. aus einer Verzeichnisliste zu entfernen, von RootkitRevealer als Unstimmigkeit zwischen den Informationen, die von der Windows-API zurückgegeben werden, und den Informationen im Rohscan von Dateisystemstrukturen eines FAT- oder NTFS-Volumes angesehen.

Kann sich ein Rootkit vor RootkitRevealer verstecken?
Es ist theoretisch möglich, dass ein Rootkit von RootkitRevealer nicht erkannt wird. Das hieße, dass das, was RootkitRevealer von der Registrierungsstruktur oder von den Dateisystemdaten abliest, abgefangen und geändert wird, sodass die Registrierungsdaten oder Dateien des Rootkits nicht zu sehen sind. Dies würde jedoch eine derzeit nicht existierende Raffinesse erfordern. Eine Änderung der Daten würde sehr gute Kenntnisse über NTFS, FAT und die Formate der Registrierungsstruktur erfordern. Außerdem müssten die Datenstrukturen so geändert werden, dass sie das Rootkit ausblenden, dabei jedoch keine inkonsistenten oder ungültigen Strukturen oder als Nebenwirkung auftretende Unstimmigkeiten verursachen, die von RootkitRevealer aufgezeigt würden.

Gibt es eine sichere Methode zur Feststellung der Anwesenheit eines Rootkits?

Im Allgemeinen gibt es keine solche Möglichkeit innerhalb eines laufenden Systems. Ein Kernelmodusrootkit kann einen beliebigen Aspekt des Systemverhaltens steuern. Informationen, die von einer beliebigen API, einschließlich der von RootkitRevealer ausgeführten Rohlesevorgänge der Registrierungsstruktur und der Dateisystemdaten, zurückgegeben werden, können demnach beschädigt sein. Das Vergleichen eines Systemonlinescans und eines Offlinescans in einer sicheren Umgebung, wie z. B. ein Neustart in eine CD-basierte Betriebssysteminstallation, ist zwar zuverlässiger, doch Rootkits können auf solche Tools abzielen, um nicht erkannt zu werden.

Im Endeffekt wird es niemals einen universalen Rootkitscanner geben, doch die leistungsfähigsten Scanner sind solche, die ihren Online-/Offlinevergleich mit Antivirus kombinieren.

Zum Seitenanfang

Verwendung von RootkitRevealer

Zur Verwendung von RootkitRevealer muss der Benutzer über Berechtigungen zur Sicherung von Dateien und Verzeichnissen, zum Laden von Treibern und zur Durchführung von Volumeverwaltungsaufgaben verfügen (unter Windows XP und höher). Diese Berechtigungen sind der Administratorengruppe standardmäßig zugewiesen. Zur Vermeidung von falschen Positivmeldungen wird RootkitRevealer auf einem System in Leerlauf ausgeführt.

Zum Erzielen der besten Ergebnisse beenden Sie alle Anwendungen und führen das System im Leerlauf weiter, während RootkitRevealer seinen Scanvorgang durchführt.

Bei Fragen oder Problemen besuchen Sie das RootkitRevealer-Forum von Sysinternals.

Zum Seitenanfang

Manueller Scan

Zum Scannen eines Systems starten Sie das Programm auf dem System, und klicken Sie auf die Schaltfläche „Scan“. RootkitRevealer scannt das System und zeichnet seine Aktionen in einem Statusbereich unten im Fenster auf, wobei die festgestellten Unstimmigkeiten in der Ausgabeliste aufgeführt werden. Dies sind die Optionen, die Sie konfigurieren können:

  • Hide NTFS Metadata Files: Diese Option ist standardmäßig aktiviert und dient dazu, dass RootkitRevealer die Standard-NTFS-Metadatendateien, die von der Windows-API ausgeblendet werden, nicht anzeigt.
  • Scan Registry:Diese Option ist standardmäßig aktiviert. Wenn Sie diese Option deaktivieren, führt RootkitRevealer keinen Registrierungsscan durch.

Zum Seitenanfang

Starten eines automatischen Scans

RootkitRevealer bietet bei automatischen Systemscans mehrere Optionen:

Verwendung: rootkitrevealer [-a [-c] [-m] [-r] Ausgabedatei]

-a

Automatisch scannen und Programm nach Abschluss beenden

-c

Ausgabedatei im CSV-Format ausgeben

-m

NTFS-Metadatendateien anzeigen

-r

Registrierung nicht scannen

Die Ausgabedatei muss sich auf einem lokalen Volume befinden.

Wenn Sie die Option -c angeben, erfolgt keine Fortschrittsangabe. Unstimmigkeiten werden im CSV-Format gespeichert, die sich leichter in eine Datenbank importieren lassen. Remotesysteme können gescannt werden, indem das Programm mit dem Sysinternals-Dienstprogramm PsExec ausgeführt wird. Beispielsbefehlszeile hierfür:

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

Zum Seitenanfang

Interpretieren der Ausgabe

Die nachfolgende Abbildung zeigt einen Screenshot von RootkitRevealer, in dem die Anwesenheit des bekannten HackerDefender-Rootkits aufgezeigt wird. Es ist zu sehen, dass die Registrierungsschlüssel des Gerätetreibers und der Diensteinstellungen von HackerDefender für die Windows-API nicht sichtbar sind, jedoch beim Rohscan der Registrierungsstrukturdaten entdeckt wurden. Gleichermaßen sind die dem Hackerdefender zugeordneten Dateien beim Windows-API-Verzeichnisscan nicht sichtbar, wurden jedoch beim Scan der Dateisystemrohdaten gefunden.

Es empfiehlt sich, alle Unstimmigkeiten auf die Wahrscheinlichkeit der Anwesenheit eines Rootkits hin zu untersuchen. Leider gibt es keine endgültige Möglichkeit, um aufgrund der Ausgabe zu bestimmen, ob ein Rootkit anwesend ist. Sie sollten jedoch alle gemeldeten Unstimmigkeiten untersuchen, um sicherzustellen, dass sie erklärbar sind. Wenn Sie feststellen, dass ein Rootkit installiert wurde, suchen Sie im Internet nach Entfernungsanweisungen. Wenn Sie sich nicht sicher sind, wie Sie ein Rootkit entfernen, sollten Sie die Festplatte des Systems neu formatieren und Windows neu installieren.

Zusätzlich zu den unten angegebenen Informationen zu potenziellen RootkitRevealer-Unstimmigkeiten werden im RootkitRevealer-Forum von Sysinternals erkannte Rootkits und bestimmte falsche Positivmeldungen besprochen.

Zum Seitenanfang

Hidden from Windows API

Bei den meisten Rootkits wird gemeldet, dass sie für die Windows-API nicht sichtbar sind. Wenn Sie jedoch die NTFS-Metadatendateien nicht überprüft haben, ist zu erwarten, dass Sie eine Anzahl von solchen Einträgen auf jedem beliebigen NTFS-Volume finden, da NTFS seine Metadatendateien, wie z. B. $MFT und $Secure, vor der Windows-API versteckt. Die Metadatendateien auf NTFS-Volumes unterscheiden im Hinblick auf die NTFS-Version und -Funktionen, die auf dem Volume aktiviert wurden. Es gibt auch Antivirusprodukte, wie z. B. Kaspersky Antivirus, bei denen Rootkitverfahren zum Ausblenden von in alternativen NTFS-Datenströmen gespeicherten Daten eingesetzt werden. Wenn Sie solch einen Virusscanner ausführen, wird für den alternativen Datenstrom einer jeden NTFS-Datei die Meldung „Hidden from Windows API” angezeigt. RootkitRevealer unterstützt keine Ausgabefilter, weil Rootkits jede beliebige Filterung ausnutzen können. Abschließend sei Folgendes angemerkt: Wenn eine Datei während eines Scans gelöscht wird, kann es sein, dass Ihnen dies als eine Unstimmigkeit angezeigt wird.

Dies ist eine Liste von NTFS-Metadatendateien, die ab Windows Server 2003 definiert werden:

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

Access is Denied

Diese Meldung dürfte eigentlich nie auftreten, da RootkitRevealer Mechanismen verwendet, die ihm ermöglichen, auf jede Datei, jedes Verzeichnis und jeden Registrierungsschlüssel auf einem System zuzugreifen.

Visible in Windows API, directory index, but not in MFT.
Visible in Windows API, but not in MFT or directory index.
Visible in Windows API, MFT, but not in directory index.
Visible in directory index, but not Windows API or MFT.

Ein Dateisystemscan untersucht drei Komponenten: Windows-API, NTFS-Hauptdateitabelle (MFT) und Verzeichnisindexstrukturen des NTFS-Datenträgers. Die oben genannten Meldungen zeigen an, dass eine Datei in nur einer oder zwei Komponenten erscheint. Ein häufiger Grund ist, dass eine Datei während des Scans erstellt oder gelöscht wird. Beispiel eines Unstimmigkeitsberichts von RootkitRevealer für eine Datei, die während des Scanvorgangs erstellt wurde:

C:\newfile.txt
01.03.05 17:26
8 Byte
Visible in Windows API, but not in MFT or directory.

Die Länge der Windows-API stimmt nicht mit den Rohstrukturdaten überein.

Rootkits können versuchen, sich durch die falsche Darstellung der Registrierungswertgröße zu verstecken, damit der Inhalt für Windows-API nicht sichtbar ist. Solch eine Unstimmigkeit sollte untersucht werden, auch wenn sie eine Folge von Registrierungswerten sein kann, die sich während eines Scans ändern.

Type mismatch between Windows API and raw hive data

Registrierungswerte werden nach Typ klassifiziert, wie z. B. DWORD und REG_SZ. Die Meldung einer Typenunstimmigkeit weist darauf hin, dass der Typ eines Werts, wie er über die Windows-API gemeldet wird, von den Rohstrukturdaten abweicht. So kann ein Rootkit beispielsweise seine Daten tarnen, indem es sie als REG_BINARY-Wert speichert, der Windows-API jedoch vormacht, dass es sich um einen REG_SZ-Wert handelt. Steht am Anfang der Daten 0, kann die Windows-API nicht mehr auf nachfolgende Daten zugreifen.

Key name contains embedded nulls

Die Windows-API behandelt Schlüsselnamen als mit Nullen endende Zeichenfolgen, während der Kernel sie als gezählte Zeichenfolgen behandelt. Folglich ist es möglich, Registrierungsschlüssel zu erstellen, die im Betriebssystem sichtbar sind, für Registrierungstools wie Regedit jedoch nur teilweise sichtbar sind. Der Reghide-Beispielcode von Sysinternals führt dieses Verfahren vor, das sowohl von Malware als auch von Rootkits dazu verwendet wird, um Registrierungsdaten auszublenden. Verwenden Sie das Sysinternals-Dienstprogramm Regdellnull, um Schlüssel mit eingebetteten Nullen zu löschen.

Data mismatch between Windows API and raw hive data

Eine Unstimmigkeit zwischen den Windows-API- und den Registrierungsstrukturrohdaten wird dann gemeldet, wenn ein Registrierungswert aktualisiert wird, während der Registrierungsscan gerade ausgeführt wird. Werte, die sich oft ändern, umfassen Zeitstempel, wie z. B. den unten angezeigten Betriebszeitwert von Microsoft SQL Server und die Angabe des letzten Virenscans. Es empfiehlt sich, alle gemeldeten Werte zu untersuchen, um sicherzustellen, dass es sich um eine gültige Anwendung oder einen gültigen Systemregistrierungswert handelt.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
01.03.05 16:33
8 Byte

Zum Seitenanfang

Rootkitressourcen

Weitere Informationen zu Rootkits finden Sie auf den folgenden Websites und in den folgenden Büchern:

Sony, Rootkits und die Auswüchse der digitalen Rechteverwaltung
Lesen Sie den Blogeintrag von Mark Russinovich über seine Entdeckung und Analyse eines Sony-Rootkits auf einem seiner Computer.

Rootkits unter der Lupe
Der Artikel von Mark Russinovich, den Sie in der Juni-Ausgabe des Magazins „Windows IT Pro“ finden, bietet Ihnen einen Überblick über Rootkittechnologien und die Funktionsweise von RootkitRevealer.

Rootkits: Subverting the Windows Kernel
Dieses Buch von Greg Hoglund und Jamie Butler ist die umfassendste Untersuchung verfügbarer Rootkits.

www.phrack.org
Auf dieser Website wird das Archiv von Phrack gespeichert, ein hackerorientiertes Magazin, in dem Entwickler Fehler in sicherheitsbezogenen Produkten, Rootkitverfahren und andere Tricks von Malware erläutern.

research.microsoft.com/rootkit/
Dies ist die Rootkithomepage von Microsoft Research, auf der Microsoft Artikel und Informationen über seine Maßnahmen zur Bekämpfung von Rootkits veröffentlicht.

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

Malware: Fighting Malicious Code, von Ed Skoudis und Lenny Zeltser

Windows Internals, 4th Edition, Mark Russinovich und Dave Solomon (das Buch handelt zwar nicht von Rootkits, doch Kenntnisse der Windows-Architektur helfen, Rootkits besser zu verstehen).


Zum Seitenanfang