conducting-internal-reconnaissance-with-bloodhound-ce について
BloodHound CEを使ったActive Directory内部調査を支援する、許可を得たセキュリティテスト向けスキルです。導入、データ収集、グラフ分析、Cypherクエリ、攻撃経路の報告を扱います。
主な機能
- 01BloodHound CEの導入
- 02ADデータの収集と取り込み
- 03最短攻撃経路の分析
- 04カスタムCypherクエリの実行
- 05攻撃経路の文書化
活用シーン
- 01ADの権限と関係の監査
- 02Domain Adminへの経路の特定
- 03ACL、委任、Kerberoastingリスクの評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-internal-reconnaissance-with-bloodhound-ceインストール後、Claude Code で/conducting-internal-reconnaissance-with-bloodhound-ceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
BloodHound CE を使用した内部偵察
法的通知: このスキルは、許可を得たセキュリティテストおよび教育目的に限って使用してください。所有していないシステム、またはテストの書面による許可を得ていないシステムに対する無許可の使用は違法であり、コンピューター詐欺に関する法律に違反する可能性があります。
概要
BloodHound Community Edition(CE)は、SpecterOps が開発した最新のウェブベースの Active Directory 偵察プラットフォームで、グラフ理論を使って AD 環境内の隠れた関係や攻撃経路を明らかにします。従来の BloodHound アプリケーションとは異なり、BloodHound CE は専用のグラフデータベースを備えた PostgreSQL バックエンドを使用し、パフォーマンスの向上、最新のウェブ UI、強化された API 機能を提供します。レッドチームは BloodHound CE を使用して、AD オブジェクト、ACL、セッション、グループメンバーシップ、信頼関係を収集し、侵害された低権限アカウントから Domain Admins などの価値の高いターゲットに至る攻撃経路を可視化します。SharpHound コレクター(CE 用の v2)は Active Directory からデータを収集し、AzureHound は Azure AD / Entra ID 環境からデータを収集します。
使用するタイミング
- BloodHound CE による内部偵察を伴うセキュリティ評価を実施するとき
- 関連するセキュリティイベントへのインシデント対応手順に従うとき
- 定期的なセキュリティテストや監査活動を実施するとき
- 実地テストを通じてセキュリティ制御を検証するとき
前提条件
- レッドチームの概念とツールに関する知識
- 安全に実行できるテスト環境またはラボ環境へのアクセス
- 必要な依存関係をインストール済みの Python 3.8+
- テスト活動に対する適切な許可
目標
- Docker Compose を使用して BloodHound CE サーバーをデプロイする
- SharpHound v2 または BloodHound.py を使用して AD データを収集する
- 収集したデータを BloodHound CE にインポートし、グラフ分析を行う
- 所有するプリンシパルから Domain Admins への最短攻撃経路を特定する
- ACL ベースの攻撃経路、Kerberoast が可能なアカウント、委任の悪用を発見する
- 高度な攻撃経路分析のためにカスタム Cypher クエリを実行する
- エンゲージメントの文書化用に攻撃経路レポートを生成する
MITRE ATT&CK マッピング
- T1087.002 - アカウントの検出:ドメインアカウント
- T1069.002 - 権限グループの検出:ドメイングループ
- T1482 - ドメイン信頼の検出
- T1615 - グループポリシーの検出
- T1018 - リモートシステムの検出
- T1033 - システム所有者/ユーザーの検出
- T1016 - システムネットワーク構成の検出
ワークフロー
フェーズ 1:BloodHound CE のデプロイ
- Docker Compose を使用して BloodHound CE をデプロイします。
curl -L https://ghst.ly/getbhce -o docker-compose.yml docker compose pull docker compose up -d - https://localhost:8080 でウェブインターフェースにアクセスします。
- デフォルトの管理者認証情報(Docker ログに表示)でログインします。
docker compose logs | grep "Initial Password" - 直ちにデフォルトの管理者パスワードを変更します。
フェーズ 2:SharpHound v2 によるデータ収集
- SharpHound v2 を侵害された Windows ホストに転送します。
# Execute full collection .\SharpHound.exe -c All --outputdirectory C:\Temp # DCOnly collection (LDAP only, stealthier) .\SharpHound.exe -c DCOnly # Session collection for logged-on user mapping .\SharpHound.exe -c Session --loop --loopduration 02:00:00 # Collect from specific domain .\SharpHound.exe -c All -d child.domain.local - 代替手段:Linux から BloodHound.py を使用します。
bloodhound-python -u user -p 'Password123' -d domain.local -ns 10.10.10.1 -c All - 生成された ZIP ファイルを分析用ワークステーションに持ち出します。
フェーズ 3:データのインポートと初期分析
- BloodHound CE のウェブインターフェース(File Ingest)から収集したデータをアップロードします。
- インターフェースで侵害されたアカウントを「Owned」としてマークします。
- 組み込みの分析クエリを実行します。
- Domain Admin への最短経路
- DA への経路がある Kerberoast 可能なユーザー
- AS-REP Roast が可能なユーザー
- DCSync 権限を持つユーザー
- 制約なし委任が設定されたコンピューター
フェーズ 4:カスタム Cypher クエリ
- BloodHound CE の検索バーでカスタム Cypher クエリを実行します。
// Find shortest path from owned principals to Domain Admins MATCH p=shortestPath((n {owned:true})-[*1..]->(m:Group {name:"DOMAIN [email protected]"})) RETURN p // Find Kerberoastable users with path to DA MATCH (u:User {hasspn:true}) MATCH p=shortestPath((u)-[*1..]->(g:Group {name:"DOMAIN [email protected]"})) RETURN p // Find computers with sessions of DA members MATCH (c:Computer)-[:HasSession]->(u:User)-[:MemberOf*1..]->(g:Group {name:"DOMAIN [email protected]"}) RETURN c.name, u.name // Find ACL-based attack paths (GenericAll, WriteDACL, GenericWrite) MATCH p=(u:User)-[:GenericAll|GenericWrite|WriteDacl|WriteOwner|ForceChangePassword*1..]->(t) WHERE u.owned = true RETURN p // Find users who can DCSync MATCH (u)-[:MemberOf*0..]->()-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain) RETURN u.name, d.name // Find computers with LAPS but readable by non-admins MATCH (c:Computer {haslaps:true}) MATCH p=(u:User)-[:ReadLAPSPassword]->(c) RETURN p
フェーズ 5:攻撃経路の優先順位付け
- 特定した攻撃経路を次の基準で評価します。
- ホップ数(短いほど優先度が高い)
- ステルス要件(目立つ手法を避ける)
- 各ホップで利用できるツール
- 各ステップで検知される可能性
- 優先度が最も高い経路の実行計画を作成します。
- チェーン内の各ステップに必要なツールを特定します。
- 各手法の OPSEC 上の考慮事項を計画します。
ツールとリソース
| ツール | 目的 | プラットフォーム |
|---|---|---|
| BloodHound CE | Web ベースのグラフ分析プラットフォーム | Docker |
| SharpHound v2 | AD データ収集(.NET、CE 用) | Windows |
| BloodHound.py | AD データ収集(Python) | Linux |
| AzureHound | Azure AD / Entra ID データ収集 | クロスプラットフォーム |
| PlumHound | BloodHound の自動レポート作成 | Python |
| BloodHound Query Library | コミュニティの Cypher クエリリポジトリ | Web |
主な攻撃経路の種類
| 経路の種類 | 説明 | 例 |
|---|---|---|
| ACL の悪用 | 設定ミスのある ACL を悪用します | DA グループに対する GenericAll |
| Kerberoasting | サービスアカウントのパスワードをクラックします | SPN アカウント → DA |
| AS-REP Roasting | 事前認証を必要としないアカウントを攻撃します | 事前認証なしのユーザー → パスワードのクラック |
| 委任の悪用 | 無制約または制約付きの委任を悪用します | コンピューター → DA になりすます |
| GPO の悪用 | 特権 OU に適用された GPO を変更します | GPO の書き込み → DA でのコード実行 |
| セッションハイジャック | 侵害されたホスト上の DA セッションを利用します | 管理者セッション → トークンの窃取 |
検証基準
- BloodHound CE がデプロイされ、アクセス可能である
- 対象範囲内のすべてのドメインから SharpHound v2 のデータを収集済みである
- データを BloodHound CE に正常にインポート済みである
- 所有するプリンシパルをインターフェース上でマーク済みである
- Domain Admin への最短経路を特定済みである
- ACL ベースの攻撃経路を文書化済みである
- Kerberoast 可能なアカウントと AS-REP Roast 可能なアカウントを一覧化済みである
- 高度な分析のためにカスタム Cypher クエリを実行済みである
- 実行可能性とステルス性に基づいて攻撃経路を優先順位付け済みである
- 特定したすべての経路と証拠を含むレポートを作成済みである