
# Terminador de processos em modo kernel usando um driver BYOVD assinado. Funciona em todos os Windows 10/11. Sem offsets, sem PDB. Rust.
Um terminador de processos Windows multi-versão. Ele carrega um driver de kernel HONOR assinado (MonProcessEX.sys), resolve o PID de cada processo alvo e o encerra a partir do contexto de kernel através de um único IOCTL. Sem offsets de kernel, sem downloads de PDB, sem shellcode específico de build - a técnica funciona de forma idêntica em todas as builds do Windows 10 e Windows 11.
A ferramenta é um único executável autocontido. Ela instala o driver através do Service Control Manager, realiza o kill, depois para e exclui o serviço, não deixando nenhum artefato persistente para trás. Os alvos são configuráveis em tempo de execução através de um arquivo de configuração, linha de comando ou os padrões embutidos.
Multi-versão por design. Um driver, um IOCTL, uma primitiva de kill. Funciona em todas as builds do Windows 10 e 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.
Sem toolchain, sem offsets, sem etapa de build.
| Recurso | Detalhes |
|---|---|
| Multi-versão | Funciona em todas as builds do Windows 10 e Windows 11, sem offsets |
| Kill em modo kernel | O driver encerra o PID a partir do contexto de kernel |
| Bypass de PPL | O caminho de kill do MonProcessEX.sys contorna verificações de processos protegidos |
| Driver assinado | MonProcessEX.sys é um driver HONOR assinado real |
| Fora das regras de bloqueio da MS | Ausente das regras de bloqueio de drivers vulneráveis da Microsoft |
| Autossuficiente | Driver instalado, iniciado e limpo via SCM |
| Zero dependências | Binário Rust estático; basta soltar exe + driver e executar |
| Configurável | targets.conf ou -n, sem necessidade de recompilar |
| Ofuscado | Caminho do dispositivo e lista de alvos criptografados em repouso |
| Executável único | Um binário; saída no console a partir de um shell, silencioso quando clicado duas vezes |
| Modo dry-run | Enumera alvos e PIDs antes de efetivar |
| Loop com jitter | --repeat re-verifica com intervalo aleatório |
| Códigos de saída + JSON | Interface de automação amigável para 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 | |
| +---------------------------------------------------------------------------------+ |
+-------------------------------------------------------------------------------------------+
O driver expõe um IOCTL de kill que encerra um processo dado o seu PID. O componente em modo usuário enumera os processos em execução, resolve o PID de cada alvo e o submete através da interface do dispositivo. Nenhuma estrutura de kernel é tocada a partir do modo usuário, então a técnica é imune a mudanças de versão do Windows.
cargo build --release --target x86_64-pc-windows-gnu
O perfil de release habilita LTO e uma única unidade de codegen. O projeto é autocontido com sua própria declaração [workspace].
moncrush.exe [options]