A network authentication protocol using symmetric-key cryptography and trusted third-party tickets. No password ever travels the wire. Provides mutual authentication — both client and service verify each other. Single sign-on (SSO) within a realm. Developed at MIT; used by Active Directory, Linux Kerberos, macOS, and more.
Client — the user/workstation requesting access (Alice).
KDC — Key Distribution Centre; runs two logical services: Authentication Service (AS) issues TGTs, Ticket Granting Service (TGS) issues service tickets. In AD, the DC is the KDC.
Service — the resource being accessed (fileserver, MSSQL, etc.).
TGT (Ticket Granting Ticket) — proof of identity cached on the client. Encrypted with the krbtgt key (only the KDC can read it). Lifetime ~10 hours. Used to request service tickets without re-entering credentials.
Service Ticket — authorises access to one specific service, identified by its SPN. Shorter lived. Encrypted with the service account's key.
TGT session key — shared between client and KDC. Created during AS exchange. Client uses it to encrypt Authenticators for TGS requests.
Service session key — shared between client and service. Created during TGS exchange. Used to encrypt Authenticators in AP-REQ and prove mutual auth in AP-REP.
Neither key is reused between exchanges. Forward secrecy per session.
By default the client must include PA-ENC-TIMESTAMP — a timestamp encrypted with the user's long-term key — in the AS-REQ. This proves password knowledge before the KDC responds.
If pre-auth is disabled on an account, the KDC returns an AS-REP with enc-part encrypted under the user's key to anyone who asks — enabling offline cracking (AS-REP Roasting).
Privilege Attribute Certificate — a Microsoft extension embedded inside every ticket. Contains: user SID, group SIDs, logon info, and account flags. Signed by the KDC (krbtgt key) and optionally by the service key. Used for authorisation decisions by services and the OS — group memberships come from here, not from an LDAP lookup at access time.
The PAC is a variable-length buffer embedded in the authorization-data field of a ticket. It consists of multiple typed buffers, each describing a different aspect of the principal.
Delegation allows a service to act on behalf of a user when accessing backend resources. Two S4U (Service for User) extension protocols enable this.
Used when a user authenticated via NTLM or web forms (not Kerberos) but the service needs a service ticket to delegate further. The service requests a forwardable service ticket for itself naming the user, without the user's involvement.
Service A uses the S4U2Self ticket (or a forwarded TGT) to request a service ticket for Service B on behalf of the user. Constrained delegation limits which target SPNs are allowed. RBCD stores the allowlist on the target resource.
Plaintext password of the target account. If it is a service or admin account, this provides direct access or lateral movement opportunities.
Plaintext password of the service account. Service accounts often have elevated privileges (local admin, database admin), enabling lateral movement or privilege escalation.
Full access to any resources the victim's tickets authorise, for the remaining ticket lifetime (up to 10 hours for TGTs). No need to know the user's password.
Complete and persistent domain compromise. Can impersonate any user with any privilege. Survives password resets of individual accounts. Persists until the krbtgt password is reset twice.
Access to that specific service as any user (including fabricated Domain Admin membership). Stealthier than Golden Ticket since there is no TGS request to log. Impact limited to one service per compromised key.