Sauna — HackTheBox Machine Writeup
Enumerated the Domain Controller via Nmap, identifying Kerberos and LDAP. Extracted employee names from the IIS website to generate valid username candidates.
Leveraged valid usernames to perform AS-REP roasting against accounts without pre-authentication requirements, obtaining fsmith's Kerberos ticket and cracking it offline.
Discovered AutoLogon credentials for a service account via WinRM registry enumeration. Utilized the account's DCSync privileges to dump the Administrator's NTLM hash and authenticate via Pass-the-Hash.
Challenge Overview
Sauna is a Windows Domain Controller running an IIS website that leaks the
names of every employee on a "Meet The Team" page. Those names become Kerberos
username candidates, and one account (fsmith) is AS-REP roastable — it
does not require Kerberos pre-authentication, so its password can be requested
and cracked offline. The resulting WinRM session reveals AutoLogon
credentials for a loan-manager service account (svc_loanmgr) stored in the
registry, and that account holds DCSync rights (Replicating Directory
Changes). A single secretsdump call then hands over the domain, and a
Pass-the-Hash login as Administrator closes the box.
Tooling note: all Active Directory collection and analysis on this machine is done with pharaohound — a single tool that queries the DC over LDAP (its built-in collector), builds the object graph, and runs 30+ analyzers to rank attack paths. No BloodHound/SharpHound needed.
Reconnaissance & Service Enumeration
::Port Scan
Full TCP sweep first:

The mix of Kerberos (88), LDAP (389/636), global catalog (3268/3269) and WinRM (5985) is the signature of a Domain Controller. Service versions confirm it:
Domain: EGOTISTICAL-BANK.LOCAL — hostname SAUNA. WinRM being open
means evil-winrm is a viable shell once we have credentials.
::Website Enumeration (Port 80)
The IIS site is a static bank template ("Egotistical Bank"). The interesting
page is /about.html
The "Meet The Team" page lists six employees:
| First name | Surname | Username candidate |
|---|---|---|
| Fergus | Smith | fsmith |
| Shaun | Coins | scoins |
| Hugo | Bear | hbear |
| Bowie | Taylor | btaylor |
| Sophie | Driver | sdriver |
| Steven | Kerb | skerb |

Key insight: AD usernames follow predictable conventions. A
[first initial][lastname] format gives a short candidate list to throw at
Kerberos — the KDC answers differently for existing and non-existing
accounts, which is exactly how username enumeration works.
::SMB / LDAP Quick Checks
Anonymous SMB has no readable shares, and the LDAP tree is locked down for anonymous binds:
Username Enumeration with kerbrute

Four valid accounts: administrator, sauna, fsmith, hsmith.
Initial Access — AS-REP Roasting
::Why AS-REP roasting works
In Kerberos, the first ticket request (AS-REQ) is normally sent encrypted
with the user's password-derived key to prove the client knows the password
(pre-authentication). When an account has UF_DONT_REQUIRE_PREAUTH set,
the KDC happily returns an encrypted TGT for anyone who asks. That TGT is
encrypted with the user's password hash — so we can brute-force the password
offline from the ticket alone.
impacket-GetNPUsers asks the KDC for a TGT for each candidate:

fsmith is roastable — a $krb5asrep$23$ hash is written to disk
(truncated here, full value in loot/hashes.asreproast):
::Cracking the hash
Mode 18200 is the AS-REP hash format:

::Shell as fsmith

::User flag
Active Directory Collection & Analysis with pharaohound
With valid credentials, pharaohound's built-in collector queries the DC over LDAP and pulls every domain object (users, groups, computers, GPOs, containers, ACLs) in a couple of seconds:

Analyzing the collection (with fsmith marked as compromised) ranks the
attack paths:

Attack-path map: Path 1 (the one we already used) confirms the
AS-REP roast. Path 3 flags that the DC computer account itself has
unconstrained delegation — a classic setup for forcing authentication
and grabbing a DC$ TGT, which can then be used for DCSync. Either way the
destination is the same: Domain Admin.
Privilege Escalation — fsmith → svc_loanmgr
::AutoLogon credentials in the registry
Windows can log a user in automatically at boot; the credentials are stored
under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon. It is a
surprisingly common misconfiguration on lab/legacy machines:

The account is actually svc_loanmgr (the display name says
"loanmanager"). Verify the credentials:
Why this matters: svc_loanmgr is a service account — and on this
domain it has been granted far more than it needs.
Domain Compromise — DCSync with svc_loanmgr
Re-collecting with the more privileged account and re-analyzing shows the
same picture — multiple roads to Domain Admin. The decisive right is
DCSync: the Replicating Directory Changes (and All) permissions let
an account impersonate a Domain Controller and ask for any account's password
hash over the replication protocol. It is intended for backup agents; here it
was handed to a loan-manager bot.
The proof is one command:

Administrator NTLM hash: 823452073d75b9d1cf70ebdf86c7f98e
Root — Pass-the-Hash as Administrator
With the NTLM hash we never need the Administrator password — WinRM accepts the hash directly:

::Root flag
References

Red Team Consultant · Penetration Tester · Bug Bounty Hunter
Offensive security professional with 250+ vulnerabilities reported across 50+ organizations including Atlassian, Vimeo, and AT&T. Sharing research, tools, and field notes.