Escalada de privilegios en Windows
Escalar de usuario sin privilegios a SYSTEM (o Administrador local) es el puente entre “tengo una shell” y “controlo la máquina”. En Windows rara vez hace falta un exploit de kernel: lo normal es abusar de configuraciones débiles —permisos de servicios, rutas mal definidas, privilegios de token, tareas programadas— que la propia administración ha dejado explotables. El kernel es el último recurso, no el primero.
Modelo de amenaza
Sección titulada «Modelo de amenaza»El sistema confía en rutas, permisos y privilegios que el administrador configuró mal. El atacante no rompe Windows: usa sus reglas contra él. Un servicio que corre como SYSTEM pero cuyo binario es modificable por un usuario normal es, de facto, SYSTEM para ese usuario. La escalada es, casi siempre, encontrar ese eslabón.
Vías principales (de más a menos común)
Sección titulada «Vías principales (de más a menos común)»1. Privilegios de token (whoami /priv)
Sección titulada «1. Privilegios de token (whoami /priv)»El quick win más fiable. Si el usuario (típico en cuentas de servicio IIS/MSSQL) tiene:
- SeImpersonatePrivilege → familia Potato (JuicyPotato, PrintSpoofer, GodPotato, RoguePotato): fuerzas a un servicio privilegiado a autenticarse contra ti y suplantas su token SYSTEM.
PrintSpoofer.exe -i -c cmd # SeImpersonate -> SYSTEMGodPotato -cmd "cmd /c whoami"- SeBackupPrivilege → copiar SAM/SYSTEM o NTDS.dit saltándote ACLs.
- SeRestorePrivilege, SeTakeOwnershipPrivilege → apropiarte de ficheros/servicios protegidos.
- SeDebugPrivilege → volcar LSASS, inyectar en procesos privilegiados.
- SeLoadDriverPrivilege → cargar un driver vulnerable (BYOVD).
2. Servicios mal configurados
Sección titulada «2. Servicios mal configurados»# binario del servicio modificable por el usuarioaccesschk.exe -uwcqv "Everyone" * # Sysinternals# permisos de servicio (puedes cambiar binPath)sc qc <servicio> & sc config <servicio> binPath= "C:\tmp\evil.exe"sc stop <servicio> & sc start <servicio>- Weak service permissions: puedes reconfigurar
binPath→ ejecución como SYSTEM. - Unquoted service path: ruta con espacios sin comillas (
C:\Program Files\...) → colocasC:\Program.exe. - Weak binary/folder perms: reemplazas el ejecutable del servicio.
- DLL hijacking: el servicio carga una DLL de una ruta escribible.
3. Tareas programadas y autoruns
Sección titulada «3. Tareas programadas y autoruns»Tareas que corren como SYSTEM invocando scripts/binarios modificables; entradas de inicio (Run keys, startup) escribibles.
schtasks /query /fo LIST /vreg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"4. AlwaysInstallElevated
Sección titulada «4. AlwaysInstallElevated»Si ambas claves están a 1, cualquier .msi se instala como SYSTEM:
reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedreg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedmsiexec /quiet /qn /i evil.msi5. Credenciales y secretos
Sección titulada «5. Credenciales y secretos»GPP cpassword, unattend.xml, autologon en registro, cmdkey, DPAPI, credenciales en memoria → reutilización hacia una cuenta admin (ver Volcado de credenciales).
6. Exploits de kernel (último recurso)
Sección titulada «6. Exploits de kernel (último recurso)»Mapea systeminfo+hotfixes con wesng/Watson → PrintNightmare, CVE-2021-1732, etc. Ruidoso y puede tumbar el host; úsalo cuando lo demás falla.
Red Team — herramientas
Sección titulada «Red Team — herramientas»- winPEAS / PowerUp (
Invoke-AllChecks) / Seatbelt — detección automática de todos los vectores anteriores. - accesschk.exe (Sysinternals) — permisos de servicios, ficheros y registro.
- PrintSpoofer / GodPotato / JuicyPotato — explotación de SeImpersonate.
- SharpUp, WES-NG, Watson — mapeo de parches a exploits.
Impacto
Sección titulada «Impacto»De usuario a SYSTEM local: volcado de SAM/LSASS, persistencia, deshabilitar defensas y —en host de dominio— saltar a credenciales de dominio y pivotar.
Blue Team
Sección titulada «Blue Team»Detección
Sección titulada «Detección»- Reconfiguración de servicios (
sc config, event 7040/4697), creación de servicios nuevos (7045). - Ejecución de PrintSpoofer/Potato (named pipes anómalos,
SpoolSv/rpcss→ shell SYSTEM). msiexeclanzando instaladores desde rutas de usuario; accesschk/winPEAS.- Creación/modificación de tareas programadas (4698/4702).
Telemetría
Sección titulada «Telemetría»Sysmon (1/7/11/13), auditoría de creación de servicios y tareas, Script Block Logging, alertas de acceso a LSASS (event 10 hacia lsass.exe).
Hardening
Sección titulada «Hardening»- Permisos correctos en servicios, binarios y carpetas; comillas en todos los paths de servicio.
- Deshabilita AlwaysInstallElevated; revisa Run keys y tareas.
- Quita privilegios peligrosos de cuentas de servicio; usa gMSA.
- LAPS para el admin local; parcheo al día (cierra kernel exploits).
- EDR con bloqueo de acceso a LSASS y de BYOVD.
Respuesta
Sección titulada «Respuesta»Reconstruye el host si llegó a SYSTEM, rota todos los secretos locales y de cuentas que iniciaron sesión, cierra el vector concreto (permiso/servicio/tarea).
CVEs y casos reales
Sección titulada «CVEs y casos reales»- PrintNightmare (CVE-2021-34527 / CVE-2021-1675) — RCE/LPE vía spooler, explotación masiva.
- HiveNightmare/SeriousSAM (CVE-2021-36934) — ACLs laxas en SAM/SYSTEM permiten leer hashes como usuario.
- CVE-2021-1732, CVE-2022-21882 — LPE en win32k usados en ataques reales.
- La familia Potato (SeImpersonate) es TTP estándar contra cuentas de servicio IIS/MSSQL (MITRE T1134).
Checklist de prueba
Sección titulada «Checklist de prueba»-
whoami /priv— ¿SeImpersonate/Backup/Restore/Debug/LoadDriver? - Servicios con permisos débiles o
binPathreconfigurable (accesschk) - Unquoted service paths con carpeta escribible
- DLL hijacking en servicios/apps privilegiadas
- Tareas programadas y Run keys modificables que corren elevadas
- AlwaysInstallElevated = 1 en HKCU y HKLM
- Credenciales en configs/registro reutilizables hacia admin
- Build sin parchear mapeable a kernel exploit (solo si lo demás falla)