
AD Explorerのスナップショットを解析し、BloodHound互換のJSONまたはNDJSONに変換して、Active Directoryの偵察と攻撃経路のマッピングを行います。
ADExplorerSnapshot.pyは、AD Explorerスナップショットパーサーです。BOFHoundを介してBloodHoundのインジェスターとして作られており、また全オブジェクトのNDJSONへのダンプもサポートしています。
AD Explorerを使用すると、DCに接続してLDAPデータを参照できます。また、現在接続しているサーバーのスナップショットを作成することもできます。このツールを使用すると、それらのスナップショットをBOFHound形式またはBloodHound互換のJSONファイルに変換したり、スナップショット内の利用可能なすべてのオブジェクトを処理しやすいNDJSONにダンプしたりできます。

BOFHound出力モードでは、すべてのオブジェクトのすべての属性が解析され、BOFHound形式(LDIFに類似)で出力されます。この形式は、その後BOFHoundで解析できます:
Objects出力モードでは、すべてのオブジェクトのすべての属性が解析され、NDJSON形式で出力されます。
BloodHound出力モードでは(より完全なBOFHound変換を優先して非推奨):
ADExplorerスナップショットには、LDAPサーバーから取得可能な情報のみが含まれます。つまり、このツールはネットワーク上のシステムと対話しないため、セッションやローカル管理者の収集などの機能は利用できません。スナップショットを実行したLDAP/DCから利用可能なデータのみが得られます。
BOFHoundモードでは、すべてのデータがBOFHound形式に変換され、最も完全な収集アプローチです。
BloodHoundモードでは、インジェスターはスナップショットから可能な限りすべてのデータ(ACLを含む)を処理しますが、BloodHoundが解釈できるJSONデータのみを出力します。GPO/OUコレクションは欠落しています。
Trustsコレクションには、接続しているLDAP DCから見えるビューが含まれます。
ADExplorerSnapshot.pyはPython 3.12+をサポートしています。依存関係はpipで管理されます。
uvxを使用してツールを直接実行できます(ない場合:pip install uvx)。
uvx git+https://github.com/c3c/ADExplorerSnapshot
usage: ADExplorerSnapshot.py [-h] [-o OUTPUT] [-m {BOFHound,BloodHound,Objects}] snapshot
AD Explorer snapshot ingestor for BloodHound
positional arguments:
snapshot Path to the snapshot .dat file.
options:
-h, --help show this help message and exit
-o, --output OUTPUT Path to the *.json output folder. Folder will be created if it doesn't exist. Defaults to the current directory.
-m, --mode {BOFHound,BloodHound,Objects}
The output mode to use. Defaults to BOFHound output mode, which can then be used with BOFHound. Can also directly output to BloodHound JSON output files (with limitations). In Objects
mode all objects with all attributes are outputted to NDJSON.
BOFHound出力モードが推奨される出力モードです。その後、BOFHoundツールを使用してデータをBloodHoundに取り込むことができます。
一般的な実行方法:
uvx git+https://github.com/c3c/ADExplorerSnapshot -m BOFHound snapshot.dat
uvx bofhound -i ./dc.server.com_1234567890_bofhound.log -o output


証明書テンプレートは、BloodHound形式またはBloodHound-ly4k形式でインポートできます。
通常のBloodHoundバージョンを使用している場合は、cert_bh JSONファイル(GPOとしてインポートされる)のみをインポートしてください。
ly4kのフォークを使用している場合は、代わりにcert_ly4kファイルをインポートしてください。AD Explorerでは収集できないため、一部の情報(例:ESC8でWeb Enrollmentが有効かどうか)は省略されます。
AD Explorerでスナップショットを作成することは、LDAPから可能な限りすべてのオブジェクトを取得しようとするため、従来のBloodHoundインジェスターよりもネットワーク負荷が高くなります。
ADExplorerSnapshot.pyは、データ処理中にルックアップを高速化するためのキャッシュを作成します。特に大規模なスナップショット(例:4GB以上)を処理する場合は、十分なRAMも必要です。私のテストでは、スナップショットファイルサイズの約半分のRAMが必要でした。
このライブラリはいくつかのデータセットでテストされています。問題が発生した場合は、Issueレポートを作成してください。
AD Explorerスナップショットパーサーは独自のモジュールとして実装されており、個別に使用することも可能です。
AD Explorerがスナップショットを保存する形式はプロプライエタリであり、楽しいリバースエンジニアリングの旅につながりました。このリポジトリには、スナップショットの内容を構造体に反復的にマッピングするために使用した010 editorテンプレートが含まれています。
BloodHound出力モードでは、このライブラリはBloodHound v6出力形式をサポートしています。古いバージョンは、必要に応じて以前のコミットでサポートされていました。古いv3出力形式については、v3-formatブランチのコードを使用できます。
OPSEC関連の注意として、AD Explorerは正当なMicrosoftツールです。スナップショットを実行するときは、LDAPサーバーに対して限定的なクエリ(objectGuid=*)のみが行われます。ただし、すべてのオブジェクトとその関連属性が取得されるため、結果セットは非常に大きく、かなり大量の出力が生成されます。
このツールの検出は複数の方法で可能であり、それについてはFalconForceの優れたブログ記事を参照してください:FalconFriday — Active Directoryデータ収集の検出 — 0xFF21。
このコードはMITライセンスの下でライセンスされており、同じくMITライセンスのコードを利用しています。
ADExplorerSnapshot.pyは以下のプロジェクトに依存しています:
謝辞:
このツールの開発環境を提供してくれたDeloitteに感謝します。