
# 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 termina a partir do contexto do 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 versões do Windows 10 e Windows 11.
A ferramenta é um único executável autocontido. Ela instala o driver através do Service Control Manager, realiza a eliminação e, em seguida, para e exclui o serviço, sem deixar nenhum artefato persistente. Os alvos são configuráveis em tempo de execução por meio 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 eliminação. Funciona em todas as versões do Windows 10 e Windows 11.
1. Mantenha moncrush.exe e MonProcessEX.sys na mesma pasta.
2. Execute a partir de um shell elevado.
moncrush.exe -n "notepad.exe,calc.exe"
3. Os alvos morrem. O driver se descarrega. Pronto.
Sem toolchain, sem offsets, sem etapa de build.
| Recurso | Detalhes |
|---|---|
| Multi-versão | Funciona em todas as versões do Windows 10 e Windows 11, sem offsets |
| Eliminação em modo kernel | O driver termina o PID a partir do contexto do kernel |
| Bypass de PPL | O caminho de eliminação do MonProcessEX.sys ignora verificações de processos protegidos |
| Driver assinado | MonProcessEX.sys é um driver HONOR real e assinado |
| Não está nas 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; solte exe + driver, execute |
| 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 de console a partir de um shell, silencioso quando clicado duas vezes |
| Modo simulação | Enumera alvos e PIDs antes de confirmar |
| Loop com jitter | --repeat re-verifica com intervalo aleatório |
| Códigos de saída + JSON | Interface de automação amigável para C2 |
+-------------------------------------------------------------------------------------------+
| MODO DE USUÁRIO |
| |
| moncrush.exe |
| |
| +-------------------+ +-------------------+ +---------------------+ |
| | enumera todos | | resolve o PID | | compara com a | |
| | os processos | -> | alvo via | -> | lista de alvos, | |
| | em execução | | entrada do | | coleta os PIDs | |
| | | | processo | | | |
| +-------------------+ +-------------------+ +----------+----------+ |
| | |
| CreateFileW("\.\MonProcessEX") | |
| DeviceIoControl(IOCTL 0x22400C) | |
| saída = status de terminação v |
+-------------------------------------------------------------------------------------------+
| MODO KERNEL |
| |
| MonProcessEX.sys driver de kernel HONOR assinado |
| +---------------------------------------------------------------------------------+ |
| | | |
| | IOCTL 0x22400C -> despacho de terminação de PID | |
| | | | |
| | | busca de processo em modo kernel | |
| | v | |
| | EPROCESS localizado -> terminado a partir do contexto do kernel | |
| | | | |
| | v | |
| | caminho de saída do processo invocado | |
| | | |
| +---------------------------------------------------------------------------------+ |
| |
| LIMPEZA |
| +---------------------------------------------------------------------------------+ |
| | serviço SCM parado e excluído | |
| | driver descarregado, sem artefato persistente | |
| +---------------------------------------------------------------------------------+ |
+-------------------------------------------------------------------------------------------+
O driver expõe um IOCTL de eliminação que termina um processo dado seu PID. O componente em modo de 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 do kernel é tocada a partir do modo de usuário, portanto 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 [opções]
-s, --silent suprime toda a saída do console
-r, --repeat continua em execução, re-verifica os alvos
-d, --dry-run enumera os alvos sem eliminar
-j, --json saída JSON legível por máquina
-l, --list imprime os nomes dos alvos e sai
-v, --version imprime a versão e sai
-x, --self-destruct exclui a si mesmo após execução bem-sucedida
--no-check pula verificações de VM e debugger
--delay <ms> dorme antes de executar
--jitter <ms> randomiza o intervalo de repetição
--max-attempts <n> para após n passadas de eliminação (0=infinito)
--svc <nome> nome de serviço personalizado
--driver <caminho> caminho personalizado do arquivo do driver
-n, --names <csv> substituição da lista de alvos separada por vírgulas
-c, --config <caminho> carrega os alvos do arquivo de configuração
-h, --help mostra esta ajuda
Códigos de saída: 0 ok, 2 sem alvos, 3 falha do driver, 5 abortamento do ambiente. Ordem de resolução de alvos: --names > --config > targets.conf (disco) > padrões embutidos.
--no-check ao testar dentro de uma VM.--delay <ms> dorme antes de fazer qualquer coisa, quebrando a correlação temporal com a execução inicial.-x exclui o executável e purga sua entrada Prefetch após uma execução bem-sucedida.A lista de alvos é totalmente configurável sem recompilar:
Arquivo de configuração. Coloque um targets.conf ao lado do executável, um nome de processo por linha. Linhas que começam com # são ignoradas:
MsMpEng.exe
csfalconservice.exe
SentinelAgent.exe
cortex_agent.exe
Um modelo é fornecido como targets.example.conf.
Linha de comando. moncrush.exe -n "MsMpEng.exe,csfalconservice.exe"
Padrões embutidos. Sem configuração e sem flags, o conjunto embutido é:
MIT. Consulte LICENSE.
Este projeto é publicado apenas para pesquisa e testes autorizados. Carregar drivers não assinados ou vulneráveis em um sistema que você não possui é ilegal na maioria das jurisdições. Você é responsável pela conformidade com todas as leis aplicáveis e com o escopo de autorização dos sistemas que você testa.