1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BloodHound Community Editionの利用方法

Last updated at Posted at 2025-03-01

Kali Linuxにデフォルトで入っているBloodHoundはいわゆる「Legacy」に位置付けられており、最新のコレクターによって収集したデータが使えません。(たぶん。。。)

そのため、データを使うためにBloodHound Community Edtionの導入方法から簡単な操作方法を記事にしておきます。

必要なスペック

必要スペックは以下の通りです。大規模はユーザー数が50,000を超えている場合とのこと。

項目 最小 大規模
プロセッサ 4コア 12コア
RAM 4GB 96GB
ストレージ 10GB 50GB

SpecterOps/BloodHound: Six Degrees of Domain Admin

導入と起動

以下のコマンドに従いBloodHoundを立ち上げる。

# 0. ディレクトリ作成
mkdir bloodHound && cd bloodHound

# 1. composeファイルのダウンロード
curl -L https://ghst.ly/getbhce > ./docker-compose.yml

# 2. イメージの取得
sudo docker compose pull

# 3. コンテナ群の起動
sudo docker compose up -d

# 4. 初期パスワードの取得
docker compose logs | grep "Initial Password Set To"

# コンテナの停止と削除
sudo docker compose down --volumes

Getting started with BloodHound Community Edition – BloodHound

サービスへのアクセス

ログインページにアクセスしパスワードのリセットおよびログインを行う。

項目
URL http://localhost:8080/ui/login
ID admin
Passowrd (取得した初期パスワード)

データ収集

公式がサンプルデータを提供しているため、BloodHoundの操作体験などであれば以下からデータをダウンロードしよう。

Example Data · SpecterOps/BloodHound Wiki

コレクターのダウンロード

以下の通り収集用ツールをダウンロードして端末へ配送する。
なお、GitHubからもダウンロード可能。

Releases · SpecterOps/SharpHound

  1. サイドバー > Download Collectors
  2. Download SharpHound

コレクターの実行

コマンドプロンプトからツールを実行する。
基本的にはオプションなしでデータが充実しているが細かな調整等を行う場合は公式ドキュメントを参考にしながら対応する。

All SharpHound Community Edition Flags, Explained – BloodHound

C:\> SharpHound.exe

処理が完了するとzipファイルが生成されるためBloodHoundを起動している端末へ配送する。

収集したデータのアップロード

以下の通りアップロード画面へ遷移し、データをくわせる。

  1. サイドバー > Administration
  2. Data Collection > File Ingest
  3. Upload File(s)
  4. zipファイルを選択しアップロード

正常に取り込めたらStatusおよびStatus MessageカラムがCompleteになる。
image.png

データ分析

サイドバーにあるExploreをクリックすると分析画面に遷移する。

ノードと関連性の表示

ノードの検索

サーチタブをクリックしテキストボックスにキーワードを入力すると、その文字を含むノードが表示されます。

image.png

そのノードをクリックすると画面中央部にぽつんと表示されます。表示されたアイコンをクリックすると画面右側にノードの詳細情報が表示されます。

image.png

ノードとの関連情報の表示

気になる項目の+をクリックすると展開することができます。展開した項目にノードが含まれている場合は自動的に画面に追加されます。

image.png

レイアウトの調整

ノードが多いと文字がノードアイコンと重複したりして見づらくなります。そのため、レイアウトを調整するには画面左下にあるLayout > Sequentialをクリックします。
Standardは画像に表示されているような状態を示します)

image.png

横長になるため全体を俯瞰しようとするとノードのサイズが小さくなってしまいます。
image.png

ノード自体をドラッグ・アンド・ドロップすることにより、配置を自由に調節できます。
image.png

描画しているノードからノードを検索

描画されているノードからノードを検索するには、画面左下にあるSearch Current Resultsをクリックしてキーワード検索します。
image.png

そしてサジェストされたノードをクリックすると画面上でノードが選択された状態になり、右側にあるインフォメーションも反映されます。
image.png

攻略パスの探索(PATHFINDING)

ペネトレーションテストでよくある「現在のアカウントからDomain Adminsへ昇格するルートはないか?」というような、ルートを探す手段がPATHFINDING機能になります。

パスの表示

画面左上のPATHFINDINGタブをクリックし、スタートノードとゴールとなるノードを設定します。
経路がある場合はノードとその経路が表示され、無い場合は表示されません。

image.png

手段の表示

ノード間の矢印に表示されているGenericWriteWriteDaclのことをエッジと呼びます。
エッジはノード間の関係性を示しており、どのような権限があるか等を表示してくれます。

エッジをクリックすると画面右側にはエッジの詳細情報が表示され、実行するための具体的なコマンドも表示されます。
image.png

エッジの更なる詳細情報

以下の公式ドキュメントを閲覧することにより、さらなる詳細を確認することができます。

About BloodHound Edges – BloodHound

柔軟な検索

詳細な条件に基づく検索を行うためにはCYPHERクエリを用います。クエリを自身で記述し、実行することにより、条件に合致するものが表示されます。

基本操作

CYPHERクエリを実行するには、画面左上のCYPHERタブをクリックします。
image.png

例えばOUをすべて表示するためには以下のようなクエリを実行します。

// OUオブジェクトを変数varに格納し画面出力させる
MATCH (var:OU) return var

image.png

プリセットクエリの利用

基本的によく利用することが想定されるものは既に導入されているため、クリックするだけで利用できます。
クエリ入力エリアの左側にあるフォルダアイコンをクリックすると、下に展開されます。

image.png

例えばAll Domain Adminsをクリックするとクエリが自動的に反映されるとともに実行され、ノードが描画されます。
image.png

その他

ネット上ではCYPHERクエリのチートシートもあるため、必要に応じて利用してみましょう。

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?