🐶

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

脚注
  1. BloodHoundはネットワーク監査目的で設計されたツールです。EDRによる検知回避が難しく、誤検知されることもあります。業務利用や組織ネットワーク上での使用は、必ず事前に許可を得たうえで実施してください。参考: SpecterOps公式注意文 ↩︎

  2. Dockerグループの追加は、便利である一方でセキュリティ上のリスクも伴います。詳細は公式のLinux post-install手順Dockerの攻撃対象領域を参照してください。 ↩︎

Discussion