Page cover

🟠TombWatcher

En esta ocasión vamos a hacer el writeup de la máquina TombWatcher de Hack the Box, una máquina Windows Active Directory de dificultad media.

Información General

  • Nombre de la máquina: TombWatcher

  • IP: 10.10.11.72

  • Sistema operativo: Windows

  • Dificultad: 🟡 Media

  • Fecha: 03/07/2025


Configuración del host

La plataforma nos proporciona las credenciales iniciales para esta máquina:

/etc/passwd

Añadimos la IP a nuestro /etc/hosts y accedemos través del navegador.

Escaneo de puertos

Encontramos multitud de puertos abiertos, lo normal en máquinas Windows. Ademas nos encontramos con que la máquina objetivo es un Domain Controller, por la presencia de los puertos 3268 o 389, reservados para DCs.

Destacan los puertos:

  • 111 (RPC) - Puede contener recursos compartidos o enumerar usuarios

  • 445 (SMB) - Recursos compartidos y enumeración

  • 5985 (WinRM) - Acceso con EvilWinRM con contraseña

  • 88 (Kerberos) - Posible Kerberoasting o AS-REP Roasting


Enumeración inicial

Con enum4linux-ng conseguimos obtener un listado de todos los usuarios del sistema y encontramos 5 shares:


Enumeración de Active Directory

Enumeración de usuarios/grupos

De igual manera confirmamos los usuarios encontrados con crackmapexec:

Añadimos los usuarios encontramos a un archivo valid-users.txt. Probar a volcar tickets Kerberos mediante ASREP-Roasting falla:

Shares - Recursos compartidos

No encontramos ningún share interesante.


Enumeración con Bloodhound

Editar resolv.conf

Bloodhound Python

Análisis con Bloodhound

Nuestro usuario Henry tiene permisos WriteSPN sobre el usuario Alfred:


Ruta de explotación

1. Kerberoasting dirigido

Para explotar el permiso WriteSPN usaremos la herramienta targeterKerberoast:

Antes de ejecutarlo debemos sincronizar la hora de nuestro Kali con el Domain Controller, ya que sino rechazará el TGT:

Ahora si, lo ejecutamos de la siguiente manera

Obtenemos el hash de Alfred, que crackearemos con John the Ripper o Hashcat:

Tenemos la contraseña de Alfred: basketball

2. BloodHound como Alfred

Usaremos estas nuevas credenciales para volver a enumerar el entorno con BloodHound.

Alfred tiene permisos AddSelf y es miembro del grupo Infraestructure, que tiene permisos ReadGMSAPassword sobre el equipo ANSIBLE_DEV$:

3. Añadir a Alfred a Infraestructure

Para ello usaremos BloodyAD de la siguiente manera:

4. ReadGMSAPassword

Una vez que nos hemos añadido al grupo infraestructure, usaremos la herramienta GMSAdumpster para leer la contraseña o hash de ansible_dev$:

Intentamos crackear los hashes pero no tenemos éxito, por lo que enumeraremos otra vez el sistema con BloodHound pasándole el hash.

5. Bloodhound 3

ANSIBLE_DEV$ tiene permisos ForceChangePassword sobre el usuario Sam:

6. Cambiar la contraseña de Sam

Usaremos BloodyAD para ello:

Ahora volvemos a enumerar el entorno con BloodHound y las nuevas credenciales de Sam:

El usuario Sam tiene permisos WriteOwner sobre el usuario John

7. Tomar control de John

Usa BloodyAD para hacer takeover del usuario John:

Usa genericAll para concederte control total:

Y cambiamos la contraseña de John:

Una vez cambiada la contraseña nos conectamos por EvilWinRM y ganamos la user flag.


User Flag


Escalada de Privilegios

Enumeraremos el entorno de nuevo con Bloodhound y las nuevas credenciales de John

El usuario John tiene permisos GenericAll sobre la unidad organizativa ACDS:

El siguiente paso es hacerse cargo de sus objetos secundarios:

Cambiar la contraseña de cert_admin

Al intentar cambiar la contraseña de cert_admin vemos que el usuario ha sido eliminado:

Podemos restaurar el usuario y cambiar su contraseña con:

Certipy Find

Ahora extraemos la información del archivo txt generado:

Al final del todo encontramos una vulnerabilidad relevante: ESC15

Paso 1

Solicitar un certificado, inyectando la política de aplicación “Autenticación de cliente” y el UPN de destino

Paso 2

Autenticarse a través de Schannel (LDAPS) utilizando el certificado obtenido y cambiar la contraseña del administrador:


👑 Root Flag

Nos conectamos por EvilWinRM como administrator y obtenemos la root flag:

Última actualización

¿Te fue útil?