Constrained Delegation (KCD)¶
If a service account has SPNs listed in msDS-AllowedToDelegateTo then authenticate to those SPNs as an arbitrary delegable user.
Requirements¶
- An account with SPNs listed in
msDS-AllowedToDelegateTo.- Except for users who are "Protected Users" or marked as "Account is sensitive and cannot be delegated."
Protocol Transition Enabled¶
If the service account also has protocol transition enabled (TrustedToAuthForDelegation) it can obtain service tickets to the specific msDS-AllowedToDelegateTo SPNs via S4U2Self -> S4U2Proxy.
getST will use S4U2self and S4U2proxy to obtain a service ticket
impacket-getST -spn "cifs/target" -impersonate "Administrator" "<domain>"/"<user>":"<password>"
Without Protocol Transition Enabled¶
Clients must authenticate to the service with Kerberos and provide a forwardable ticket. The service can then use S4U2Proxy to the SPNs in msDS-AllowedToDelegateTo. Non-Kerberos client auth (e.g., NTLM) won’t work here because S4U2Self would yield a non-forwardable ticket.