KillChain — Vulnerable Kernel Driver IOCTL Protected-Process Termination (CVE-2026-0828)
by Eleven Red Pandas (oxfemale) · 2026-07-05
- Severity
- High
- CVE
- CVE-2026-0828
- Category
- binary
- Affected product
- ProcessMonitorDriver.sys (vulnerable third-party kernel driver)
- Affected versions
- As embedded/bundled in the KillChain tool
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-04 |
| Author / Researcher | Eleven Red Pandas (oxfemale) |
| CVE / Advisory | CVE-2026-0828 |
| Category | binary |
| Severity | High |
| CVSS Score | Not specified in source |
| Status | Weaponized |
| Tags | byovd, kernel-driver, ioctl, process-termination, edr-killer, windows, privilege-escalation, defender-bypass |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | ProcessMonitorDriver.sys (vulnerable third-party kernel driver) |
| Versions Affected | As embedded/bundled in the KillChain tool |
| Language / Platform | C++ (user-mode tool); Windows kernel driver (target), x64 |
| Authentication Required | Local-only (requires Administrator / SeLoadDriverPrivilege) |
| Network Access Required | No |
Summary
KillChain is a fully-built “Bring Your Own Vulnerable Driver” (BYOVD) tool that embeds a vulnerable kernel driver, ProcessMonitorDriver.sys, directly inside its executable as a raw byte array. At runtime it extracts the driver to a temp path, registers it as a Windows service, loads it into the kernel via NtLoadDriver, and opens a handle to its device object \\.\STProcessMonitorDriver. The driver exposes an IOCTL (0xB822200C, IOCTL_KILL_PROCESS) that terminates an arbitrary process by PID with no access-control checks, allowing termination of protected processes (e.g. antivirus/EDR agents) that would normally resist user-mode termination attempts. The tool can target a process repeatedly by PID or by name over a bounded loop, and optionally flips a registry value to disable Windows Defender real-time protection after successfully killing its target — a capability squarely aimed at disabling endpoint security tooling as part of an attack chain.
Vulnerability Details
Root Cause
ProcessMonitorDriver.sys implements IOCTL_KILL_PROCESS without verifying the caller’s privilege level or the legitimacy of terminating protected/critical processes; any user-mode process with a handle to the device can submit a target PID and have the kernel-mode driver forcibly terminate it, bypassing Protected Process (PP/PPL) and standard EDR self-protection mechanisms that only guard against user-mode termination APIs.
Attack Vector
- Attacker with local Administrator rights (and
SeLoadDriverPrivilege) runs the KillChain tool. - The tool extracts its embedded
ProcessMonitorDriver.systo%TEMP%, creates a matching Service Control Manager service/registry key, and loads the driver into the kernel viaNtLoadDriver. - The tool opens
\\.\STProcessMonitorDriverand repeatedly issuesIOCTL_KILL_PROCESSrequests, either for a fixed PID or by resolving a process name each iteration (useful for killing a self-restarting or watchdog-protected process). - Optionally, after a couple of successful kills, the tool writes to
HKLM\SOFTWARE\Policies\Microsoft\Windows Defenderto disable real-time protection. - On completion (or via
--uninstall-driver), the tool unloads the driver, removes the service, and deletes the temp driver file to reduce forensic footprint.
Impact
Termination of security-critical or protected processes (including antivirus/EDR components) from a privileged but otherwise “restricted” execution context, plus optional disabling of Windows Defender — enabling attackers to blind endpoint defenses ahead of further malicious activity.
Environment / Lab Setup
Target: Windows 10/11 x64, Administrator context, Test Signing Mode enabled (or signed driver)
Attacker: Visual Studio 2022 (C++20 toolset) to build KillChain.exe; embedded driver requires no separate .sys file
Proof of Concept
PoC Script
See
KillChain.cpp,LoadDriver.h,Logger.h, anddriverBytes.hin this folder.
| |
Running the tool extracts and loads the embedded vulnerable driver, then repeatedly sends IOCTL_KILL_PROCESS requests against the specified PID or process name (re-resolved each iteration) for up to 360 seconds, optionally disabling Windows Defender after the first couple of successful kills, and can later unload the driver and clean up via --uninstall-driver.
Detection & Indicators of Compromise
System event log: Service Control Manager 7045 — "EmbeddedDriverService" / STProcessMonitorDriver
\\.\STProcessMonitorDriver
HKLM\SOFTWARE\Policies\Microsoft\Windows Defender (unexpected DisableRealtimeMonitoring write)
Signs of compromise:
- Unexpected kernel driver load events for a service extracted from
%TEMP%shortly before a security process (e.g.MsMpEng.exe) terminates unexpectedly. - Windows Defender or other EDR/AV processes repeatedly dying and being immune to normal user-mode protection.
- Registry modifications disabling Windows Defender real-time protection correlated with the above driver load.
Remediation
| Action | Detail |
|---|---|
| Primary fix | No vendor patch confirmed as of 2026-07-05 for ProcessMonitorDriver.sys — the driver should either be revoked/blocklisted via Microsoft’s vulnerable driver blocklist (HVCI/WDAC) or its IOCTL handler fixed to enforce caller privilege/protected-process checks |
| Interim mitigation | Enable Windows HVCI and the Microsoft vulnerable driver blocklist, restrict SeLoadDriverPrivilege and driver-loading rights to trusted administrators only, and monitor for NtLoadDriver calls loading drivers from temp directories |
References
Notes
Mirrored from https://github.com/oxfemale/KillChain on 2026-07-05. The repository’s sample.mp4 demo video (~25MB) was excluded from this mirror as an oversized evidence file; the source code, project files, embedded driver bytes (driverBytes.h), and one illustrative screenshot (killed.png) were kept.
| |