
自動化された拡張可能なツールセットで、BloodhoundのNeo4jバックエンドに対してCypherクエリを実行し、結果をスプレッドシートに保存します。
自動化された、拡張可能なツールセット。BloodhoundのNeo4jバックエンドに対してCypherクエリを実行し、出力をスプレッドシートに保存します。
これは、Neo4jデータベースに保存されたBloodhoundデータに対してCypherクエリを自動実行するbashスクリプトです。
複数の評価でNeo4j Webインターフェースを介して同じクエリを繰り返し実行していることに気づき、もっと簡単な方法があるはずだと思いました。😅
実行するCypherクエリのリストは完全に拡張可能です。以下の書式の例は、独自のクエリを追加する方法を示しています。
追加の有用なクエリがあれば共有してください。このプロジェクトに追加します!
Linux、macOS、Windows上のBashで動作確認済み
(あなたの視覚的楽しみのために termtosvg でレンダリング)
cypher-shell コマンドはNeo4jにバンドルされており、このスクリプトの動作に必要です。
cypher-shell が見つからない場合、Neo4jのバージョンが古い可能性があります。ssconvert コマンドが存在する場合、スクリプトはすべての.csv出力を.xlsファイル内のシートに結合します。
Windowsでは、neo4jデータベースをWindows上で実行しつつ、このスクリプトを実行するためにWSLを使用することをお勧めします。WSL(Linux)に cypher-shell パッケージをインストールするだけで済みます。
フラグ:
-u Neo4J Username (Required)
-p Neo4J Password (Required)
-d Fully Qualified Domain Name (Required) (Case Sensitive)
-a Bolt address (Optional) (Default: localhost:7687)
-t Query Timeout (Optional) (Default: 30s)
-v Verbose mode (Optional) (Default:FALSE)
-h Help text and usage example (Optional)
デフォルトでの例:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
全オプションを使用した例:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
ファイルはFQDNにちなんだサブディレクトリに追加されます。
現在、スクリプトには約60のクエリがあります。以下は受け取る情報のサンプルです:
追加のクエリを追加するには、cypheroth.sh内のqueries配列を編集し、次の形式で行を追加します:
Description;Cypher Query;Output File
Domain値を設定する必要があるクエリを追加する場合は、$DOMAINとして保存します。
例 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
例 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
複数のドメインを分析する必要がある場合、各ドメインに対してCypherothの複数のインスタンスを並列実行できます。 例えば、次のスクリプトを使用できます(10並列)。
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
古いバージョンの cypher-shell を実行している場合、以下のエラーが発生する可能性があります:
DateTime is not supported as a return type in Bolt protocol version 1.
Please make sure driver supports at least protocol version 2.
Driver upgrade is most likely required.
修正するには、Neo4jを最新版にアップデートしてください。
Chris Farrell (@seajay)
#cypher_queriesチャンネルに感謝します。