
Ferramenta de Terminação de Processos do Kernel (exploit CVE-2026-0828)


?? Aviso legal: Este projeto destina-se estritamente a fins educacionais e de pesquisa em segurança. O autor não é responsável por qualquer uso indevido, dano ou atividade ilegal causada por esta ferramenta. Use apenas em ambientes de laboratório isolados com permissão explícita.
KillChain é uma ferramenta em modo de usuário que aproveita um driver de kernel vulnerável (ProcessMonitorDriver.sys, CVE-2026-0828) para encerrar processos protegidos a partir do espaço do usuário. Ela se comunica com o kernel por meio de uma interface IOCTL personalizada, contornando os mecanismos padrão de proteção de processos.
A ferramenta incorpora o binário do driver diretamente no executável, extrai-o para um local temporário em tempo de execução, registra-o como um serviço de kernel, carrega-o via NtLoadDriver e envia solicitações de encerramento através de DeviceIoControl.
KillChain/
??? KillChain.cpp Ponto de entrada, análise de argumentos CLI, loop principal de encerramento
??? LoadDriver.h Extração do driver, registro do serviço, lógica NtLoadDriver/NtUnloadDriver
??? Logger.h Registro em console/arquivo seguro para threads com saída colorida
??? driverBytes.h Binário do driver incorporado (matriz de bytes brutos)
ProcessMonitorDriver.sys (incorporado dentro do executável)
??? Expõe IOCTL_KILL_PROCESS (0xB822200C) encerra um processo alvo por PID
1. Analisar argumentos CLI
2. Extrair .sys incorporado ? %TEMP%\EmbeddedDriverService.sys
3. Criar chave de serviço no registro + registrar via SCM
4. Carregar driver no kernel via NtLoadDriver (requer SeLoadDriverPrivilege)
5. Abrir handle do dispositivo: \\.\STProcessMonitorDriver
6. Loop (até 360 segundos):
a. Resolver PID pelo nome a cada iteração (se --name foi usado)
b. Enviar IOCTL_KILL_PROCESS com o PID alvo
c. Após 2 encerramentos bem-sucedidos, opcionalmente desabilitar o Windows Defender via registro
7. Fechar handle do dispositivo; opcionalmente executar limpeza com --uninstall-driver
SeLoadDriverPrivilege e acesso ao registroKillChain.sln no Visual Studio 2022Ctrl+Shift+B para compilarSaída: x64\Release\KillChain.exe
KillChain.exe [opções]
Opções:
--pid <PID> Encerra processo por PID
--name <NomeProcesso> Encerra processo pelo nome do executável
--disable-defender Também desabilita o Windows Defender via registro
--log-level <0-3> Verbosidade do registro (0=erros, 1=normal, 2=verboso, 3=debug)
--output <arquivo> Salva a saída do registro em arquivo
--uninstall-driver Descarrega o driver, exclui o serviço e o arquivo do driver
--help Mostra esta ajuda
REM Encerra um processo protegido pelo nome
KillChain.exe --name MsMpEng.exe
REM Encerra por PID com registro verboso gravado em arquivo
KillChain.exe --pid 1234 --log-level 2 --output log.txt
REM Encerra um processo e desabilita o Windows Defender em seguida
KillChain.exe --name notepad.exe --disable-defender
REM Limpa o driver após o teste
KillChain.exe --uninstall-driver
| Constante | Valor |
|---|---|
IOCTL_KILL_PROCESS | 0xB822200C |
| Campo | Tipo | Descrição |
|---|---|---|
| Buffer de entrada | ULONG64 | PID do processo alvo |
| Buffer de saída |
A saída é segura para threads (suportada por uma CRITICAL_SECTION) e pode gravar no console com cores ANSI e em um arquivo de log simultaneamente.
CVE-2026-0828 ProcessMonitorDriver.sys expõe um IOCTL que permite a qualquer chamador em modo de usuário com um handle para o dispositivo encerrar processos arbitrários incluindo processos de sistema protegidos sem verificações padrão de controle de acesso.
Eleven Red Pandas
Este projeto é fornecido apenas para fins educacionais e de pesquisa. Redistribuição ou uso em ambientes de produção é estritamente proibido.
| Recurso | Descrição |
|---|
| Encerrar por PID | Encerra qualquer processo pelo seu PID numérico via IOCTL do kernel |
| Encerrar por nome | Resolve e encerra um processo pelo nome do executável, reverificado a cada iteração |
| Loop de persistência | Monitora e re-encerra continuamente o alvo por até 360 segundos |
| Desabilitar Defender | Grava em HKLM\SOFTWARE\Policies\Microsoft\Windows Defender para desabilitar a proteção em tempo real |
| Driver incorporado | O binário do driver é embutido no executável nenhum arquivo .sys externo é necessário |
| Desinstalação do driver | Descarrega o driver do kernel, remove o serviço SCM, limpa o registro, exclui o arquivo temporário |
| Registro configurável | Quatro níveis de verbosidade com saída opcional para arquivo |
DWORD |
| Não utilizado (dummy) |
| Caminho do dispositivo | \\.\STProcessMonitorDriver |
| Nível | Valor | Descrição |
|---|
LOG_ERROR | 0 | Apenas erros |
LOG_INFO | 1 | Mensagens operacionais normais (padrão) |
LOG_WARNING | 2 | Avisos e mensagens informativas |
LOG_DEBUG | 3 | Rastreamento completo de depuração |
| Etapa | API Win32 / NT |
|---|
| Extrair para temp | CreateFile + WriteFile |
| Registrar serviço | RegCreateKeyEx + CreateService (SCM) |
| Carregar no kernel | NtLoadDriver (ntdll) |
| Verificar ativo | EnumDeviceDrivers + GetDeviceDriverBaseName |
| Descarregar do kernel | NtUnloadDriver (ntdll) |
| Remover serviço | DeleteService (SCM) + RegDeleteTree |
| Excluir arquivo temporário | DeleteFile |