Saltearse al contenido

Abuso de privilegios y tokens

En Windows, lo que un proceso puede hacer no lo decide solo “ser admin”: lo decide su token de acceso, que lleva el SID del usuario, sus grupos y una lista de privilegios (SeXxxPrivilege). Varios de esos privilegios, aunque no te hagan administrador sobre el papel, permiten llegar a SYSTEM de forma directa. Enumerar whoami /priv y saber qué hace cada privilegio es, muchas veces, toda la escalada.

El error de diseño que explota el atacante es que ciertos privilegios son equivalentes a SYSTEM aunque Windows los conceda a cuentas de servicio “normales” (IIS, MSSQL, tareas). El sistema confía en que solo código legítimo los usará; el atacante que hereda ese token los convierte en control total. No hay que romper nada: el privilegio ya está concedido.

SeImpersonatePrivilege / SeAssignPrimaryTokenPrivilege

Sección titulada «SeImpersonatePrivilege / SeAssignPrimaryTokenPrivilege»

El más común en cuentas de servicio. Permite suplantar el token de un cliente que se conecte. La familia Potato fuerza a un servicio SYSTEM (spooler, RPC, DCOM) a autenticarse contra el atacante, que roba y suplanta su token:

PrintSpoofer.exe -i -c "cmd.exe" # SeImpersonate -> SYSTEM
GodPotato.exe -cmd "cmd /c whoami"
RoguePotato.exe -r <ip> -e "cmd.exe" -l 9999

Abrir cualquier proceso, incluido LSASS. Permite volcar credenciales (procdump lsass, mimikatz sekurlsa) o inyectar código en procesos SYSTEM.

mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords

SeBackup ignora las ACLs en lectura: copiar los hives SAM, SYSTEM, SECURITY o NTDS.dit aunque estén protegidos. SeRestore ignora las ACLs en escritura: sobrescribir binarios protegidos o claves de servicio.

reg save HKLM\SAM sam.hive # con SeBackup
reg save HKLM\SYSTEM system.hive
# luego: secretsdump.py -sam sam.hive -system system.hive LOCAL

Apropiarte de cualquier objeto (fichero, clave, servicio) para luego reescribir su DACL y modificarlo → control de un binario/servicio privilegiado.

Cargar drivers → BYOVD (Bring Your Own Vulnerable Driver): cargas un driver firmado pero vulnerable y lo explotas para ejecutar en kernel (p. ej. Capcom.sys).

SeManageVolumePrivilege, SeTcbPrivilege, SeCreateToken…

Sección titulada «SeManageVolumePrivilege, SeTcbPrivilege, SeCreateToken…»

Otros privilegios de alto impacto; SeTcb/SeCreateToken permiten forjar tokens arbitrarios (actuar como parte del SO).

El token también lleva un nivel de integridad (Low/Medium/High/System). Elevar de Medium a High es UAC bypass (ver Bypass de UAC); de High a System es, típicamente, impersonation o servicios.

  • PrintSpoofer / GodPotato / JuicyPotato / RoguePotato — explotación de SeImpersonate.
  • mimikatz (token::elevate, privilege::debug, sekurlsa) — manipulación de tokens y volcado.
  • incognito (Metasploit list_tokens/impersonate_token) — robar y suplantar tokens de usuarios logueados.
  • SeBackupPrivilege / SeRestore PoCs y reg save; secretsdump para procesar hives.

SYSTEM local directo (impersonation), volcado de todas las credenciales del host (debug/backup), ejecución en kernel (load driver). En un DC, SeBackup sobre NTDS.dit = todos los hashes del dominio.

  • Cuentas de servicio con shells SYSTEM tras actividad de named pipes (Potato).
  • Acceso a LSASS (Sysmon event 10 con GrantedAccess sospechoso) → SeDebug/dump.
  • reg save de SAM/SYSTEM/SECURITY; carga de drivers no habituales (event 6 Sysmon, service 7045 de tipo kernel).
  • Uso de SeBackupPrivilege para abrir ficheros protegidos.

Audita asignación de privilegios especiales (event 4672 en logon, 4673/4674 uso de privilegio sensible), Sysmon 1/6/10, y creación de servicios/drivers.

  • Mínimo privilegio en cuentas de servicio: quita SeImpersonate/SeDebug/SeBackup si no son imprescindibles; usa gMSA con derechos acotados.
  • Credential Guard y protección de LSASS (RunAsPPL) contra volcado por SeDebug.
  • Driver Blocklist de Microsoft / WDAC para frenar BYOVD; HVCI.
  • Restringe quién tiene SeBackup/SeRestore (operadores de backup reales, no cuentas de app).

Si un privilegio llevó a SYSTEM/credenciales, trata el host como comprometido: rota secretos, revisa qué se volcó, y elimina el privilegio sobrante de la cuenta afectada.

  • La familia Potato (SeImpersonate) es TTP estándar contra IIS/MSSQL (MITRE T1134.001/.002).
  • BYOVD: campañas de ransomware y APT cargan drivers vulnerables (RTCore64, Capcom, Dell dbutil CVE-2021-21551) para desactivar EDR.
  • SeBackupPrivilege → NTDS.dit es técnica habitual de post-explotación en DCs (MITRE T1003.003).
  • mimikatz sekurlsa vía SeDebug: uno de los TTPs más documentados en brechas reales.
  • whoami /priv — listar todos los privilegios habilitados/deshabilitados
  • SeImpersonate/SeAssignPrimaryToken → Potato a SYSTEM
  • SeDebug → volcado de LSASS (mimikatz/procdump)
  • SeBackup → reg save de SAM/SYSTEM o lectura de NTDS.dit
  • SeRestore/SeTakeOwnership → reescribir binario/servicio protegido
  • SeLoadDriver → BYOVD (driver vulnerable firmado)
  • Tokens de otros usuarios logueados suplantables (incognito)
  • ¿LSASS protegido (RunAsPPL/Credential Guard)?