
Kit de herramientas de análisis e investigación de Windows
⚠️ Partes de este proyecto fueron creadas con asistencia de IA (vibe coding), por lo que podría tener algunos errores. El driver de kernel (KWinSys) solo debe instalarse en una VM de prueba con fines de investigación.

![]() Procesos (Modo Usuario) | ![]() Sesiones ETW | ![]() Callbacks del Kernel |
![]() Pool del Kernel | ![]() Símbolos | ![]() Filtros |
| Componente | Función |
|---|---|
| NtWarden | Aplicación GUI (ImGui + DirectX 11) |
| WinSys | Librería estática para enumeración de procesos, servicios y red |
| KWinSys | Driver de kernel para callbacks, SSDT, módulos del kernel, etc. |
| WinSysServer | Servidor TCP sin interfaz (headless) para inspección remota |
| Pestaña | Qué hace |
|---|---|
| Procesos | Lista de procesos con vista de árbol, handles, hilos, regiones de memoria, módulos |
| Rendimiento | Gráficas en tiempo real de uso de CPU, RAM, GPU y red; se pueden superponer sobre otras tareas |
| Servicios | Enumeración de servicios con estado, tipo de inicio, ruta binaria |
| Red > Conexiones | Conexiones TCP/UDP con proceso propietario y endpoints remotos |
| Red > Certificados raíz | Almacén de CA raíz de confianza con asunto, emisor, huella digital |
| Red > NDIS | Información del adaptador de red: driver, MAC, velocidad, tipo de medio |
| ETW | Sesiones de seguimiento activas y proveedores registrados |
| IPC | Endpoints RPC y named pipes |
| Administrador de objetos | Explorar el namespace de objetos del kernel: directorios, symlinks, dispositivos |
| Registro | Explorador del registro con enumeración de claves/valores |
| Símbolos | Estado de carga de símbolos en modo usuario |
| Logger | Intercepta los logs de depuración del driver de kernel y los logs de la GUI en modo usuario en un solo lugar |
| Pestaña | Qué hace |
|---|---|
| Objetos de Proceso | Enumeración de EPROCESS, detección de procesos ocultos mediante referencias cruzadas |
| Módulos | Drivers de kernel cargados con base, tamaño, ruta (junto con verificación de LolDrivers) |
| Callbacks | Callbacks del kernel (proceso/hilo/imagen/registro/objeto/energía) + comprobaciones de integridad |
| SSDT | Entradas SSDT con propietario y detección de hooks |
| Símbolos | Resolución de símbolos del kernel y carga de PDB |
| Pool del Kernel | Asignaciones grandes de pool, estadísticas de pool tags |
| Memoria R/W | Lectura/escritura de memoria del kernel por dirección |
| Temporizadores | Contadores de interrupciones y DPC por CPU |
| Filtro | Drivers minifilter con altitude e información de instancia |
| Tablas de Descriptores | Entradas GDT/IDT |
| Dispatch IRP | Tabla de dispatch IRP para cualquier driver: direcciones de handlers, módulo propietario |
| WFP | Drivers callout y filtros WFP |
| Estado de DSE | Estado de Driver Signature Enforcement |
| Política de CI | Política de Code Integrity y nivel de enforcement |
| Integridad del Kernel | Verificar el .text del kernel contra la imagen en disco |
| Hooks del Hipervisor | Detección de hooks EPT mediante análisis de tiempos |
Análisis de seguridad por proceso, accesible desde el menú contextual del proceso.
| Sección | Qué comprueba |
|---|---|
| Memoria sin respaldo | Regiones ejecutables privadas no respaldadas por ningún archivo (indicador de shellcode) |
| Hollowing | Discrepancia entre PEB ImageBase y el ImageBase de la cabecera PE |
| Module Stomping | Secciones .text en memoria comparadas con los originales en disco |
| Syscalls Directas | Instrucciones syscall (0F 05) encontradas fuera de ntdll |
| Stubs de Syscalls | Integridad de los stubs de ntdll: bytes en memoria frente a copia limpia en disco |
| Hooks de Usuario | Hooks inline (parches JMP/CALL) en ntdll, kernel32, etc. (requiere capstone para desensamblar los bytes analizados) |
| Tokens | Elevación, nivel de integridad, impersonación, privilegios sospechosos |
| Objetos de Depuración | Objetos de depuración y puertos de depuración en el proceso |
| Hipervisor | Comprobación del vendor de CPUID + anomalías de tiempos RDTSC/CPUID |
| Objetos Job | Pertenencia a jobs, límites, restricciones de UI |
| Estado de CFG | Estado de enforcement de CFG/XFG y flags de mitigación |
Requisitos: Visual Studio 2022, Windows SDK 10.0.26100.0+, WDK (para KWinSys)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.sln en Visual Studiox64/Release/KWinSys necesita test signing o una firma válida.
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
Ejecuta NtWarden como Administrador. Al cambiar a la pestaña Modo Kernel, el driver se instalará e iniciará automáticamente si aún no está cargado. También puedes gestionarlo manualmente desde el menú Driver.
WinSysServer se ejecuta en la máquina de destino (normalmente una VM) y sirve datos del sistema a través de TCP. Conéctate desde NtWarden mediante Remote > Connect.
| Archivo | Ruta | Necesario para |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | Siempre |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | Solo funciones de kernel |
Las funciones de modo usuario (procesos, servicios, red) funcionan sin el driver. Las pestañas de kernel necesitan KWinSys cargado en la máquina de destino.
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
Protocolo binario personalizado sobre TCP. Cabecera de 12 bytes (MessageType, DataSize, Status). Sin autenticación: úsalo solo en entornos aislados de laboratorio/VM.
MIT: consulta LICENSE.