
Anvil は、Windows シッククライアントアプリケーション向けのランタイムファーストの攻撃対象領域評価ツールであり、ペネトレーションテスターやセキュリティ研究者が対象を絞ったアプリケーションセキュリティ評価を実施するために構築されています。1 回のターゲット指定実行で複数の攻撃クラスをカバーします。
ランタイムファーストの権限昇格および攻撃対象領域評価ツール for Windows シッククライアント。
Anvilは、Windows シッククライアントアプリケーション向けのランタイムファーストの権限昇格および攻撃対象領域評価ツールです。ファイルシステムを盲目的にスキャンするのではなく、Procmon キャプチャと Windows AccessCheck を組み合わせて、ランタイムに観測されかつ標準ユーザーによる書き込みが確認されたパスのみをレポートし、汎用的な列挙ツールにありがちな誤検出ノイズを排除します。
ほとんどのシッククライアント評価ツールは、1つまたは2つの攻撃クラスをカバーするだけです。Anvilは、ランタイム観測、ACL検証済みの悪用可能性、および幅広い攻撃対象領域がすべて同じターゲット実行に含まれ、ゲート付きパイプラインによって実用的な出力を維持する、という考えに基づいています。
すべての候補は、報告される前に4つの連続したゲートを通過します。
ハードゲート
AccessCheck API で検証モジュールロジックゲート
Supersede、OverwriteIf など) + クロスユーザー書き込み可能ガード.sys パスは除外ターゲット解決
ツールは、ターゲットを実行可能パスに解決します(--exe、--service、または --pid から)。サービスの場合は、ServiceInfo が現在の PID と状態とともに取得されます。
Procmon キャプチャ
プロセス整合性レベルは、起動直後(プロセスが生きている間)に読み取られ、コンテキストに保存されます。
モジュールごとのフィルタリング解析
各モジュールは、独自の .pmc フィルター(filters/ に保存)を使用して Procmon からのフィルタリングされた CSV エクスポートを要求します。CSV が解析され、一連のゲートが適用されます。
静的相関
com モジュールは、追加の静的パスを実行します。ターゲットバイナリに埋め込まれた CLSID をスキャンし、それぞれを HKLM および HKCU に対してチェックして、キャプチャウィンドウ中に実行されなかったハイジャック機会を表面化します。これらは [Static Correlation] タグでフラグが付けられます。
レポート
結果はターミナルに(カラーコード付きで)表示され、必要に応じて JSON またはスタンドアロン HTML レポートに書き出されます。
flowchart TB
%% Phase 1
subgraph Phase1["Phase 1: Target & Runtime Discovery"]
TR["Target Resolver<br/>--exe / --service / --pid"] -->
IL["Integrity Gate<br/>Medium-IL launch / Service restart"] -->
PM["Procmon Engine<br/>Runtime FS / Reg / Pipe events"]
end
%% Phase 2
subgraph Phase2["Phase 2: Signal Reduction"]
direction LR
PF["Per-Module PMC Filters<br/>High-signal traces only"] -->
CSV["Filtered CSV Export"]
end
%% Phase 3
subgraph Phase3["Phase 3: Exploitability Gates"]
HG["Hard Gates<br/>High-Integrity target<br/>Not protected path"] -->
ACL["AccessChk Validation<br/>Writable by standard user"] -->
LG["Logic Gates<br/>Module-specific rules"]
end
%% Phase 4
subgraph Phase4["Phase 4: Correlation"]
RT["Runtime Findings"]
ST["Static Correlation<br/>COM: CLSID binary scan / registry"]
end
%% Phase 5
subgraph Phase5["Phase 5: Reporting"]
SV["Severity Engine<br/>P1–P5"] --> OUT["Console Output"]
SV --> JSON["JSON Report"]
SV --> HTML["HTML Report"]
end
%% Cross-phase flow
PM --> PF
CSV --> HG
LG --> RT
ST -.-> RT
RT --> SV
%% Styling
classDef p1 fill:#0f2a44,stroke:#4cc9f0,color:#e6f1ff
classDef p2 fill:#2b193d,stroke:#f72585,color:#fde8f3
classDef p3 fill:#1f2d1c,stroke:#7ae582,color:#eaf7ea
classDef p4 fill:#3a1f1f,stroke:#ffb703,color:#fff3d6
classDef p5 fill:#0b2e2a,stroke:#00f5d4,color:#e6fffb
class Phase1 p1
class Phase2 p2
class Phase3 p3
class Phase4 p4
class Phase5 p5
linkStyle default stroke:#9aa4b2,stroke-width:2px
| 機能 | AnviL | Spartacus | Robber | winPEAS | Procmon |
|---|---|---|---|---|---|
| 自動探索 | ✅ | ✅ | ✅ | ✅ | ❌ |
| ランタイム検証による探索 | ✅ | ❌ | ❌ | ❌ | ✅ |
| ファントム DLL 検出 | ✅ | ✅ | ❌ | ❌ | ◐ |
| 検索順序を考慮した分析 | ✅ | ❌ | ❌ | ❌ | ❌ |
| ACL ベースの書き込み可能性検証 | ✅ (AccessChk) | ◐ | ◐ | Basic | ❌ |
| モジュールごとの信号フィルタリング | ✅ (.pmc filters) | ❌ | ❌ | ❌ | ❌ |
| 誤検出排除(ゲート付きパイプライン) | ✅ | ❌ | ❌ | ❌ | ❌ |
| サービス再起動と PID 再取得 | ✅ | ❌ | ❌ | ❌ | ❌ |
| Medium-IL ユーザーシミュレーション | ✅ | ❌ | ❌ | ❌ | ❌ |
| DLL ハイジャック(シッククライアント対応) | ✅ | ❌ | ❌ | ◐ | ❌ |
| COM ハイジャック相関 | ✅ | ❌ | ❌ | ❌ | ❌ |
| 名前付きパイプ ACL / 偽装分析 | ✅ | ❌ | ❌ | ❌ | ❌ |
| シンボリックリンク / ジャンクション悪用検出 | ✅ | ❌ | ◐ | ◐ | ❌ |
| メモリ内秘密情報(稼働中プロセススキャン) | ✅ | ❌ | ❌ | ◐ | ❌ |
| PE セキュリティ / 緩和策分析 | ✅ | ❌ | ❌ | ◐ | ❌ |
| 特権昇格評価(悪用手法を除く) | ✅ | ✅ | ✅ | ❌ | ❌ |
| 自動悪用 | ❌ | ✅ | ✅ | ❌ | ❌ |
| 信頼性 / 重大度スコアリング | ✅ (P1–P5) | ❌ | ❌ | ❌ | ❌ |
| ターゲット固有分析 (exe / svc / pid) | ✅ | ❌ | ❌ | ❌ | ✅ |
| 構造化レポート (JSON / HTML) | ✅ | ❌ | ❌ | TXT | ❌ |
| 自己完結型バイナリ配布 | ✅ | ✅ | ✅ | ✅ | ✅ |