
Windows-Rootkit für Intel x64 mit 25+ Funktionen, das Rootkit-Techniken demonstriert, die mit allen Windows 10- und Windows 11-Versionen kompatibel sind.
Nidhogg ist ein multifunktionales Rootkit, das die Vielfalt der Operationen demonstriert, die aus dem Kernel-Space durchgeführt werden können. Das Ziel von Nidhogg ist es, ein All-in-One- und benutzerfreundliches Rootkit mit zahlreichen hilfreichen Funktionalitäten für Operationen bereitzustellen. Darüber hinaus lässt es sich leicht in Ihr C2-Framework integrieren.
Nidhogg funktioniert auf jeder x64-Version von Windows 10 und Windows 11.
Dieses Repository enthält einen Kernel-Treiber mit einem C++-Programm zur Kommunikation mit ihm.
Wenn Sie mehr erfahren möchten, werfen Sie einen Blick auf das Wiki für eine ausführliche Erklärung.
[!IMPORTANT]
Alle Funktionen wurden bis einschließlich Windows 11 25H2 vollständig getestet. Sollten Sie auf ein Problem stoßen, eröffnen Sie bitte ein Issue, nachdem Sie überprüft haben, dass nicht bereits ein offenes Issue existiert.
[!WARNING]
Beim reflektiven Laden werden standardmäßig einige Funktionen deaktiviert, und das automatische saubere Entladen von versteckten Modulen sowie das Entfernen von Callbacks funktioniert nicht. Es liegt in der Verantwortung des Benutzers, sicherzustellen, dass versteckte Module manuell entladen und Callbacks entfernt werden, wenn sich der Zieltreiber entlädt. Andernfalls kann dies zu Systeminstabilität oder Abstürzen führen.
Seit Version v0.3 kann Nidhogg reflektiv mit kdmapper geladen werden. Da PatchGuard jedoch automatisch ausgelöst wird, wenn der Treiber Callbacks registriert, registriert Nidhogg keine Callbacks. Das bedeutet, dass beim reflektiven Laden des Treibers diese Funktionen standardmäßig deaktiviert sind:
Seit Version v2.0 verfügt Nidhogg über eine neue Fähigkeit namens "Nidhogg Object File" (NOF) für die Ausführung von COFF-Dateien im Kernel-Modus. Das bedeutet, dass Sie Ihren eigenen Kernel-Modus-Code schreiben und in eine COFF-Datei kompilieren können, die Zugriff auf folgende Elemente hat:
Diese Funktion ist nicht kompatibel mit Virtualization Based Security (VBS), da sie sowohl HVCI als auch kCFG verletzt.
Seit Version v1.0 kann Nidhogg NidhoggScripts ausführen – ein Tool, mit dem mehrere Befehle nacheinander ausgeführt werden können, um Playbooks für Nidhogg zu erstellen. Informationen zum Erstellen eines solchen Skripts finden Sie im Wiki.
Aufgrund schwieriger Wartbarkeit und der Tatsache, dass es sich nicht um eine beliebte Funktion handelt, wurde es in Version v2.0 als veraltet markiert und wird in der nächsten Hauptversion entfernt. Es wird durch eine andere Fähigkeit namens "Nidhogg Object File" (NOF) für die Ausführung von COFF-Dateien im Kernel-Modus ersetzt, die Zugriff auf Nidhoggs API haben wird.
Seit Version v1.0 kann Nidhogg auch NidhoggScripts als Anfangsoperationen ausführen. Das bedeutet, dass die Datei out.ndhg im Stammverzeichnis des Projekts (dasselbe Verzeichnis wie die Python-Datei) jedes Mal ausgeführt wird, wenn der Treiber läuft.
Aufgrund schwieriger Wartbarkeit und der Tatsache, dass es sich nicht um eine beliebte Funktion handelt, wurde es in Version v2.0 als veraltet markiert und wird in der nächsten Hauptversion entfernt. Es wird durch eine andere Fähigkeit namens "Nidhogg Object File" (NOF) für die Ausführung von COFF-Dateien im Kernel-Modus ersetzt, die Zugriff auf Nidhoggs API haben wird.
[!CAUTION]
Die folgenden Funktionen sind dafür bekannt, PatchGuard auszulösen. Sie können sie dennoch auf eigenes Risiko verwenden.
Um die verfügbaren Befehle zu sehen, führen Sie NidhoggClient.exe aus oder schauen Sie im Wiki nach detaillierten Informationen zur Verwendung jedes Befehls, den Parametern und der Funktionsweise.
NidhoggClient.exe
# Einfache Nutzung: Verstecken eines Prozesses
NidhoggClient.exe process hide 3110
Um den Client zu kompilieren, müssen Sie Visual Studio 2022 installiert haben. Erstellen Sie dann das Projekt wie jedes andere Visual Studio-Projekt.
Zum Kompilieren des Projekts benötigen Sie die folgenden Tools:
Klonen Sie das Repository und erstellen Sie das Projekt:
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
Führen Sie diese Befehle in einer erhöhten Eingabeaufforderung in Ihrer Testumgebung aus:
bcdedit /set testsigning on
Starten Sie nach dem Neustart einen Dienst und führen Sie den Treiber aus:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
Führen Sie diesen Befehl in einer erhöhten Eingabeaufforderung in Ihrer Testumgebung aus und starten Sie den Computer neu:
bcdedit /debug on
Nach dem Neustart können Sie die Debug-Nachrichten in Tools wie DebugView sehen.
Vielen Dank an die Personen, die zu diesem Projekt beigetragen haben: