Home
VAPT Web Application PentestAPI PentestMobile App PentestInfrastructure PentestAI & LLM PentestOT / ICS PentestIoT PentestPenetration TestingAll VAPT services
Red Team Red Team EngagementAdversary SimulationAssumed BreachPurple TeamingSocial Engineering
CompanyResourcesBlogFree Consultation

AS-REP roasting: the accounts that skip Kerberos pre-authentication

A misconfigured account can hand out a crackable password hash with no credential at all. This is how AS-REP roasting runs, and how to shut it down.

Joel Aviad OssiJoel Aviad OssiRed Team Lead, RedTeam Security
7 min read
A row of glowing isometric objects on a dark grid: a workstation, a tall domain controller rack, and a metal padlock splitting open, joined left to right by red flow lines.

Key takeaways

  • An account flagged not to require Kerberos pre-authentication will return an AS-REP whose encrypted part is derived from the account password, and that part cracks offline.
  • The attack can run with no valid credential at all: a list of likely usernames sent to the domain controller is enough to collect hashes.
  • Nothing on the domain sees a failed logon, because the guessing happens offline against the attacker's own hardware, not against the KDC.
  • The fix is to remove the flag, enforce a password long enough to survive offline cracking, and alert on Kerberos TGT requests that carry no pre-authentication.

What Kerberos pre-authentication actually checks

When a user signs in with Kerberos, the client encrypts the current time with a key derived from the user's password and sends that inside the initial request, the AS-REQ. This field is PA-ENC-TIMESTAMP. The key distribution centre decrypts it, checks the timestamp is recent, and only then hands back a ticket. That single step is what stops a stranger asking for material that is tied to a password they do not hold.

An account can be told to skip it. The userAccountControl attribute carries a bit named DONT_REQ_PREAUTH, hex 0x400000, decimal 4194304. Set that bit and the domain controller will answer an AS-REQ for the account even though no proof of the password was offered. It usually gets set for legacy Unix and Kerberos interoperability, or for an old application that could not perform pre-authentication, and it is the kind of leftover an internal infrastructure pentest is there to find, because it tends to be set once and never reviewed.

Finding the accounts that skip it

With any authenticated domain account you can read userAccountControl over LDAP and filter for the flag directly. The bitwise matching rule 1.2.840.113556.1.4.803 lets you ask for exactly the accounts that carry it, so a single query returns your target list.

The dangerous path needs no account at all. Because the request itself demands no proof of identity, a list of likely usernames sent to the controller is enough: for each name that exists and carries the flag, you get a reply, and for the rest you get an error you can ignore. Impacket's GetNPUsers.py runs both modes. The username list can come from open sources or from an earlier foothold, such as the one described in our write-up of LLMNR poisoning and SMB relay.

Enumeration
# With any domain account: accounts flagged DONT_REQ_PREAUTH (0x400000)
(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))

# With no credential at all: try a username list against the KDC
GetNPUsers.py corp.example/ -no-pass -usersfile users.txt \
    -dc-ip 10.0.0.10 -format hashcat

The reply is a crackable hash

It is worth being precise about what cracks, because the name is misleading. With pre-authentication disabled there is no encrypted timestamp in play at all, so nothing about a timestamp is recovered. What comes back is the AS-REP, and part of that reply is encrypted with a key derived from the account's password. By default the attacker asks for RC4 encryption, which is fast to test. That encrypted part is saved in the $krb5asrep$23$ format and cracked offline. MITRE catalogues the technique as T1558.004.

The guessing then happens on the attacker's own hardware, at whatever speed it can manage, with no further contact with the network. That is the quiet part: the domain controller logged one ordinary ticket request and never sees a wrong password tried. This offline character is why the technique shows up so often in an assumed breach exercise, where the operator starts inside and is looking for the cheapest path to a real credential.

Recovered hash and offline crack
[email protected]:9f2b...c41d$7a3e...  (truncated)

$ hashcat -m 18200 asrep.hash rockyou.txt
...
[email protected]:...:Summer2023!

Session..........: hashcat
Status...........: Cracked
A two-column exchange between an attacker and a domain controller. The attacker sends an AS-REQ for an account with pre-authentication disabled. The controller returns an AS-REP whose encrypted part is derived from the account password. The attacker cracks that part offline and recovers a valid domain password, with
Why a single disabled flag lets an attacker walk away with a valid credential and leave no failed logon behind.

AS-REP roasting and Kerberoasting are not the same attack

Both attacks end in an offline crack and both abuse Kerberos, so they are easy to confuse. The trigger is what separates them. Kerberoasting needs a valid domain account to request a service ticket for a service principal name, and the crack recovers the service account's password. AS-REP roasting can need no credential, only an account left with pre-authentication disabled. If you have read our piece on Kerberoasting, the shape will be familiar: the difference is where the crackable material comes from, and whether you needed to be inside to get it.

The recovered password matters because weak requirements are what make the offline crack pay off. The underlying weakness is CWE-521, weak password requirements: a short or common password falls in a wordlist run, a long random one does not.

How AS-REP roasting compares with Kerberoasting.
AS-REP roastingKerberoasting
Credential neededOften none, a username list is enoughA valid domain account
What is misconfiguredDONT_REQ_PREAUTH on the accountA service principal name on the account
What cracksThe AS-REP encrypted partThe service ticket (TGS) encrypted part
hashcat mode1820013100
Primary fixRemove the flag, strong passwordManaged or strong service password, AES

Where it sits in the kill chain

On the Unified Kill Chain, AS-REP roasting is an early credential-access move. It belongs in the In stage: reconnaissance finds a domain controller reachable on port 88, and the roast turns that into a password. It rarely needs anything before it, which is why it is often the first real credential an operator holds.

