
Herramienta de Terminación de Procesos del Kernel (exploit CVE-2026-0828)


?? Aviso legal: Este proyecto está destinado estrictamente a fines educativos y de investigación en seguridad. El autor no es responsable de ningún uso indebido, daño o actividad ilegal causada por esta herramienta. Úsela únicamente en entornos de laboratorio aislados con permiso explícito.
KillChain es una herramienta en modo usuario que aprovecha un controlador de kernel vulnerable (ProcessMonitorDriver.sys, CVE-2026-0828) para terminar procesos protegidos desde el espacio de usuario. Se comunica con el kernel mediante una interfaz IOCTL personalizada, omitiendo los mecanismos estándar de protección de procesos.
La herramienta incrusta el binario del controlador directamente en el ejecutable, lo extrae a una ubicación temporal en tiempo de ejecución, lo registra como servicio del kernel, lo carga mediante NtLoadDriver y envía solicitudes de terminación a través de DeviceIoControl.
KillChain/
??? KillChain.cpp Punto de entrada, análisis de argumentos CLI, bucle principal de terminación
??? LoadDriver.h Extracción del controlador, registro del servicio, lógica de NtLoadDriver/NtUnloadDriver
??? Logger.h Registro en consola/archivo seguro para subprocesos con salida codificada por colores
??? driverBytes.h Binario del controlador incrustado (matriz de bytes sin procesar)
ProcessMonitorDriver.sys (incrustado dentro del ejecutable)
??? Expone IOCTL_KILL_PROCESS (0xB822200C) termina un proceso objetivo por PID
1. Analizar argumentos CLI
2. Extraer .sys incrustado ? %TEMP%\EmbeddedDriverService.sys
3. Crear clave de servicio en el registro + registrar mediante SCM
4. Cargar el controlador en el kernel mediante NtLoadDriver (requiere SeLoadDriverPrivilege)
5. Abrir identificador de dispositivo: \\.\STProcessMonitorDriver
6. Bucle (hasta 360 segundos):
a. Resolver PID por nombre en cada iteración (si se usó --name)
b. Enviar IOCTL_KILL_PROCESS con el PID objetivo
c. Después de 2 eliminaciones exitosas, deshabilitar opcionalmente Windows Defender mediante el registro
7. Cerrar identificador de dispositivo; ejecutar opcionalmente la limpieza con --uninstall-driver
SeLoadDriverPrivilege y acceso al registroKillChain.sln en Visual Studio 2022Ctrl+Shift+B para compilarSalida: x64\Release\KillChain.exe
KillChain.exe [opciones]
Opciones:
--pid <PID> Terminar proceso por PID
--name <NombreProceso> Terminar proceso por nombre de ejecutable
--disable-defender También deshabilitar Windows Defender mediante el registro
--log-level <0-3> Verbosidad del registro (0=errores, 1=normal, 2=detallado, 3=depuración)
--output <archivo> Guardar salida del registro en archivo
--uninstall-driver Descargar controlador, eliminar servicio y archivo del controlador
--help Mostrar esta ayuda
REM Terminar un proceso protegido por nombre
KillChain.exe --name MsMpEng.exe
REM Terminar por PID con registro detallado escrito en un archivo
KillChain.exe --pid 1234 --log-level 2 --output log.txt
REM Eliminar un proceso y deshabilitar Windows Defender después
KillChain.exe --name notepad.exe --disable-defender
REM Limpiar el controlador después de las pruebas
KillChain.exe --uninstall-driver
| Constante | Valor |
|---|---|
IOCTL_KILL_PROCESS | 0xB822200C |
| Campo | Tipo | Descripción |
|---|---|---|
| Búfer de entrada | ULONG64 | PID del proceso objetivo |
| Búfer de salida |
La salida es segura para subprocesos (respaldada por una CRITICAL_SECTION) y puede escribir en la consola con colores ANSI y en un archivo de registro simultáneamente.
CVE-2026-0828 ProcessMonitorDriver.sys expone un IOCTL que permite a cualquier llamador en modo usuario con un identificador al dispositivo terminar procesos arbitrarios incluidos procesos protegidos del sistema sin las comprobaciones estándar de control de acceso.
Eleven Red Pandas
Este proyecto se proporciona únicamente con fines educativos y de investigación. Se prohíbe estrictamente la redistribución o el uso en entornos de producción.
| Característica | Descripción |
|---|
| Eliminar por PID | Terminar cualquier proceso por su PID numérico mediante IOCTL del kernel |
| Eliminar por nombre | Resolver y terminar un proceso por nombre de ejecutable, verificado nuevamente en cada iteración |
| Bucle de persistencia | Supervisa y vuelve a terminar continuamente el objetivo durante hasta 360 segundos |
| Deshabilitar Defender | Escribe en HKLM\SOFTWARE\Policies\Microsoft\Windows Defender para deshabilitar la protección en tiempo real |
| Controlador incrustado | El binario del controlador está integrado en el ejecutable no se requiere un archivo .sys externo |
| Desinstalación del controlador | Descarga el controlador del kernel, elimina el servicio SCM, limpia el registro, borra el archivo temporal |
| Registro configurable | Cuatro niveles de verbosidad con salida opcional a archivo |
DWORD |
| Sin uso (simulado) |
| Ruta del dispositivo | \\.\STProcessMonitorDriver |
| Nivel | Valor | Descripción |
|---|
LOG_ERROR | 0 | Solo errores |
LOG_INFO | 1 | Mensajes operativos normales (predeterminado) |
LOG_WARNING | 2 | Advertencias y mensajes informativos |
LOG_DEBUG | 3 | Traza de depuración completa |
| Paso | API Win32 / NT |
|---|
| Extraer a temporal | CreateFile + WriteFile |
| Registrar servicio | RegCreateKeyEx + CreateService (SCM) |
| Cargar en el kernel | NtLoadDriver (ntdll) |
| Verificar activo | EnumDeviceDrivers + GetDeviceDriverBaseName |
| Descargar del kernel | NtUnloadDriver (ntdll) |
| Eliminar servicio | DeleteService (SCM) + RegDeleteTree |
| Borrar archivo temporal | DeleteFile |