RootkitRevealer v1.71

Von Mark Russinovich

Veröffentlichungsdatum: 1. November 2006

DownloadRootkitRevealer herunterladen(231 KB)
Führen Sie jetzt aus Sysinternals Live aus.

Einführung

RootkitRevealer ist ein erweitertes Rootkit-Erkennungsprogramm. Es wird unter Windows XP (32-Bit) und Windows Server 2003 (32-Bit) ausgeführt, und seine Ausgabe listet Abweichungen bei Registrierungs- und Dateisystem-APIs auf, die auf das Vorhandensein eines Rootkits im Benutzer- oder Kernelmodus hindeuten können. RootkitRevealer erkennt erfolgreich viele persistente Rootkits, einschließlich AFX, Vanquish und HackerDefender. (Hinweis: RootkitRevealer ist nicht für die Erkennung von Rootkits wie Fu vorgesehen, die nicht versuchen, ihre Dateien oder Registrierungsschlüssel zu verbergen.) Wenn Sie es verwenden, um das Vorhandensein eines Rootkits zu identifizieren, teilen Sie uns das bitte mit.

Es gibt keine Befehlszeilenversion mehr, da Ersteller*innen von Schadsoftware damit begonnen haben, den Namen der ausführbaren Datei von RootkitRevealer dazu zu nutzen, die Überprüfung von RootkitRevealer ins Visier zu nehmen. Daher haben wir RootkitRevealer so aktualisiert, dass die Überprüfung jetzt über eine willkürlich benannte Kopie von sich erfolgt, die als Windows-Dienst ausgeführt wird. Diese Art der Ausführung eignet sich nicht für eine Befehlszeilenschnittstelle. Beachten Sie, dass Sie Befehlszeilenoptionen verwenden können, um eine automatische Überprüfung durchzuführen, deren Ergebnisse in einer Datei protokolliert werden. Dies entspricht dem Verhalten der Befehlszeilenversion.

Was ist ein Rootkit?

Der Begriff „Rootkit“ bezeichnet die Mechanismen und Techniken, durch die Schadsoftware (wie Viren, Spyware und Trojaner) versucht, ihre Anwesenheit vor Spyware-Blockern sowie vor Antiviren- und Systemverwaltungsprogrammen zu verbergen. Es gibt mehrere Rootkit-Klassifizierungen – je nachdem, ob die Schadsoftware einen Neustart übersteht und ob sie im Benutzermodus oder im Kernelmodus ausgeführt wird.

Persistente Rootkits
Ein persistentes Rootkit ist ein Rootkit, das mit Schadsoftware zusammenhängt, die bei jedem Systemstart aktiviert wird. Da solche Schadsoftware Code enthält, der automatisch bei jedem Systemstart oder bei der Benutzeranmeldung ausgeführt werden muss, muss Code in einem persistenten Speicher wie der Registrierung oder dem Dateisystem gespeichert sowie eine Methode konfiguriert werden, mit der der Code ohne Benutzereingriff ausgeführt wird.

Arbeitsspeicherbasierte Rootkits
Bei arbeitsspeicherbasierten Rootkits handelt es sich um Schadsoftware, die keinen persistenten Code aufweist und daher einen Neustart nicht übersteht.

Benutzermodus-Rootkits
Es gibt viele Methoden, mit denen Rootkits versuchen, einer Erkennung zu entgehen. Beispielsweise kann ein Benutzermodus-Rootkit alle Aufrufe der Windows-APIs FindFirstFile und FindNextFile abfangen. Diese werden von Hilfsprogrammen für die Dateisystemerkundung genutzt, um den Inhalt von Dateisystemverzeichnissen aufzulisten. Zu diesen Hilfsprogrammen zählen unter anderem der Explorer und die Eingabeaufforderung. Wenn eine Anwendung eine Verzeichnisauflistung durchführt, deren zurückgegebene Ergebnisse die zugehörigen Dateien des Rootkits identifizieren würden, fängt das Rootkit die Ausgabe ab und ändert sie, um die entsprechenden Einträge zu entfernen.

