

?? 免责声明: 本项目严格用于教育和安全研究目的。作者不对因使用本工具而导致的任何滥用、损害或非法活动负责。请仅在隔离的实验环境中并在获得明确许可的情况下使用。
KillChain 是一款用户态工具,利用存在漏洞的内核驱动程序(ProcessMonitorDriver.sys,CVE-2026-0828)从用户空间终止受保护进程。它通过自定义 IOCTL 接口与内核通信,绕过标准进程保护机制。
该工具将驱动程序二进制文件直接嵌入可执行文件中,运行时将其提取到临时位置,注册为内核服务,通过 NtLoadDriver 加载,并通过 DeviceIoControl 发送终止请求。
KillChain/
??? KillChain.cpp 入口点、CLI 参数解析、主终止循环
??? LoadDriver.h 驱动提取、服务注册、NtLoadDriver/NtUnloadDriver 逻辑
??? Logger.h 线程安全的控制台/文件日志记录,带彩色输出
??? driverBytes.h 嵌入的驱动程序二进制文件(原始字节数组)
ProcessMonitorDriver.sys (嵌入在可执行文件内部)
??? 暴露 IOCTL_KILL_PROCESS (0xB822200C) 按 PID 终止目标进程
1. 解析 CLI 参数
2. 提取嵌入的 .sys 到 %TEMP%\EmbeddedDriverService.sys
3. 创建注册表服务键 + 通过 SCM 注册
4. 通过 NtLoadDriver 将驱动加载到内核(需要 SeLoadDriverPrivilege)
5. 打开设备句柄:\\.\STProcessMonitorDriver
6. 循环(最长 360 秒):
a. 每次迭代按名称解析 PID(如果使用了 --name)
b. 使用目标 PID 发送 IOCTL_KILL_PROCESS
c. 成功终止 2 次后,可选地通过注册表禁用 Windows Defender
7. 关闭设备句柄;可选地运行 --uninstall-driver 清理
SeLoadDriverPrivilege 和注册表访问权限KillChain.slnCtrl+Shift+B 进行构建输出:x64\Release\KillChain.exe
KillChain.exe [选项]
选项:
--pid <PID> 按 PID 终止进程
--name <进程名> 按可执行文件名终止进程
--disable-defender 同时通过注册表禁用 Windows Defender
--log-level <0-3> 日志详细级别(0=错误,1=正常,2=详细,3=调试)
--output <文件> 将日志输出保存到文件
--uninstall-driver 卸载驱动、删除服务和驱动文件
--help 显示此帮助
REM 按名称终止受保护进程
KillChain.exe --name MsMpEng.exe
REM 按 PID 终止并将详细日志写入文件
KillChain.exe --pid 1234 --log-level 2 --output log.txt
REM 终止进程并在之后禁用 Windows Defender
KillChain.exe --name notepad.exe --disable-defender
REM 测试后清理驱动
KillChain.exe --uninstall-driver
| 常量 | 值 |
|---|---|
IOCTL_KILL_PROCESS | 0xB822200C |
| 字段 | 类型 | 描述 |
|---|---|---|
| 输入缓冲区 | ULONG64 | 目标进程 PID |
| 输出缓冲区 | DWORD | 未使用(占位) |
| 设备路径 |
输出是线程安全的(由 CRITICAL_SECTION 支持),可以同时以 ANSI 颜色写入控制台并写入日志文件。
CVE-2026-0828 — ProcessMonitorDriver.sys 暴露了一个 IOCTL,允许任何持有设备句柄的用户态调用者终止任意进程(包括受保护的系统进程),而无需标准的访问控制检查。
Eleven Red Pandas
本项目仅用于教育和研究目的。严禁重新分发或在生产环境中使用。
| 功能 | 描述 |
|---|
| 按 PID 终止 | 通过内核 IOCTL 按数字 PID 终止任意进程 |
| 按名称终止 | 按可执行文件名解析并终止进程,每次迭代重新检查 |
| 持久循环 | 持续监控并重新终止目标,最长 360 秒 |
| 禁用 Defender | 写入 HKLM\SOFTWARE\Policies\Microsoft\Windows Defender 以禁用实时保护 |
| 嵌入驱动 | 驱动程序二进制文件直接嵌入可执行文件,无需外部 .sys 文件 |
| 驱动卸载 | 从内核卸载驱动、删除 SCM 服务、清理注册表、删除临时文件 |
| 可配置日志 | 四个详细级别,支持可选的文件输出 |
\\.\STProcessMonitorDriver |
| 级别 | 值 | 描述 |
|---|
LOG_ERROR | 0 | 仅错误 |
LOG_INFO | 1 | 正常操作消息 (默认) |
LOG_WARNING | 2 | 警告和信息消息 |
LOG_DEBUG | 3 | 完整调试跟踪 |
| 步骤 | Win32 / NT API |
|---|
| 提取到临时目录 | CreateFile + WriteFile |
| 注册服务 | RegCreateKeyEx + CreateService(SCM) |
| 加载到内核 | NtLoadDriver(ntdll) |
| 验证已激活 | EnumDeviceDrivers + GetDeviceDriverBaseName |
| 从内核卸载 | NtUnloadDriver(ntdll) |
| 删除服务 | DeleteService(SCM) + RegDeleteTree |
| 删除临时文件 | DeleteFile |