Saltearse al contenido

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.

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.

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 -> SYSTEM
GodPotato -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).
# binario del servicio modificable por el usuario
accesschk.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\...) → colocas C:\Program.exe.
  • Weak binary/folder perms: reemplazas el ejecutable del servicio.
  • DLL hijacking: el servicio carga una DLL de una ruta escribible.

Tareas que corren como SYSTEM invocando scripts/binarios modificables; entradas de inicio (Run keys, startup) escribibles.

schtasks /query /fo LIST /v
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

Si ambas claves están a 1, cualquier .msi se instala como SYSTEM:

reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
msiexec /quiet /qn /i evil.msi

GPP cpassword, unattend.xml, autologon en registro, cmdkey, DPAPI, credenciales en memoria → reutilización hacia una cuenta admin (ver Volcado de credenciales).

Mapea systeminfo+hotfixes con wesng/Watson → PrintNightmare, CVE-2021-1732, etc. Ruidoso y puede tumbar el host; úsalo cuando lo demás falla.

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

De usuario a SYSTEM local: volcado de SAM/LSASS, persistencia, deshabilitar defensas y —en host de dominio— saltar a credenciales de dominio y pivotar.

  • 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).
  • msiexec lanzando instaladores desde rutas de usuario; accesschk/winPEAS.
  • Creación/modificación de tareas programadas (4698/4702).

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

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

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

  • 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).
  • whoami /priv — ¿SeImpersonate/Backup/Restore/Debug/LoadDriver?
  • Servicios con permisos débiles o binPath reconfigurable (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)