Die native Windows-API fungiert als Schnittstelle zwischen Benutzermodus-Clients und Kernelmodus-Diensten, und ausgefeiltere Benutzermodus-Rootkits fangen Dateisystem-, Registrierungs- und Prozessenumerationsfunktionen der nativen API ab. Dadurch wird die Erkennung durch Überprüfungen verhindert, die die Ergebnisse einer Windows-API-Enumeration mit denen vergleichen, die von einer nativen API-Enumeration zurückgegeben werden.

Kernelmodus-Rootkits
Kernelmodus-Rootkits können noch leistungsfähiger sein, da sie nicht nur die native API im Kernelmodus abfangen, sondern auch direkt Kernelmodus-Datenstrukturen manipulieren können. Eine gängige Technik, um die Existenz eines Schadsoftwareprozesses zu verbergen, besteht darin, den Prozess aus der Liste der aktiven Prozesse des Kernels zu entfernen. Da Prozessverwaltungs-APIs auf den Inhalten der Liste basieren, wird der Schadsoftwareprozess in Prozessverwaltungstools wie Task-Manager oder Process Explorer nicht angezeigt.

Funktionsweise von RootkitRevealer

Da persistente Rootkits API-Ergebnisse ändern, sodass sich eine Systemansicht mit API-Verwendung von der tatsächlichen Ansicht im Speicher unterscheidet, vergleicht RootkitRevealer die Ergebnisse einer Systemüberprüfung auf oberster Ebene mit den Ergebnissen auf niedrigster Ebene. Die höchste Ebene ist die Windows-API, und die niedrigste Ebene ist der Rohinhalt eines Dateisystemvolumes oder einer Registrierungsstruktur. (Eine Strukturdatei ist das Speicherformat der Registrierung auf dem Datenträger.) Daher werden sowohl Benutzermodus- als auch Kernelmodus-Rootkits, die die Windows-API oder die native API so manipulieren, dass sie beispielsweise ihre Existenz aus einer Verzeichnisliste entfernen, von RootkitRevealer als Diskrepanz zwischen den von der Windows-API zurückgegebenen Informationen und den Informationen erkannt, die in der Rohüberprüfung der Dateisystemstrukturen eines FAT- oder NTFS-Volumes vorhanden sind.

Ist es möglich, dass ein Rootkit nicht von RootkitRevealer gefunden wird?
Theoretisch ist es möglich, dass ein Rootkit nicht von RootkitRevealer gefunden wird. Dazu müsste das Rootkit das Lesen von Registrierungsstruktur- oder Dateisystemdaten durch RootkitRevealer abfangen und den Inhalt der Daten so ändern, dass die Registrierungsdaten oder Dateien des Rootkits nicht vorhanden sind. Der dazu nötige Grad an Raffinesse wurde allerdings bislang noch nicht von Rootkits erreicht. Für Änderungen an den Daten bedarf es detaillierter Kenntnisse im Zusammenhang mit den NTFS-, FAT- und Registrierungsstrukturformaten. Außerdem müssten Datenstrukturen so geändert werden, dass das Rootkit verborgen bleibt, aber keine inkonsistenten oder ungültigen Strukturen oder andere Diskrepanzen entstehen, auf die RootkitRevealer aufmerksam machen würde.

Gibt es eine todsichere Möglichkeit, die Anwesenheit eines Rootkits zu erkennen?
Im Allgemeinen nicht innerhalb eines aktiven Systems. Ein Kernelmodus-Rootkit kann sämtliche Aspekte des Systemverhaltens steuern, sodass zurückgegebene Informationen jeder API kompromittiert sein können. Das gilt auch für das Lesen von Rohdaten aus der Registrierungsstruktur und dem Dateisystem durch RootkitRevealer. Obwohl es zuverlässiger ist, eine Online-Systemanalyse und eine Offline-Analyse in einer sicheren Umgebung wie z. B. dem Start in einer CD-basierten Betriebssysteminstallation zu vergleichen, so können Rootkits auf solche Tools abzielen, um der Erkennung zu entgehen.

