Kali Linux 2025.2にBloodHound CEを導入した話
TL;DR
Kali LinuxでのBloodHound CE運用において、APT版の不安定さを回避するためにDocker Compose版を導入。CLI管理とタブ補完、NetExecやPythonツールとの互換性を含めた備忘録。
はじめに
Kali Linuxでは従来、Legacy版のBloodhoundをサポートしてきた。
これはこれでNetexecやBloodhound.py(Impcaket)などのインジェスターと組み合わせて使えたので便利だったのだが、つい先日パッケージをアップデートしたところ、いつの間にかBloodhound Community Edition(以下Bloodhound CE)に置き換わっていた。
Kali公式のAPT版を少し触ってみたところ、私の環境では挙動が安定しなかったので、公式のマニュアルを参考にDocker-Compose版を導入することにした。
備忘を兼ねて手順を記録しておく。
前提条件
以下の環境で動作確認を行いました:
- OS: Kali Linux 2025.2(VMWare上)
- DockerおよびDocker Composeが導入済みであること
- 確認コマンド:
docker --version
/docker compose version
- 確認コマンド:
- インターネット接続があること(リポジトリ等からファイルを取得するため)
※Docker Compose v2 形式を使用します(docker-compose
ではなく docker compose
)。
また、公式のドキュメント記載の要件は以下。
私はKali Linuxのメモリに8GB割り当てている。
Minimum specifications | For large environments (>50K users) |
---|---|
4GB of RAM | 96GB of RAM |
4 processor cores | 12 processor cores |
10GB hard disk space | 50GB hard disk space |
事前準備: dockerグループへの追加(任意)
Docker Compose版のBloodhound CEはbloodhound-cliコマンド経由で各種Dockerコマンドを利用している。
Docker操作を非rootユーザーで行いたい場合、ユーザーをdocker
グループに追加する[2]。
$ sudo usermod -aG docker $USER
$ newgrp docker # 再ログインなしで反映
この設定をしていない場合、bloodhound-cli の実行時に毎回 sudo が必要。
インストール手順
# ディレクトリ作成(任意のディレクトリ)
$ mkdir /opt/bloodhound && cd $_
# リポジトリのダウンロード
$ wget https://github.com/SpecterOps/bloodhound-cli/releases/latest/download/bloodhound-cli-linux-amd64.tar.gz
# アーカイブの展開
$ tar -xvzf bloodhound-cli-linux-amd64.tar.gz
# 中身の確認
$ ls
bloodhound-cli bloodhound-cli-linux-amd64.tar.gz
# 初回インストール (Dockerコンテナの作成と起動)
$ ./bloodhound-cli install
インストールが完了すると、以下の出力が得られる。
これらはログイン時に必用なので控えておく。
[+] BloodHound is ready to go!
# ランダムに生成されたデフォルトパスワード
[+] You can log in as `admin` with this password: qJzG9BcT9BWm4wdHGQeU2B6tFvhKoxb2
# デフォルトパスワードを忘れた際の再取得コマンド
[+] You can get your admin password by running: bloodhound-cli config get default_password
# Bloodhound WebUIのURL
[+] You can access the BloodHound UI at: http://127.0.0.1:8080/ui/login
初回ログイン
# http://127.0.0.1:8080/ui/loginにアクセスする。
# デフォルトパスワードでログインする。
# 初回パスワード変更を要求されるので要件に従ってパスワードを設定する。
# その後はそのまま利用できる。
運用と基本操作
BloodHound CEを導入したあとは、日々の起動・停止、パスワードのリセットなどを bloodhound-cli
コマンドで管理できる。
Docker Composeに慣れているとつい docker compose up/down
を使いがちだが、私はdocker compose
を直接使っていたことで設定ファイルの整合性に失敗し、初期化に失敗し復旧に苦労した。
以後は素直に bloodhound-cli
を使うことにした。
# サービスの起動
$ bloodhound-cli containers up
# サービスの停止(データは維持)
$ bloodhound-cli containers stop
# 停止中のサービスを再開
$ bloodhound-cli containers start
# コンテナの削除(ボリュームは残る)
$ bloodhound-cli containers down
# パスワードの再発行
$ bloodhound-cli resetpwd
さらに、現在稼働中のコンテナ一覧を確認することもできる。
$ bloodhound-cli running
実際のコマンド群やヘルプは bloodhound-cli help
から確認できる。
$ bloodhound-cli help
BloodHound CLI is a command line interface for managing BloodHound and
associated containers and services. Commands are grouped by their use.
Usage:
bloodhound-cli [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
config Display or adjust the configuration
containers Manage BloodHound containers with subcommands
help Help about any command
install Builds containers and performs first-time setup of BloodHound
logs Fetch logs for BloodHound services
resetpwd Reset the admin password
running Print a list of running BloodHound services
uninstall Remove all BloodHound containers, images, and volume data
update Update the BloodHound container images if an update is available
version Displays BloodHound CLI's version information
Flags:
-h, --help help for bloodhound-cli
Use "bloodhound-cli [command] --help" for more information about a command.
このCLIは以下のようなサブコマンドを備えており、GUIが使えない環境でも一通りの操作が可能。
コマンド | 説明 |
---|---|
install |
初回インストール(Composeファイル取得 + コンテナ構築) |
containers |
各種コンテナの起動/停止/再構築など |
running |
稼働中のサービス確認 |
config |
各種設定ファイルの読み書き |
resetpwd |
adminパスワードの再発行 |
uninstall |
コンテナ・ボリュームの削除(環境初期化) |
update |
イメージの更新 |
bloodhound-cli [command] --help
で各コマンドの詳細も確認できる。
コレクター(データ収集ツール)について
付属のSharpHoundやAzureHoundの他にも、NetExecやLegacy互換のBloodHound.py(bloodhound-pythonコマンド)で収集したZipファイルも読み込んでくれた。
BloodHound.pyにはBloodHound CE互換のブランチも用意されており、Kali Linuxでは以下のコマンドでインストールできる。
$ sudo apt install -y bloodhound-ce-python
補完機能・シンボリックリンクなどのチューニング
このままでも十分使えるが、もう少し使いやすくするためにいくつかの設定変更を行った。
# シンボリックリンクを貼る(お好みでPATHを通す方法でも)
sudo ln -s ~/opt/bloodhound/bloodhound-cli /usr/local/bin/bloodhound-cli
# タブ補完有効化 (bloodhound-cli completionサブコマンドが用意されている)
bloodhound-cli completion zsh | sudo tee "${fpath[1]}/_bloodhound-cli" > /dev/null
# 補完スクリプトを設置後は、新しくシェルを開くか、以下のコマンドを実行する。
# autoload -U compinit && compinit
終わりに
今回は導入と基本操作までにとどめたが、今後は収集・可視化・分析の流れや、Azure環境への展開なども検証していきたい。引き続き整理しながら記録していく。
参考URL
- BloodHound Commnunity Edition Quickstart - SpecterOos
- 公式リポジトリ
- Bloodhound.py (データ収集ツール) 公式リポジトリ
-
BloodHoundはネットワーク監査目的で設計されたツールです。EDRによる検知回避が難しく、誤検知されることもあります。業務利用や組織ネットワーク上での使用は、必ず事前に許可を得たうえで実施してください。参考: SpecterOps公式注意文 ↩︎
-
Dockerグループの追加は、便利である一方でセキュリティ上のリスクも伴います。詳細は公式のLinux post-install手順やDockerの攻撃対象領域を参照してください。 ↩︎
Discussion