TombWatcher HackTheBox (Intermediate)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-10 07:02 EDT
Nmap scan report for 10.10.11.72
Host is up (0.032s 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-title: IIS Windows Server
| http-methods:
|_ Potentially risky methods: TRACE
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-10-10 15:02:31Z)
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: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-10-10T15:04:02+00:00; +4h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2025-10-10T14:24:24
|_Not valid after: 2026-10-10T14:24:24
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-10-10T15:04:01+00:00; +4h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2025-10-10T14:24:24
|_Not valid after: 2026-10-10T14:24:24
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2025-10-10T14:24:24
|_Not valid after: 2026-10-10T14:24:24
|_ssl-date: 2025-10-10T15:04:02+00:00; +4h00m01s from scanner time.
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2025-10-10T14:24:24
|_Not valid after: 2026-10-10T14:24:24
|_ssl-date: 2025-10-10T15:04:01+00:00; +4h00m01s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
49540/tcp open msrpc Microsoft Windows RPC
49574/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49686/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49687/tcp open msrpc Microsoft Windows RPC
49688/tcp open msrpc Microsoft Windows RPC
49704/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 4h00m00s, deviation: 0s, median: 4h00m00s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2025-10-10T15:03:22
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 97.44 secondsVeremos varios puertos interesantes, entre ellos el puerto 80 que aloja una pagina web, vamos a entrar dentro de la misma a ver que nos encontramos, pero antes como vemos en el reporte nos veremos un dominio de AD llamado tombwatcher.htb y DC01.tombwatcher.htb del Domain Controller por lo que vamos añadirlo a nuestro archivo hosts.
Lo guardamos y entramos en la pagina de esta forma:
Veremos un IIS normal de web nada interesante, vamos a realizar un fuzzing por SMB y en concreto vamos a utilizar las credenciales que nos proporcionan en HTB:

Veremos que son:
SMB
Vamos a probar a enumerar el puerto SMB a ver que vemos con dichas credenciales:
Info:
Veremos informacion muy interesante entre ella veremos varios usuarios:
users.txt
Veremos que john puede conectarse por WinRM es una opcion interesante, despues vemos que DC01 puede publicar certificados y por ultimo vemos un grupo llamado DnsAdmins que esto puede tener una vulnerabilidad conocida.
Netexec
Vamos a probar fuerza bruta por SMB con netexec con el listado de usuarios a ver si hay suerte.
Info:
Veremos que hemos encontrado unas credenciales del usuario alfred vamos a ver que podemos hacer con este usuario.
BloodHound
Vamos a descargarnos en un ZIP toda la info del AD con esta herramienta para pasarsela a BloodHound de esta forma:
Info:
Con esto veremos un .zip el cual contiene toda la info para pasarsela a BloodHound vamos a instalarnos dicha herramienta.
URL = Download BloodHound en Docker
Info:
Ahora que esta importado en nuestro docker y levantado podremos acceder a el desde la siguiente URL.
Nos logueamos con las credenciales propocionadas por la herramienta:
Una vez dentro vamos a importar el .zip y tendremos que esperar un poco a que cargue todos los datos, despues cuando vayamos al dashboard principal veremos todos los datos, vamos a investigar el usuario henry que puede tener con el usuario alfred, investigando un poco veremos lo siguiente:

Veremos que tenemos los privilegios de WriteSPN sobre el usuario alfred por lo que podremos descargarnos un script ya configurado para ello y poder realizar la vulnerabilidad de esta forma:
NOTA
Pero antes si queremos que se pare el contenedor o lo quisieramos levantar de nuevo, podemos hacer lo siguiente con el binario:
Ahora siguiendo con la explotacion de dicha vulnerabilidad...
URL = Download addspn.py
Info:
Veremos que ha funcionado, ahora si lo comprobamos de esta forma:
Info:
Veremos que se agrego de forma correcta, pero de momento no podremos hacer nada, por lo que vamos a seguir investigando en el BloodHound pero esta vez nos vamos a descargar con las credenciales del usuario alfred.
Info:
Ahora importaremos en BloodHound este nuevo archivo, investigando un poco veremos con el usuario alfred este privilegio.
Escalate user john