Fazit: Es wird nie eine universelle Rootkit-Überprüfung geben. Die leistungsstärksten Überprüfungen sind jedoch Überprüfungen mit Online/Offline-Vergleich und Integration in Antivirensoftware.

Verwenden von RootkitRevealer

RootkitRevealer erfordert, dass das Konto, das für die Ausführung verwendet wird, ihm Berechtigungen zum Sichern von Dateien und Verzeichnissen, zum Laden von Treibern und zum Durchführen von Volumewartungsaufgaben (ab Windows XP) zugewiesen hat. Der Gruppe „Administratoren“ sind diese Berechtigungen standardmäßig zugewiesen. Führen Sie RootkitRevealer auf einem System im Leerlauf aus, um falsch positive Ergebnisse zu minimieren.

Um optimale Ergebnisse zu erzielen, schließen Sie alle Anwendungen, und lassen Sie das System während des RootkitRevealer-Überprüfungsprozesses im Leerlauf.

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

Manuelle Überprüfung

Um ein System zu überprüfen, starten Sie das Tool auf dem System, und wählen Sie die Schaltfläche „Überprüfen“ aus. RootkitRevealer überprüft das System, meldet seine Aktionen in einem Statusbereich am unteren Rand des Fensters und gibt Diskrepanzen in der Ausgabeliste an. Folgende Optionen können konfiguriert werden:

  • NTFS-Metadatendateien ausblenden: Diese Option ist standardmäßig aktiviert und sorgt dafür, dass RootkitRevealer keine standardmäßigen NTFS-Metadatendateien anzeigt. Diese sind vor der Windows-API verborgen.
  • Registrierung überprüfen: Diese Option ist standardmäßig aktiviert. Wenn Sie sie deaktivieren, führt RootkitRevealer keine Registrierungsüberprüfung durch.

Starten einer automatischen Überprüfung

RootkitRevealer unterstützt mehrere Optionen für die automatische Überprüfung von Systemen:

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

Parameter BESCHREIBUNG
-a Führt eine automatische Überprüfung durch und wird nach Abschluss beendet.
-c Formatiert die als CSV.
-m Zeigt NTFS-Metadatendateien an.
-r Überprüft die Registrierung nicht.

Beachten Sie, dass sich der Speicherort für die Dateiausgabe auf einem lokalen Volume befinden muss.

Wenn Sie die Option „-c“ angeben, wird kein Status gemeldet, und Diskrepanzen werden im CSV-Format ausgegeben, um sie problemlos in eine Datenbank importieren zu können. Sie können Remotesysteme überprüfen, indem Sie die Überprüfung mit dem Sysinternals-Hilfsprogramm PsExec ausführen. Verwenden Sie dazu eine Befehlszeile wie die folgende:

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

Interpretieren der Ausgabe

Dies ist ein Screenshot von RootkitRevealer, auf dem das Vorhandensein des verbreiteten HackerDefender-Rootkits erkannt wurde. Die Diskrepanzen bei den Registrierungsschlüsseln zeigen, dass die Registrierungsschlüssel, die den Gerätetreiber und die Diensteinstellungen von HackerDefender speichern, für die Windows-API nicht sichtbar sind, aber bei der Überprüfung der Rohdaten der Registrierungsstruktur vorhanden sind. Ebenso sind die mit HackerDefender verknüpften Dateien bei Windows-API-Verzeichnisüberprüfungen nicht sichtbar, aber bei der Überprüfung der Rohdaten des Dateisystems vorhanden.

Rootkit Revealer

