Certificate Mapping (strong vs weak; ESC9/ESC10)
concept active-directoryad-cspkipkinitkerberos updated 07 Sept 2026 · 1 min
Certificate Mapping
When a certificate is presented for PKINIT / Schannel logon, the DC must map it to an AD account. How it maps is the ESC9/ESC10 surface and the point Microsoft’s May 2022 patch (KB5014754, CVE-2022-34691) hardened.
Implicit (weak) vs explicit (strong)
- Implicit mapping — the cert’s SAN UPN/DNS is matched to an account. Weak: whoever controls a SAN controls the identity.
- The SID binding (
szOID_NTDS_CA_SECURITY_EXT) — post-patch, issued certs embed the requester’s SID, and DCs in Full Enforcement require it to match. A template lacking this extension is the esc9 condition. - Strong explicit mapping —
altSecurityIdentitieson the account with a strong format (Issuer+Serial, SKI, SHA1-PubKey). Weak explicit formats (Issuer+Subject, UPN) are esc10 / ESC14 abuse.
Enforcement modes
StrongCertificateBindingEnforcement (DC registry): 0 = disabled (fully
abusable), 1 = compatibility (default, still abusable in cases), 2 = full
enforcement. Many domains sit at 1, which keeps ESC9/ESC10 alive.
Red-team notes (OPSEC)
- Check enforcement + template SID extension with
certipy find; ESC9/ESC10 are viable exactly when a template omits the SID ext or enforcement is<2and a weakaltSecurityIdentitiescan be written (acl-abuse). - The abuse chains through shadow-credentials / a UPN swap; the tell is a 4768 cert-preauth for an account that mismatches the cert’s real requester.