HiddenKeys = versteckte Registry-Schlüssel, ideal für RootKits
In der Registry von Windows XP werden Registryschlüssel-Pfade, die mehr als 255 Zeichen lang sind, nicht angezeigt. Auf der Suche nach Schädlingen mit langen Namen bleibt dem User das Erkennen solcher Einträge verwehrt, da sie in der Registry nicht sichtbar sind.
So können zum Beispiel Autostart-Einträge in der Registry vorhanden sein, die Windows auch lädt, die für den Anwender jedoch unsichtbar bleiben. Komplette Schlüssel-Pfade blendet die Registry einfach aus.
Wenn der Schlüssel-Pfad (HKEY_LOCAL_MACHINE\SOFTWARE\...) selbst keine 256 Zeichen enthält und trotzdem nicht angezeigt wird, liegt hier der Fehler in der Pfadlänge im Wert des Schlüssels, der zu viel Zeichen enthält.
Die maximale Größe eines Wertes:
Für Windows 95/98/ME = 255 Zeichen
Für Windows 2000 = 260 Zeichen (ANSI) oder 16,383 Zeichen (Unicode)
Für Windows XP und Windows Server 2003 = 16,383 Zeichen (Unicode)
Regedt32 von Windows 2000 zeigt überlange Einträge allerdings an.
Unter Windows XP hilft der Befehl Regedt32 leider wenig, da er lediglich die regedit.exe ausführt.
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.
Um versteckte Registry-Keys anzeigen zu lassen, gibt es die Reg.exe (Screenshot ganz unten).
In der Eingabeaufforderung (cmd) mit dem Befehl reg query "Schlüsselpfad" lassen sich versteckte Einträge anzeigen.
Beispiel Autostart:
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
[ENTER]
Weitere Syntax in der Eingabeaufforderung: reg query /? oder reg /?
Alternative Tools zum Anzeigen der HiddenKeys sind
Sysinternals RootkitRevealer
oder
Sysinternals Autoruns - unter "Options" alle Häkchen entfernen und danach Autoruns neu starten.
Beide Tools sind Freeware.
Vielen Dank an Igor Franchuk, der den Schwachpunkt entdeckt hat.
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2005-08/0808.html
Um Schlüssel mit eingebetteten Nullen zu löschen eignet sich das Sysinternals-Dienstprogramm RegDelNull dafür - Info zu RegDelNull. Dieses Tool löscht auch dann zuverlässig, auch wenn Sie keinen Zugriff mehr auf den Schlüssel haben.
Z.B. der Schlüssel lässt sich nicht öffnen ...
... oder die Berechtigungen lassen sich nicht öffnen.
Wer sicher gehen möchte, dass der RootKit-Scanner zuverlässig arbeitet, der kann sich von Sysinternals eine ungefährliche Beispielanwendung namens Reghide herunterladen (siehe oben). Bei der Ausführung zeigt Reghide den nachfolgenden Hinweis an, während in der Registry der angegebene Test-Schlüssel (HKLM\Software\Systems Internals\Can't touch me!) mit einem speziell versteckten Wert "HiddenValue" abgelegt wird. Sobald das Hinweis-Fenster geschlossen wird, entfernt Reghide auch wieder den Test-Eintrag aus der Registry.
Wird nun die RootKit-Suche ausgeführt, während das Fenster von Reghide geöffnet ist, so sollte das RootKit Tool den versteckten Eintrag zuverlässig aufspüren und im Bericht melden.
Z.B.:
Der Suchlauf nach versteckten Objekten wird begonnen.
HKEY_LOCAL_MACHINE\Software\Systems Internals\Can't touch me!hidden value
[HINWEIS] Der Registrierungseintrag ist nicht sichtbar.
Weblinks
- https://www.wintotal.de/tipparchiv/?id=804 (Tipp: Registrierung per DOS-Shell manipulieren - Tool reg.exe)
- http://www.heise.de/newsticker/meldung/Eintraege-in-Windows-Registry-fuer-Regedit-exe-unsichtbar-3-Update-125617.html (Heise Online: Einträge in Windows-Registry für Regedit.exe unsichtbar)