一个跨版本的 Windows 进程终止工具。它加载一个已签名的 HONOR
内核驱动(MonProcessEX.sys),解析每个目标进程的 PID,
并通过单个 IOCTL 从内核上下文终止它。
无需内核偏移、无需下载 PDB、无需针对特定构建的 shellcode——
该技术在每个 Windows 10 和 Windows 11 构建上表现一致。
该工具是一个单一的自包含可执行文件。它通过服务控制管理器安装驱动, 执行终止操作,然后停止并删除服务,不留下任何持久化痕迹。 目标可在运行时通过配置文件、命令行或内置默认值进行配置。
跨版本设计。 一个驱动、一个 IOCTL、一个终止原语。 适用于所有 Windows 10 和 Windows 11 构建。
1. Keep moncrush.exe and MonProcessEX.sys in the same folder.
2. Run from an elevated shell.
moncrush.exe -n "notepad.exe,calc.exe"
3. Targets die. Driver unloads itself. Done.
无需工具链、无需偏移、无需构建步骤。
| 功能 | 详情 |
|---|---|
| 跨版本 | 适用于所有 Windows 10 和 Windows 11 构建,无需偏移 |
| 内核模式终止 | 驱动从内核上下文终止 PID |
| PPL 绕过 | MonProcessEX.sys 终止路径绕过受保护进程检查 |
| 已签名驱动 | MonProcessEX.sys 是真实的已签名 HONOR 驱动 |
| 不在 MS 阻止规则中 | 未出现在 Microsoft 的易受攻击驱动阻止规则中 |
| 自给自足 | 通过 SCM 安装、启动并清理驱动 |
| 零依赖 | 静态 Rust 二进制文件;放入 exe + 驱动即可运行 |
| 可配置 | targets.conf 或 -n,无需重新编译 |
| 混淆 | 设备路径和目标列表静态加密 |
| 单一可执行文件 | 一个二进制文件;从 shell 运行时输出到控制台,双击时静默 |
| 试运行模式 | 在提交前枚举目标和 PID |
| 抖动循环 | --repeat 以随机间隔重新检查 |
| 退出码 + JSON | 便于 C2 的自动化接口 |
+-------------------------------------------------------------------------------------------+
| USER MODE |
| |
| moncrush.exe |
| |
| +-------------------+ +-------------------+ +---------------------+ |
| | enumerate all | | resolve target | | match against | |
| | running | -> | PID via process | -> | target list, | |
| | processes | | entry | | collect PIDs | |
| +-------------------+ +-------------------+ +----------+----------+ |
| | |
| CreateFileW("\.\MonProcessEX") | |
| DeviceIoControl(IOCTL 0x22400C) | |
| output = termination status v |
+-------------------------------------------------------------------------------------------+
| KERNEL MODE |
| |
| MonProcessEX.sys signed HONOR kernel driver |
| +---------------------------------------------------------------------------------+ |
| | | |
| | IOCTL 0x22400C -> PID termination dispatch | |
| | | | |
| | | kernel-mode process lookup | |
| | v | |
| | EPROCESS located -> terminated from kernel context | |
| | | | |
| | v | |
| | process exit path invoked | |
| | | |
| +---------------------------------------------------------------------------------+ |
| |
| CLEANUP |
| +---------------------------------------------------------------------------------+ |
| | SCM service stopped and deleted | |
| | driver unloaded, no persistent artifact | |
| +---------------------------------------------------------------------------------+ |
+-------------------------------------------------------------------------------------------+
该驱动暴露一个终止 IOCTL,可根据 PID 终止进程。 用户态组件枚举正在运行的进程,解析每个目标的 PID, 并通过设备接口提交。用户态不触碰任何内核结构, 因此该技术不受 Windows 版本变化的影响。
cargo build --release --target x86_64-pc-windows-gnu
发布配置启用 LTO 和单一代码生成单元。该项目自包含,
带有自己的 [workspace] 声明。
moncrush.exe [options]
-s, --silent suppress all console output
-r, --repeat keep running, re-check targets
-d, --dry-run enumerate targets without killing
-j, --json machine-readable JSON output
-l, --list print target names and exit
-v, --version print version and exit
-x, --self-destruct delete self after successful run
--no-check skip VM and debugger checks
--delay <ms> sleep before executing
--jitter <ms> randomize repeat interval
--max-attempts <n> stop after n kill passes (0=infinite)
--svc <name> custom service name
--driver <path> custom driver file path
-n, --names <csv> comma-separated target list override
-c, --config <path> load targets from config file
-h, --help show this help
退出码:0 正常,2 无目标,3 驱动失败,5 环境中止。
目标解析顺序:--names > --config > targets.conf(磁盘)> 内置默认值。
--no-check 绕过。--delay <ms> 在执行任何操作前休眠,
打破与初始执行的时间关联。-x 在成功运行后删除可执行文件并清除其 Prefetch 条目。目标列表完全可配置,无需重新编译:
配置文件。 在可执行文件旁放置一个 targets.conf,每行一个进程名。
以 # 开头的行会被忽略:
MsMpEng.exe
csfalconservice.exe
SentinelAgent.exe
cortex_agent.exe
模板以 targets.example.conf 形式提供。
命令行。 moncrush.exe -n "MsMpEng.exe,csfalconservice.exe"
内置默认值。 无配置且无标志时,内置集合为:
主机上该工具的迹象以及如何搜寻它们,见 docs/detection.md:通过服务控制管理器加载驱动、 设备句柄和 IOCTL、随机化的服务名以及清理痕迹。
已验证的构建和阻止列表状态记录在 docs/compatibility.md。