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

Kerberoasting: cracking service accounts offline

Any domain user can pull a service ticket sealed with a service account's password and crack it offline. Here is the chain, and what breaks it.

Joel Aviad OssiJoel Aviad OssiRed Team Lead, RedTeam Security
8 min read
A left to right row of isometric objects on a dark field: a workstation, a domain controller issuing a glowing red ticket, and a padlock breaking open into a key, joined by red flow lines.

Key takeaways

  • Any authenticated domain user can request a Kerberos service ticket for any account that has a service principal name, and part of that ticket is sealed with the account's password.
  • The sealed portion is cracked offline, so the guessing never touches the domain and raises no failed-logon noise.
  • Attackers request RC4 tickets on purpose, because the RC4 key is the account's NT hash and cracks far faster than AES.
  • The fix is the password, not the protocol: a group managed service account gives a 120 character rotated secret that no wordlist reaches.
  • Detection watches Kerberos event 4769 for RC4 requests and for one account pulling many service tickets at once.

How a service ticket leaks its own password

Kerberos lets a user ask a domain controller for a ticket to reach a service, and every service that runs under a domain account is registered with a service principal name, or SPN. The catch is who is allowed to ask. Any authenticated account in the domain can request a service ticket for any SPN, and the domain controller does not check whether the caller is entitled to use that service before it hands one over. That check happens later, at the service itself.

The ticket the domain controller returns carries a portion sealed with a key derived from the service account's own password. Capture that ticket and you hold an offline oracle for the password: you can guess against it on your own hardware, at the speed of your rig, with nothing further sent to the domain. This is the technique catalogued as T1558.003 in MITRE ATT&CK, and it is a staple of the credential-access phase on an internal infrastructure penetration test.

Where Kerberoasting sits in the kill chain: the whole attack lives in the credential access step, and most of it happens off the network.

The chain, from one low-privilege login

The chain starts with a single valid domain account at any privilege level. On an internal test that account often comes from an earlier step, such as an LLMNR poisoning and SMB relay capture, but a temporary contractor login serves just as well. With it, the first move is to ask LDAP which accounts carry an SPN, because those are the only ones worth roasting.

With the target list in hand, the operator requests a service ticket for each one and writes the sealed portion to disk. The tooling requests RC4 encrypted tickets by preference, for a reason the next section explains. What comes back is a $krb5tgs$ string, one per account, and the 23 in the prefix marks the RC4 encryption type.

From here the domain is done with. An RC4 ticket cracks in hashcat mode 13100, and a weak or aged service password falls to a common wordlist in minutes. The result is the account's password in clear, and the operator can log in as a service identity that frequently holds local admin across many hosts.

Enumerate service accounts (impacket)
$ GetUserSPNs.py corp.example/jdoe:'Winter2026!' -dc-ip 10.0.0.10

ServicePrincipalName         Name     MemberOf                     PasswordLastSet
---------------------------  -------  ---------------------------  -------------------
MSSQLSvc/sql01.corp.example  svc_sql  CN=SQL Admins,OU=Service...  2021-03-14 09:12:41
HTTP/intranet.corp.example   svc_web  CN=Web Ops,OU=Service...     2020-11-02 16:44:03
Request and extract the tickets
$ GetUserSPNs.py corp.example/jdoe:'Winter2026!' -dc-ip 10.0.0.10 -request -outputfile roast.txt
[*] Requesting TGS for svc_sql
[*] Requesting TGS for svc_web

$ head -c 90 roast.txt
$krb5tgs$23$*svc_sql$CORP.EXAMPLE$MSSQLSvc/sql01*$a1b2c3d4...<truncated>
Crack offline with hashcat
$ hashcat -m 13100 -a 0 roast.txt rockyou.txt
$krb5tgs$23$*svc_sql$...:Summer2019

Status...........: Cracked
Recovered........: 1/2 (50.00%) Digests
Two columns, attacker and domain controller. The attacker asks LDAP for accounts with an SPN, then requests a ticket for each. The controller returns a ticket sealed with the account password. The attacker cracks it offline and recovers a privileged credential.
The domain controller hands a crackable ticket to any authenticated caller; the cracking and the win happen entirely on the attacker's own machine.

Why any user can ask, and why RC4 is the gift

Two design facts make this work. The first is that the domain controller issues a service ticket to any authenticated principal and relies on the service to authorise use afterwards, so requesting a ticket is not itself a privileged act and raises no alarm on its own. The second is the encryption. An RC4 ticket is sealed with a key that is simply the account's NT hash, a single unsalted MD4 of the password, so cracking the ticket is cracking the password at raw hashing speed. That is why the tooling asks for RC4: an AES ticket derives its key through 4096 iterations, which slows guessing by orders of magnitude.

The rest is human. Service accounts tend to be created once, given a memorable password so an engineer can stand the service up, and then left with that password for years because rotating it risks an outage. That is the weakness the chain turns on, recorded as CWE-521 weak password requirements and CWE-262 not using password aging. The password guidance in NIST SP 800-63B is written for exactly this case: length beats complexity, and a long random secret is what defeats an offline guess. The related AS-REP roasting technique attacks the same password weakness from a different ticket.

Ticket encryption type against how hard the sealed ticket is to crack. RC4 is why attackers ask for it by name.
Ticket encryptionhashcat modeKey derivationRelative crack cost
RC4-HMAC (etype 23)13100NT hash, a single MD4Lowest, cracked fastest
AES128 (etype 17)19600PBKDF2, 4096 iterationsHigh
AES256 (etype 18)19700PBKDF2, 4096 iterationsHighest

Breaking the chain

The durable fix is to make the password uncrackable, which means taking it away from humans. A group managed service account, or gMSA, holds a 120 character password that Active Directory rotates automatically, and no wordlist reaches it. Where an application cannot use one, a random password of 25 characters or more with enforced rotation has the same effect. Disabling RC4 for Kerberos removes the fast path and forces any attacker onto AES, but it should be paired with strong passwords rather than trusted on its own.

Detection is the second layer, because the request itself is legitimate traffic. Windows logs each service ticket request as event 4769, and the signal is the shape of the activity: RC4 requests (encryption type 0x17) in an environment that should be AES, or one account pulling tickets for many SPNs in a short window. A honeypot service account with an SPN and no real use is a clean tripwire, since any ticket request for it is suspicious. If this is the exposure you need measured before an attacker finds it, an infrastructure pentest scoped to internal Active Directory is where it surfaces, and the same foothold often chains onward to certificate abuse such as ADCS ESC1.

The events to watch (Windows Security log 4769)
SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17"   // RC4, requested to ease cracking
| summarize Tickets = count() by Account, bin(TimeGenerated, 1h)
| where Tickets > 10

What roastable service accounts mean for UAE networks

Kerberoasting is not exotic. It is a default risk in any organisation running Active Directory, which covers most banks, government bodies and large enterprises across the UAE. For a bank supervised by the Central Bank of the UAE, or a Dubai government entity and its suppliers under DESC, the service accounts that run databases and internal web front ends are exactly the privileged, long-lived credentials these frameworks expect to be controlled and monitored. An Abu Dhabi healthcare provider under ADHICS faces the same exposure on the systems that hold patient data, and the federal Information Assurance regime published through NESA sets the same baseline expectations elsewhere.

Whether an entity sits in a Dubai free zone or on the mainland in Abu Dhabi, the internal Active Directory is usually shared plumbing that a perimeter test never touches. Finding roastable accounts before an attacker does is internal work, and it is a natural objective inside a broader red team engagement as well as a standalone internal test. The market difference between the two emirates is mostly in who authorises the test and how findings are reported, not in whether the weakness is present.

Frequently asked questions

What is Kerberoasting?

Kerberoasting is an attack against Active Directory in which an authenticated user requests Kerberos service tickets for accounts that have a service principal name. Part of each ticket is encrypted with a key derived from the service account's password, so the attacker can crack that password offline. It targets weak service account passwords, not a flaw in the Kerberos protocol itself.

Does Kerberoasting need administrator rights?

No. Any valid domain account, at any privilege level, can request the tickets. That is what makes it dangerous: a single low-privilege foothold is enough to start, and requesting a ticket is normal Kerberos traffic that raises no alarm on its own.

How does Kerberoasting differ from AS-REP roasting?

Both recover a password by cracking Kerberos material offline, but they target different accounts and messages. Kerberoasting cracks a service ticket (TGS) for any account with a service principal name. AS-REP roasting cracks the authentication reply (AS-REP) for accounts that have Kerberos pre-authentication disabled, and it does not even need a valid domain account to start.

Why do attackers request RC4 tickets?

An RC4 encrypted ticket is sealed with a key that is simply the account's NT hash, a single unsalted MD4 of the password. That cracks at raw hashing speed. An AES ticket derives its key through 4096 iterations, which slows offline guessing by orders of magnitude, so tooling asks for RC4 whenever the domain still allows it.

Is Kerberoasting noisy on the network?

The request phase is quiet because it is ordinary Kerberos traffic, and the cracking happens entirely offline on the attacker's own hardware. There are no failed logons at the domain. The detectable signal is the pattern of ticket requests in event 4769, not any single event.

What kind of password resists Kerberoasting?

A long, random one that no wordlist contains. A group managed service account provides a 120 character password rotated automatically by Active Directory, which is the strongest option. Where that is not possible, a random secret of 25 characters or more with enforced rotation is the practical target.

How do you detect Kerberoasting?

Monitor Windows event 4769, the Kerberos service ticket request. Alert on RC4 requests (encryption type 0x17) in an environment that should use AES, and on a single account requesting tickets for many different service principal names in a short period. A honeypot service account whose ticket is never legitimately requested is a reliable tripwire.

Does moving to AES stop Kerberoasting?

It raises the cost sharply but does not remove the risk. An AES ticket is far slower to crack, yet a short or dictionary-based service password can still fall. If RC4 remains enabled in the domain, an attacker can request an RC4 ticket regardless of the account's preferred encryption, so RC4 should be disabled as well.

What is a service principal name (SPN)?

An SPN is an identifier that ties a service instance, such as a database or web application, to the domain account it runs under. Kerberos uses it to work out which account's key should seal a service ticket. Any account with an SPN set can be Kerberoasted, which is why the first step of the attack is listing them from LDAP.

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