Es empfiehlt sich, alle Diskrepanzen zu untersuchen und zu bestimmen, wie wahrscheinlich es ist, dass sie auf das Vorhandensein eines Rootkits hindeuten. Leider gibt es keine definitive Möglichkeit, basierend auf der Ausgabe zu bestimmen, ob ein Rootkit vorhanden ist. Sie sollten aber alle gemeldeten Diskrepanzen untersuchen, um sich zu vergewissern, dass sie erklärbar sind. Wenn Sie feststellen, dass ein Rootkit installiert ist, suchen Sie im Web nach einer Anleitung zum Entfernen des Rootkits. Wenn Sie sich nicht sicher sind, wie Sie ein Rootkit entfernen, sollten Sie die Festplatte des Systems neu formatieren und Windows neu installieren.

Neben den nachstehenden Informationen zu möglichen RootkitRevealer-Diskrepanzen werden im RootkitRevealer-Forum bei Sysinternals erkannte Rootkits und spezifische falsch positive Ergebnisse behandelt.

Vor Windows-API verborgen

Diese Diskrepanzen treten bei den meisten Rootkits auf. Wenn Sie jedoch die Option „NTFS-Metadatendateien ausblenden“ nicht aktiviert haben, ist bei jedem NTFS-Volume mit einer Reihe solcher Einträge zu rechnen, da NTFS seine Metadatendateien wie $MFT und $Secure vor der Windows-API verbirgt. Die auf NTFS-Volumes vorhandenen Metadatendateien variieren je nach NTFS-Version und den NTFS-Features, die für das Volume aktiviert wurden. Es gibt auch Antivirenprodukte wie Kaspersky Antivirus, die Rootkit-Techniken verwenden, um Daten zu verbergen, die sie in alternativen NTFS-Datenströmen speichern. Wenn Sie einen solchen Virenscanner ausführen, wird bei jeder NTFS-Datei die Diskrepanz „Vor Windows-API verborgen“ für einen alternativen Datenstrom angezeigt. RootkitRevealer unterstützt keine Ausgabefilter, da sich Rootkits jegliche Art von Filterung zunutze machen können. Diese Diskrepanz kann außerdem auftreten, wenn während einer Überprüfung eine Datei gelöscht wird.

Hier ist eine Liste der NTFS-Metadatendateien, die ab Windows Server 2003 definiert sind:

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

Zugriff verweigert.
RootkitRevealer verwendet Mechanismen, die den Zugriff auf alle Dateien, Verzeichnisse oder Registrierungsschlüssel auf einem System ermöglichen, und sollte daher niemals diese Diskrepanz melden.

Sichtbar in der Windows-API und im Verzeichnisindex, aber nicht in der MFT.
Sichtbar in der Windows-API, aber nicht in der MFT oder im Verzeichnisindex.
Sichtbar in der Windows-API und in der MFT, aber nicht im Verzeichnisindex.
Sichtbar im Verzeichnisindex, aber nicht in der Windows-API oder in der MFT.

Eine Dateisystemüberprüfung besteht aus drei Komponenten: der Windows-API, der NTFS-Masterdateitabelle (Master File Table, MFT) und den NTFS-Verzeichnisindexstrukturen auf dem Datenträger. Diese Diskrepanzen deuten darauf hin, dass eine Datei nur in einer oder zwei der Überprüfungen auftaucht. Ein häufiger Grund ist, dass eine Datei während der Überprüfungen entweder erstellt oder gelöscht wurde. Hier sehen Sie ein Beispiel für den Diskrepanzbericht von RootkitRevealer für eine Datei, die während der Überprüfung erstellt wurde:

C:\newfile.txt
3/1/2005 5:26 PM
8 Byte
Sichtbar in der Windows-API, aber nicht in der MFT oder im Verzeichnisindex.

