Rooting TombWatcher: Navigating Active Directory Complexities and Elusive Paths
Machine: TombWatcher (Windows)
Difficulty: Medium
Points: 30
IP: 10.129.196.94
Domain: tombwatcher.htb
TombWatcher proved to be a challenging Active Directory box on Hack The Box, pushing the boundaries of enumeration, privilege escalation, and persistence. What started as a seemingly straightforward AD enumeration quickly devolved into a complex dance of version-specific tool quirks, mysterious machine resets, and elusive permissions. This write-up details the journey from initial access to full Domain Administrator compromise.
1. Initial Reconnaissance & Gaining a Foothold
Our adventure began with a single set of credentials: henry / H3nry_987TGV!
. The first order of business was to understand the network landscape.
1.1. Network & Service Discovery with Nmap
A thorough nmap
scan painted a clear picture of a Windows Domain Controller (DC01
) for the tombwatcher.htb
domain. Key Active Directory ports (53, 88, 135, 389/636, 445) were wide open, as was WinRM (5985), indicating potential PowerShell remoting. The nmap
scan also revealed an IIS web server on port 80.
┌──(kali㉿kali)-[~]
└─$ nmap -sC -sV -T5 -oA tombwatcher_initial 10.129.196.94
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-07 15:00 EDT
Nmap scan report for 10.129.196.94
Host is up (0.075s latency).
Not shown: 987 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-06-07 23:00:45Z)
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-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: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
|_ssl-date: 2025-06-07T23:02:08+00:00; +4h00m03s from scanner time.
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-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: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
|_ssl-date: 2025-06-07T23:02:09+00:00; +4h00m03s from scanner time.
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-07T23:02:08+00:00; +4h00m03s 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: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
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: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
|_ssl-date: 2025-06-07T23:02:09+00:00; +4h00m03s from scanner time.
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: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: 4h00m02s, deviation: 0s, median: 4h00m02s
| smb2-time:
| date: 2025-06-07T23:01:30
|_ start_date: N/A
Default Page, nothing here.
A gobuster
scan was also performed to discover directories on the web server, which identified /aspnet_client
.
┌──(kali㉿kali)-[~]
└─$ gobuster dir -u http://10.129.196.94 -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-directories.txt -t 50 -x php,txt,html,js,json,bak,config -k --random-agent -o certificate_dir.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.196.94
[+] Method: GET
[+] Threads: 50
[+] Wordlist: /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-directories.txt
[+] Negative Status codes: 404
[+] User Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/44.0.2403.155 Safari/537.36
[+] Extensions: txt,html,js,json,bak,config,php
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/aspnet_client (Status: 301) [Size: 158] [--> http://10.129.196.94/aspnet_client/]
Progress: 1399 / 240000 (0.58%)[ERROR] Get "http://10.129.196.94/page.txt": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
[ERROR] Get "http://10.129.196.94/editor": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
[ERROR] Get "http://10.129.196.94/editor.json": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Progress: 2061 / 240000 (0.86%)[ERROR] Get "http://10.129.196.94/database.config": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
[ERROR] Get "http://10.129.196.94/ads": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
1.2. Active Directory Enumeration with CrackMapExec
Using the henry
credentials, we enumerated domain users and confirmed the domain's weak password policy. This initial enumeration provided a list of users, including Alfred
, sam
, and john
.
┌──(kali㉿kali)-[~]
└─$ crackmapexec smb 10.129.196.94 -u henry -p 'H3nry_987TGV!' --users-export users.list
SMB 10.129.196.94 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:tombwatcher.htb) (signing:True) (SMBv1:False)
SMB 10.129.196.94 445 DC01 [+] tombwatcher.htb\henry:H3nry_987TGV!
SMB 10.129.196.94 445 DC01 -Username- -Last PW Set- -BadPW- -Description-
SMB 10.129.196.94 445 DC01 Administrator 2025-04-25 14:56:03 0 Built-in account for administering the computer/domain
SMB 10.129.196.94 445 DC01 Guest <never> 0 Built-in account for guest access to the computer/domain
SMB 10.129.196.94 445 DC01 krbtgt 2024-11-16 00:02:28 0 Key Distribution Center Service Account
SMB 10.129.196.94 445 DC01 Henry 2025-05-12 15:17:03 0
SMB 10.129.196.94 445 DC01 Alfred 2025-05-12 15:17:03 0
SMB 10.129.196.94 445 DC01 sam 2025-05-12 15:17:03 0
SMB 10.129.196.94 445 DC01 john 2025-05-19 13:25:10 0
SMB 10.129.196.94 445 DC01 [*] Enumerated 7 local users: TOMBWATCHER
SMB 10.129.196.94 445 DC01 [*] Writing 7 local users to users.list
Attempts to use psexec.py
and smbexec.py
with henry
failed, indicating writable shares were not present.
┌──(kali㉿kali)-[~]
└─$ /usr/share/doc/python3-impacket/examples/psexec.py tombwatcher.htb/henry:'H3nry_987TGV!'@10.129.196.94
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 10.129.196.94.....
[-] share 'ADMIN$' is not writable.
[-] share 'C$' is not writable.
[-] share 'NETLOGON' is not writable.
[-] share 'SYSVOL' is not writable.
┌──(kali㉿kali)-[~]
└─$ /usr/share/doc/python3-impacket/examples/smbexec.py tombwatcher.htb/henry:'H3nry_987TGV!'@10.129.196.94
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 10.129.196.94.....
[-] share 'ADMIN$' is not writable.
[-] share 'C$' is not writable.
[-] share 'NETLOGON' is not writable.
[-] share 'SYSVOL' is not writable.
certipy-ad find
was used to enumerate certificate authorities and templates, but encountered timeouts and lookup failures.
┌──(kali㉿kali)-[~]
└─$ certipy-ad find -u henry -p 'H3nry_987TGV!' -dc-ip 10.129.196.94
Certipy v5.0.2 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Found 13 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'tombwatcher-CA-1' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'tombwatcher-CA-1'
[*] Checking web enrollment for CA 'tombwatcher-CA-1' @ 'DC01.tombwatcher.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Failed to lookup object with SID 'S-1-5-21-1392491010-1358638721-2126982587-1111'
[*] Saving text output to '20250607152356_Certipy.txt'
[*] Wrote text output to '20250607152356_Certipy.txt'
[*] Saving JSON output to '20250607152356_Certipy.json'
[*] Wrote JSON output to '20250607152356_Certipy.json'