DriverJack ist ein Tool, das entwickelt wurde, um einen anfälligen Treiber durch den Missbrauch weniger bekannter NTFS-Techniken zu laden. Diese Methoden umgehen die Registrierung eines Treiberdienstes auf dem System, indem sie einen vorhandenen Dienst kapern und auch den im Treiberladeereignis angezeigten Bildpfad fälschen. Um das Vorhandensein eines anfälligen Treibers noch weiter zu verschleiern, missbraucht der Angriff auch eine schreibgeschützte Umgehung des emulierten Dateisystems, um den Inhalt einer Treiberdatei auf einer gemounteten ISO auszutauschen, bevor sie geladen wird.
DriverJack missbraucht die Möglichkeit, auf emulierten Dateisystemen gemountete Dateien neu auf RW-Seiten zuzuordnen, um deren Inhalte zu überschreiben. Dieser RO-Bypass ist in IoCdfsLib implementiert.
Sobald die ISO gemountet ist, wird der Angriff fortgesetzt, indem ein Diensttreiber ausgewählt wird, der gestartet oder gestoppt werden kann, oder einer, der ausgelöst werden kann und für den Administratorrechte erforderlich sind, sofern er nicht falsch konfiguriert ist.
ISO-Montage und Treiberauswahl
Den Treiberpfad kapern
Diese Technik nutzt die Fähigkeit eines Installationsprogramms aus, direkt auf das Verzeichnis C:WindowsSystem32drivers
zuzugreifen, wodurch ein schädlicher symbolischer Link dort platziert werden kann. Der symbolische Link wird vom Betriebssystem vorrangig verarbeitet, was dazu führt, dass der schädliche Treiber geladen wird, wenn der Dienst neu gestartet wird.
Wichtige Schritte:
NtLoadDriver
Funktion normalisiert den NT-Pfad des symbolischen Links. Diese Methode wurde in Zusammenarbeit mit jonasLyk vom Hackerkollektiv Secret Club entwickelt und beinhaltet die Umleitung des symbolischen Links DeviceBootDevice
NT, einem Teil des Pfads, von dem aus eine Treiberbinärdatei geladen wird. Dies ermöglicht das Verstecken eines Rootkits im System.
Schritte:
BootDevice
Symlink-Ziel.BootDevice
Symlink, um auf die gemountete ISO zu verweisen.BootDevice
Symlink-Ziel wieder her.Diese Methode wurde von Techniken inspiriert, die im unDefender-Projekt zum Deaktivieren des Windows Defender-Dienstes und -Treibers verwendet wurden. Das Load Driver-Ereignis zeigt weiterhin den tatsächlichen Pfad des zu ladenden Treibers an und zeigt auf den ISO-Mountpoint.
Obwohl diese Technik weithin bekannt ist, wird sie aufgrund der Möglichkeit einer Systeminstabilität selten eingesetzt. Dabei wird der der BootPartition
zugewiesene Laufwerksbuchstabe vorübergehend geändert, wodurch der Treiberladevorgang dazu verleitet wird, auf ein anderes Laufwerk zuzugreifen. In Kombination mit dem zuvor erläuterten NT Symlink Abuse kann diese Technik den Pfad des geladenen Treibers vollständig verschleiern und so die Erkennung durch SysMon und andere Überwachungstools umgehen.
DriverJack demonstriert einen weiteren, unkonventionellen Weg zum Laden anfälliger Treiber, der CDFS-emulierte Dateisysteme und weniger bekannte symbolische NTFS-Link-Eigenschaften nutzt.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der LIZENZ-Datei.