Die Windows-API-Länge ist nicht mit den Rohdaten der Struktur konsistent.
Rootkits können versuchen, sich zu verbergen, indem sie die Größe eines Registrierungswerts falsch darstellen, sodass sein Inhalt für die Windows-API nicht sichtbar ist. Eine solche Diskrepanz kann auftreten, wenn sich Registrierungswerte während einer Überprüfung ändern. Sie sollte aber dennoch untersucht werden.

Typkonflikt zwischen Windows-API und Rohdaten der Struktur.
Registrierungswerte haben einen Typ (z. B. DWORD und REG_SZ), und diese Diskrepanz gibt an, dass sich der Typ eines Werts, der über die Windows-API gemeldet wird, vom Typ des Werts in den Rohdaten der Struktur unterscheidet. Ein Rootkit kann seine Daten maskieren, indem es sie z. B. als REG_BINARY-Wert speichert und der Windows-API suggeriert, es handle sich um einen REG_SZ-Wert. Wenn am Anfang der Daten eine 0 gespeichert wird, kann die Windows-API nicht auf nachfolgende Daten zugreifen.

Schlüsselname enthält eingebettete NULL-Werte.
Die Windows-API behandelt Schlüsselnamen als mit NULL endende Zeichenfolgen, während der Kernel sie als gezählte Zeichenfolgen behandelt. Daher ist es möglich, Registrierungsschlüssel zu erstellen, die für das Betriebssystem sichtbar sind und für Registrierungstools wie Regedit nur teilweise sichtbar sind. Der Reghide-Beispielcode bei Sysinternals veranschaulicht diese Technik, die sowohl von Schadsoftware als auch von Rootkits verwendet wird, um Registrierungsdaten zu verbergen. Verwenden Sie das Sysinternals-Hilfsprogramm RegDelNull, um Schlüssel mit eingebetteten NULL-Werten zu löschen.

Datenkonflikt zwischen Windows-API und Rohdaten der Struktur.
Diese Diskrepanz tritt auf, wenn ein Registrierungswert während der Überprüfung der Registrierung aktualisiert wird. Zu den Werten, die sich häufig ändern, gehören Zeitstempel wie der unten gezeigte Uptime-Wert von Microsoft SQL Server sowie Werte für die letzte Überprüfung des Virenscanners. Sie sollten jeden gemeldeten Wert überprüfen, um sicherzustellen, dass es sich dabei um einen gültigen Anwendungs- oder Systemregistrierungswert handelt.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
3/1/2005 4:33 PM
8 Byte

Rootkit-Ressourcen

Die folgenden Websites und Bücher sind Quellen für weitere Informationen zu Rootkits:

Sony, Rootkits and Digital Rights Management Gone Too Far
Lesen Sie Marks Blogeintrag über seine Entdeckung und Analyse eines Sony-Rootkits auf einem seiner Computer.

Unearthing Rootkits
Marks Artikel in der Juni-Ausgabe des Windows IT Pro Magazine gibt einen Überblick über Rootkit-Technologien und die Funktionsweise von RootkitRevealer.

Rootkits: Subverting the Windows Kernel
Dieses Buch von Greg Hoglund und Jamie Butler ist das umfassendste verfügbare Werk zu Rootkits.

www.phrack.org
Diese Website speichert das Archiv von Phrack, einem Cracker-orientierten Magazin, in dem Entwickler*innen über Fehler in sicherheitsrelevanten Produkten sowie über Rootkit-Techniken und andere Schadsoftware-Tricks diskutieren.

The Art of Computer Virus Research and Defense von Peter Szor

Malware: Fighting Malicious Code von Ed Skoudis und Lenny Zeltser

Windows Internals, 4. Edition, von Mark Russinovich und Dave Solomon. (In dem Buch geht es zwar nicht um Rootkits, aber das Verständnis der Windows-Architektur ist hilfreich, um Rootkits besser zu verstehen.)

DownloadRootkitRevealer herunterladen(231 KB)

Führen Sie jetzt aus Sysinternals Live aus.