Kali Linuxにデフォルトで入っているBloodHoundはいわゆる「Legacy」に位置付けられており、最新のコレクターによって収集したデータが使えません。(たぶん。。。)
そのため、データを使うためにBloodHound Community Edtionの導入方法から簡単な操作方法を記事にしておきます。
必要なスペック
必要スペックは以下の通りです。大規模はユーザー数が50,000を超えている場合とのこと。
項目 | 最小 | 大規模 |
---|---|---|
プロセッサ | 4コア | 12コア |
RAM | 4GB | 96GB |
ストレージ | 10GB | 50GB |
導入と起動
以下のコマンドに従い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の操作体験などであれば以下からデータをダウンロードしよう。
コレクターのダウンロード
以下の通り収集用ツールをダウンロードして端末へ配送する。
なお、GitHubからもダウンロード可能。
サイドバー > Download Collectors
Download SharpHound
コレクターの実行
コマンドプロンプトからツールを実行する。
基本的にはオプションなしでデータが充実しているが細かな調整等を行う場合は公式ドキュメントを参考にしながら対応する。
All SharpHound Community Edition Flags, Explained – BloodHound
C:\> SharpHound.exe
処理が完了するとzipファイルが生成されるためBloodHoundを起動している端末へ配送する。
収集したデータのアップロード
以下の通りアップロード画面へ遷移し、データをくわせる。
サイドバー > Administration
Data Collection > File Ingest
Upload File(s)
- zipファイルを選択しアップロード
正常に取り込めたらStatus
およびStatus Message
カラムがComplete
になる。
データ分析
サイドバーにあるExplore
をクリックすると分析画面に遷移する。
ノードと関連性の表示
ノードの検索
サーチタブをクリックしテキストボックスにキーワードを入力すると、その文字を含むノードが表示されます。
そのノードをクリックすると画面中央部にぽつんと表示されます。表示されたアイコンをクリックすると画面右側にノードの詳細情報が表示されます。
ノードとの関連情報の表示
気になる項目の+
をクリックすると展開することができます。展開した項目にノードが含まれている場合は自動的に画面に追加されます。
レイアウトの調整
ノードが多いと文字がノードアイコンと重複したりして見づらくなります。そのため、レイアウトを調整するには画面左下にあるLayout > Sequential
をクリックします。
(Standard
は画像に表示されているような状態を示します)
横長になるため全体を俯瞰しようとするとノードのサイズが小さくなってしまいます。
ノード自体をドラッグ・アンド・ドロップすることにより、配置を自由に調節できます。
描画しているノードからノードを検索
描画されているノードからノードを検索するには、画面左下にあるSearch Current Results
をクリックしてキーワード検索します。
そしてサジェストされたノードをクリックすると画面上でノードが選択された状態になり、右側にあるインフォメーションも反映されます。
攻略パスの探索(PATHFINDING)
ペネトレーションテストでよくある「現在のアカウントからDomain Adminsへ昇格するルートはないか?」というような、ルートを探す手段がPATHFINDING
機能になります。
パスの表示
画面左上のPATHFINDING
タブをクリックし、スタートノードとゴールとなるノードを設定します。
経路がある場合はノードとその経路が表示され、無い場合は表示されません。
手段の表示
ノード間の矢印に表示されているGenericWrite
やWriteDacl
のことをエッジと呼びます。
エッジはノード間の関係性を示しており、どのような権限があるか等を表示してくれます。
エッジをクリックすると画面右側にはエッジの詳細情報が表示され、実行するための具体的なコマンドも表示されます。
エッジの更なる詳細情報
以下の公式ドキュメントを閲覧することにより、さらなる詳細を確認することができます。
柔軟な検索
詳細な条件に基づく検索を行うためにはCYPHER
クエリを用います。クエリを自身で記述し、実行することにより、条件に合致するものが表示されます。
基本操作
CYPHER
クエリを実行するには、画面左上のCYPHER
タブをクリックします。
例えばOU
をすべて表示するためには以下のようなクエリを実行します。
// OUオブジェクトを変数varに格納し画面出力させる
MATCH (var:OU) return var
プリセットクエリの利用
基本的によく利用することが想定されるものは既に導入されているため、クリックするだけで利用できます。
クエリ入力エリアの左側にあるフォルダアイコンをクリックすると、下に展開されます。
例えばAll Domain Admins
をクリックするとクエリが自動的に反映されるとともに実行され、ノードが描画されます。
その他
ネット上ではCYPHERクエリのチートシートもあるため、必要に応じて利用してみましょう。