
BloodHound API用のインタラクティブなコマンドラインシェル。
BloodHound 用のインタラクティブなコマンドラインシェル。Web UI を開くことなく、ターミナルから Active Directory オブジェクトを検索し、弱点を探し、攻撃パスを見つけることができます。
Python 3.11+ と BloodHound CE v9 サーバーが必要です(v9.7.1 でテスト済み)。
pipx install bhshell # recommended
# or
pip install bhshell
$ bhshell --url http://127.0.0.1:8080
[bh: shell] > login -u admin
[+] Logged in as admin on 127.0.0.1:8080
[bh: shell] > hunt
Severity Check Count Example Description
critical dcsync 4 [email protected] Non-Tier-Zero principals with replication rights
critical adcs 95 [email protected] AD CS escalation paths (ESC*, GoldenCert)
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt dcsync'), or 'hunt --all'.
[bh: shell] > user PHANTOM\svc_kerb_del --all -o svc_kerb_del.csv
[bh: shell] > ou phantom.corp -t
[bh: shell] > computer DF-MS-SHS -G
[bh: shell] > gpo 'ENABLE [email protected]' -c
[bh: shell] > path --owned -g
スクリプト用に同じコマンドを非対話的に実行できます: bhshell -c "hunt --json" > hunt.json。
| コマンド | 表示内容 |
|---|---|
user、computer、group、lookup | Kerberoastable / AS-REP roastable、委任、パスワード経過期間、Tier Zero および owned フラグ、さらにグループのネスト、インバウンド/アウトバウンド ACL 制御、セッション、ローカル管理者権限 |
ou | OU、コンテナ、ドメイン全体: オブジェクト・Tier Zero・owned のカウントを含む OU ツリー、OU 配下のすべてのオブジェクト、適用される GPO(強制リンク、継承ブロック)、Tier Zero 外でそれらを編集できるユーザー、および OU を制御するユーザー。user/computer -G は 1 つのオブジェクトに適用される GPO を表示します。同名の OU は識別名で選択されます |
gpo | GPO のリンク先、適用対象のユーザーとコンピューター(継承ブロックと強制リンクを考慮)、および Tier Zero 外でそれを編集できるユーザー |
ca、template | エンタープライズ CA と証明書テンプレート: テンプレートが満たす ESC 条件(BloodHound にエッジがない ESC2 と ESC15 を含む)、CA のホストと設定(ESC6、ESC8)、および登録・管理(ESC7)・書き換え(ESC4)が可能なユーザー |
search | プロパティフィルターに一致するオブジェクト(search -t user hasspn enabled)、日付、経過期間(90d)、ワイルドカード付き |
path | ターゲットまたは Tier Zero への最短パス、すべての owned オブジェクトから、または --via ステップ経由。ホップチェーン、ターミナルグラフ、またはレポート用の SVG/PNG として出力 |
hunt | 重大度別のドメイン全体チェック: DCSync、Tier Zero の制御、AD CS(ESC*)、Kerberoasting、特権セッション、LAPS/gMSA リーダー、属性内のパスワードまたはデフォルトのままのパスワード(pre-Windows 2000 コンピューター、未使用アカウント、標準の双子を持つ管理者アカウント)、テイクオーバープリミティブ(Shadow Credentials、RBCD)、GPO 制御、NTLM リレー、信頼関係、可能性のあるハニートークン...; hunt --owned は owned オブジェクトで実行可能なものに限定します |
cypher、query | 生の Cypher、および保存済みクエリのライブラリ: バンドル済み、独自の .cyp ファイル(~/.bhshell/queries/ または config query_dirs で設定した任意のフォルダ)、サーバーに保存されたもの |
owned、hvt | owned および Tier Zero オブジェクトを名前または名前のファイルからマーク/マーク解除 |
domains、trusts | ドメインごとのカウント、および SID フィルタリング状態を含む信頼マップ |
独自のクエリを追加するには、~/.bhshell/queries/ に .cyp ファイルとして保存し、名前で実行します:
$ cat ~/.bhshell/queries/stale-admins.cyp
// description: Enabled adminCount users who have not logged on for a year
MATCH (u:User) WHERE u.admincount = true AND u.enabled = true
AND u.lastlogontimestamp < (datetime().epochseconds - 31536000) RETURN u
[bh: shell] > query run stale-admins -o stale-admins.csv
クエリのフォーマットや、他のフォルダ(チームリポジトリ、エンゲージメントごとのフォルダなど)にクエリを保持する方法については、クエリライブラリを参照してください。
ほとんどのコマンドは --json と -o FILE(JSON または CSV)を受け付け、オブジェクトを一覧表示するコマンドはさらに --names-only または -o FILE.txt を受け付けて、他のツールに渡すための名前のプレーンリストを出力します。ログインはパスワード(および MFA)または API トークンで行えます。シークレットはプロンプトで入力するか環境変数から読み取られ、引数として渡されることはありません。
完全な使用ガイド(すべてのコマンド、ビューフラグ、検索フィルター、パスオプション、ハントチェック、設定項目)は docs/USAGE.md にあります。シェル内では help または help <command> を実行してください。
バグ報告やプルリクエストは github.com/kr0no/bloodhound-shell/issues で歓迎します。
git clone https://github.com/kr0no/bloodhound-shell.git
cd bloodhound-shell
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
pre-commit install
python -m pytest
サーバーがない場合、pytest はオフラインテストのみを実行します。残りは、サンプルデータ がロードされた BloodHound CE インスタンスに対して実行されます:
export BHSHELL_TEST_URL=http://127.0.0.1:8080 BH_USER=admin BH_PASSWORD='...'
python -m pytest -m live
これらはサーバーからのみ読み取り、~/.bhshell には一切触れません。
MIT License の下で配布されています。詳細は LICENSE を参照してください。
BloodHound は SpecterOps の商標です。bhshell は独立したプロジェクトであり、SpecterOps とは提携しておらず、また承認も受けていません。