Veremos que tenemos privilegios de AddSelf con el grupo Infrastructure y este grupo a la vez tiene este privilegio:

Y ala vez Ansible_devs$ tiene los privilegios siguientes respecto al usuario sam:

Vemos que podremos cambiarle la contraseña desde dicho "Equipo", tambien con este usuario veremos los privilegios bajo el usuario john.

Vemos que tenemos el WriteOwner sobre el usuario john que es el que sabemos que se puede conectar por WinRM, por lo que toda esta escalada nos interesa bastante.
Ya por ultimo con este usuario john veremos estos privilegios super interesante respecto a los ADCS:

Teniendo ya practicamente toda la escalada vista por encima vamos a ponerlo en practica de esta forma, empecemos primero con el privilegios de AddSelf.
Info:
Veremos que ha funcionado, ahora vamos a comprobar si realmente se agrego a dicho grupo alfred:
Info:
Veremos que si se agrego de forma correcta, ahora siendo de ese grupo recordemos que podemos leer el hash NTLM de dicho usuario.
Vamos a descargarnos un script el cual nos automatiza todo esto:
URL = Download bloodyAD
Info:
Veremos que ha funcionado, obtenemos el hash NTLM del usuario ANSIBLE_DEV$, vamos a comprobarlo de esta forma:
Info:
Veremos que funciona, ahora que con este usuario recordemos que tenemos los privilegios para cambiar la contraseña al usuario sam, podremos realizar lo siguiente:
Info:
Veremos que ha funcionado, por lo que vamos a probar las credenciales de esta forma:
Info:
Veremos que funciona, recordemos que tenemos WriteOwner sobre el usuario john que es el que se puede conectar por WinRM de forma remota, por lo que vamos aprovechar esto:
Vamos añadirnos todos los permisos con el usuario sam al objeto de usuario john de esta forma:
OwnerEdit
Info:
DACLEdit
Info:
Ahora si echo todo lo anterior, ya podremos cambiarle la contraseña a john ya que tenemos los privilegios adecuados que nos hemos añadido.
Info:
Evil-winrm
Veremos que ha funcionado, vamos a probar a meternos por WinRM de esta forma:
Info:
Con esto ya estaremos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Despues de un rato buscando, vamos a probar una tecnica llamada Tombstone AD que es similar al nombre de la maquina de HTB, primero vamos a obtener los objetos o usuarios que estan marcados como eliminados.
Info:
Veremos que hay un usuario llamado cert_admin el cual es bastante interesante, vamos a probar a restaurar a dicho usuario.
Ahora si listamos los usuarios...
Info:
Veremos que se restauro de forma correcta, vamos a probar a cambiarle la contraseña a dicho usuario de esta forma:
Ahora si nos vamos a otra terminal de nuestro atacante y probamos lo siguiente:
Info:
Veremos que se cambio de forma correcta, si lanzamos en PowerShell este comando para ver la informacion de las plantillas:
Veremos despues de un buen rato e investigando mucho esta plantilla de aqui:
El SID del cert_admin es S-1-5-21-1392491010-1358638721-2126982587-1111, coincide con la plantilla de WebServer, por lo que el usuario cert_admin tiene permisos Enroll en la plantilla WebServer. Esto significa que puede solicitar certificados usando esa plantilla.
Si lo verificamos con un prqueño script:
Info:
Veremos que efectivamente si los tiene ya confirmado, pero antes vamos a probar tambien con una herramienta que te automatiza todo esto.
Info:
Veremos que aqui nos muestra una mucho mejor que es la ESC15 vemos que es vulnerable ya directamente, por lo que vamos a realizar lo siguiente para solicitar el certificado del admin:
Info:
Veremos que nos deja un archivo administrator.pfx que es el certificado del admin, vamos autenticarnos con dicho certificado:
Info:
Obtendremos una shell muy pobre, por lo que vamos a cambiarle la contraseña de esta forma:
Info:
Ahora vamos a conectarnos por WinRM con el usuario administrador asi:
Info:
Con esto veremos que ha funcionado y seremos el usuario admin por lo que leeremos la flag del admin.
root.txt
Last updated