Windows: GhostHook-Technik umgeht Rootkit-Schutz – Microsoft zuckt die Achseln
Ein raffinierter Trick umgeht eine Schutzfunktion moderner Windows-Systeme: PatchGuard soll eigentlich vor Rootkits schützen, die sich tief im System verankern und fast nicht zu entdecken sind. Einen Patch für dieses Loch gibt es laut Microsoft nicht.
![Windows: GhostHook-Technik umgeht Rootkit-Schutz - und Microsoftzuckt die Achseln](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/2/2/8/0/3/6/rootkit-c304ec60dfaf0683.png)
Rootkits sind eine Art Tarnkappe für Malware. Angreifer verwenden sie, um sich auf einem bereits eroberten System quasi unsichtbar zu machen. Dazu manipulieren sie Windows-System-Funktionen wie die zur Anzeige der vorhandenen Dateien (Hooking). Genau das soll PatchGuard, offiziell Kernel Patch Protection (KPP), verhindern. Er fährt dazwischen, wenn externe Software kritische Komponenten des Windows-Kerns manipuliert – und zwar egal, mit welchen Rechten sie ausgestattet ist.
Kasif Dekel von CyberArk hat nun eine Technik vorgestellt, wie sich dieser Schutz umgehen lässt. Er nutzt dazu eine Hardware-Funktion moderner Intel-CPUs. Mit Intel Processor Trace (PT) kann man bestimmte Informationen über den aktuell abgearbeiteten Code sammeln lassen. PT kommt unter anderem für Performance Analyse und Debugging zum Einsatz.
Die Technik von GhostHook
Das ganze funktioniert so, dass die Intel-CPUs automatisch bestimmte Informationen etwa zu den ausgeführten Sprüngen in einem Puffer speichern. Ist der voll, löst das einen Performance Monitoring Interrupt (PMI) aus. Im PMI-Handler kann das Tracing-Programm die Daten bearbeiten. Der Kern des Problems ist, dass der PatchGuard offenbar diesen PMI-Handler nicht überwacht.
GhostHook beruht letztlich darauf, einen winzigen PT-Puffer anzulegen, der quasi sofort voll läuft. Dann überwacht man die Windows-Funktion, auf die man es abgesehen hat. Das löst den PMI aus und der vom Angreifer spezifizierte PMI-Handler wird ausgeführt. Der kann dann die Windows-Funktion, in deren Kontext er gerade läuft, manipulieren – was der PatchGuard normalem Code nicht durchgehen ließe, selbst wenn der im Kernel-Mode läuft.
Die Reaktionen
CyberArk hat Microsoft über diesen Sachverhalt informiert. Die haben ihn analysiert und erklärt, dass es dazu keinen Patch geben wird. Denn ein Angreifer, der GhostHook nutzen will, muss ein System bereit vollständig kompromittiert haben, sprich: Er muss in der Lage sein, Code im Kernel-Mode auszuführen. Somit stelle dies keinen Anlass für ein Security Update dar. Der Bearbeiter stellt allerdings in Aussicht, dass dieses Problem möglicherweise in einer späteren Windows-Version behoben werden könnte.
Microsoft wird damit einmal mehr von einem fragwürdigen Design-Kompromiss eingeholt, den zwei Hacker namens Skywing und skape bereits 2005 in ihrem Paper Bypassing PatchGuard on Windows x64 offengelegt haben: PatchGuard arbeitet nicht in einer höheren, sondern in derselben Schutz-Zone wie der Code, vor dem er schützen soll. Somit kann PatchGuard prinzipbedingt nicht vor allen Angriffen gegen die Integrität von Windows schützen. Oder anders formuliert: Microsoft kann PatchGuard gar nicht wasserdicht machen und hatte das auch nie vor. Ob uns deshalb jetzt Rootkits drohen, die GhostHook nutzen, wird sich zeigen. Es wäre keineswegs das erste Mal, dass Malware PatchGuard umgeht.
Die grundsätzliche Funktionsweise von und die Bedrohung durch Rootkits erläutert übrigens eine Serie von heise-Security-Artikeln zu Windows Rootkits 2005 (ju)