What that credential buys depends on the account. A forgotten service account with the flag can still hold rights across many hosts, so the password feeds privilege escalation and lateral movement in the Through stage. From there other AD weaknesses take over, such as the certificate-template path in our write-up of AD CS ESC1.

AS-REP roasting as an early credential-access win that feeds everything an operator does after it.

Closing the gap

Four controls break the chain, in descending order of how completely they end it. Remove DONT_REQ_PREAUTH from every account that does not truly need it, which means auditing userAccountControl rather than trusting that nobody set it. Make the passwords long enough to survive an offline run, following the length-first guidance in NIST SP 800-63B. Prefer AES over RC4 so the encrypted part is slower to test. And alert on the one signal the attack cannot hide: a Kerberos TGT request, event 4768, that carries no pre-authentication.

The order matters because the first control removes the target and the last only catches the attempt. If you are deciding how much internal testing to buy to surface flags like this across a whole estate, our guide to buying an infrastructure pentest covers external against internal scope and depth.

Controls that break the AS-REP roasting chain, strongest first.
ControlWhat it doesReference
Remove DONT_REQ_PREAUTHNo account answers an AS-REQ without pre-authuserAccountControl audit
Strong password policyA recovered hash does not crack in a useful windowNIST SP 800-63B, CWE-521
Prefer AES over RC4The encrypted part is far slower to test offlineKerberos configuration
Alert on 4768 with no pre-authThe roast surfaces as a TGT request with pre-auth type 0SIEM detection rule

What this means for Active Directory in the UAE

Almost every enterprise in Abu Dhabi and Dubai runs Active Directory, and a flagged account is the same latent risk whether the domain sits in a bank, a government supplier or a hospital group. The UAE regulators that name security testing all expect the internal weaknesses that lead to credential theft to be found and fixed, not just the perimeter. CBUAE-regulated banks, Dubai government entities and their suppliers under DESC, Abu Dhabi healthcare providers under ADHICS, and federal entities under the NESA-published Information Assurance Standards are each accountable for the state of their internal identity systems.

For a free-zone or mainland entity in either emirate, an AS-REP roastable account is exactly the kind of finding an internal test is expected to surface and evidence, because it turns a quiet configuration slip into domain credentials without tripping a single failed-logon alert. These flags accumulate over years of mergers, migrations and legacy integrations, so the practical control is a recurring internal review rather than a one-time clean-up, in both Abu Dhabi and Dubai.

Frequently asked questions

What is AS-REP roasting?

AS-REP roasting is a Kerberos credential-access attack against accounts that are flagged not to require pre-authentication. The domain controller answers an authentication request for such an account with an AS-REP whose encrypted part is derived from the account's password. That part is saved as a hash and cracked offline, recovering the password if it is weak.

How does AS-REP roasting differ from Kerberoasting?

Both end in an offline password crack, but the trigger differs. Kerberoasting needs a valid domain account to request a service ticket for a service principal name. AS-REP roasting can need no credential at all, only an account left with Kerberos pre-authentication disabled, and it recovers that account's own password rather than a service account's.

Do you need credentials to AS-REP roast an account?

Often not. Because the initial Kerberos request demands no proof of identity, a list of likely usernames sent to the domain controller is enough to collect hashes for any flagged account. Reading the flag over LDAP to build a precise target list does require an authenticated account, but the username-list path does not.

How do accounts end up without Kerberos pre-authentication?

The DONT_REQ_PREAUTH flag is usually set for legacy Unix or Kerberos interoperability, or for older applications that could not perform pre-authentication. It is also sometimes copied from an account template and forgotten. Because it is rarely reviewed after it is set, it tends to persist for years.

What is the DONT_REQ_PREAUTH flag?

It is a bit in the userAccountControl attribute of an Active Directory account, hex 0x400000 or decimal 4194304. When it is set, the domain controller will issue an AS-REP for the account without first verifying that the requester knows the password, which is the condition AS-REP roasting depends on.

Which hashcat mode cracks AS-REP hashes?

Mode 18200 cracks the RC4 form of the AS-REP hash, the $krb5asrep$23$ format that tools request by default. It is distinct from mode 13100, which cracks the RC4 service tickets recovered by Kerberoasting. Both run the same way: a wordlist or mask tested offline against the encrypted part.

How do you detect AS-REP roasting?

Watch for Kerberos TGT requests, Windows event 4768, that carry a pre-authentication type of 0, which means no pre-authentication was performed. A burst of these across several accounts, or any for accounts that should not be flagged, is the signal. The offline cracking that follows is invisible, so the request is the only chance to catch it.

How do you prevent AS-REP roasting?

Remove the DONT_REQ_PREAUTH flag from any account that does not strictly need it, and audit userAccountControl regularly rather than assuming it is clean. Enforce passwords long enough to survive offline cracking, prefer AES over RC4 encryption, and alert on TGT requests that carry no pre-authentication.

The engagements this applies to

Joel Aviad Ossi, Red Team Lead at RedTeam Security
Joel Aviad OssiRed Team Lead, RedTeam Security

Joel Aviad Ossi is Red Team Lead at RedTeam Security, the Dubai-licensed trading brand of WebSec FZCO. He scopes and runs objective-based engagements across the UAE.

Let's talk about your security

Tell us the objective you want tested. We will come back with a scope, a timeline and a quote, under NDA from the first conversation.

Email [email protected]
IFZA Business Park, Building A2
Nadd Hessa, Dubai Silicon Oasis
Dubai, United Arab Emirates