UF_DONT_REQUIRE_PREAUTH flag). The KDC hands back something encrypted with a key it never confirmed the requester should have, but needs less than Kerberoasting to pull off: not even a valid domain credential, just a username.
A Quick Pre-Authentication Refresher
Normal Kerberos authentication starts with the client proving it knows the account’s password before the KDC hands back anything useful: the client encrypts a timestamp with a key derived from the user’s password hash and sends that alongside theAS-REQ. The KDC decrypts it with the same derived key, if the result is a valid, recent timestamp, identity is proven, and only then does the KDC issue the TGT. Anyone who doesn’t know the password can’t produce that encrypted timestamp, so they never get past this step.
The Flaw: Pre-Authentication Disabled
An account with pre-auth disabled skips that proof entirely. The KDC simply trusts the username in theAS-REQ and replies with an AS-REP, no encrypted timestamp required, no check that the requester knows anything at all. Anyone on the network, authenticated or not, can send a raw AS-REQ for that username and get aAS-REP back.
What’s In the AS-REP
Part of thatAS-REP is a session key, encrypted with a key derived from the target user’s own password hash, the same derivation Kerberos uses everywhere else (RC4-HMAC over the NTLM hash by default, or an AES-based derivation if the account is configured for it). That encrypted blob is the crackable artifact: pulled offline, there’s no lockout policy and no per-guess logging, just raw compute against the target’s password, exactly like a Kerberoasting TGS-REP.
AS-REP Roasting vs. Kerberoasting
Why This Is Ever Set
Pre-auth disabled is almost always either a legacy compatibility setting (older Kerberos clients/applications that don’t support pre-authentication), a misconfiguration carried over by copying an old template account, or a setting applied once for a specific reason and never revisited, it’s rarely intentional on a given user account.Finding Vulnerable Accounts
PowerView
Native AD Module (No PowerView Needed)
Impacket
Harvesting the AS-REP
- Linux (Impacket)
- Windows (Rubeus)
- NetExec
Collect Roastable accounts with
impacket-GetNPUsers.py
