ADExplorerSnapshot.py 是一个 AD Explorer 快照解析器。它作为 BloodHound 的数据采集器,通过 BOFHound 使用,同时也支持将完整对象转储为 NDJSON 格式。
AD Explorer 允许你连接域控制器并浏览 LDAP 数据。它还可以创建当前所连接服务器的快照。该工具能够将这些快照转换为 BOFHound 格式或 BloodHound 兼容的 JSON 文件,或将快照中的所有可用对象转储为 NDJSON 以便进一步处理。

在 BOFHound 输出模式下,每个对象的所有属性都会被解析并输出为 BOFHound 格式(类似于 LDIF)。该格式随后可通过 BOFHound 进行解析:
在 Objects 输出模式下,每个对象的所有属性都会被解析并输出为 NDJSON 格式。
在 BloodHound 输出模式下(已弃用,推荐使用更完善的 BOFHound 转换):
AD Explorer 快照仅包含可通过 LDAP 服务器获取的信息。这意味着会话和本地管理员收集等功能不可用,因为此工具不会与网络上的系统进行交互。你只能获取运行快照时所针对的 LDAP/域控制器上的数据。
在 BOFHound 模式下,所有数据都将转换为 BOFHound 格式,这是最完整的收集方式。
在 BloodHound 模式下,采集器会尽可能处理快照中的所有数据(包括 ACL),但仅输出 BloodHound 能够解释的 JSON 数据。GPO/OU 集合缺失。
信任集合包含从所连接 LDAP 域控制器可见的视图。
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 快照 .dat 文件的路径。
options:
-h, --help 显示此帮助信息并退出
-o, --output OUTPUT 输出文件夹路径,用于存放 *.json 文件。如果文件夹不存在则自动创建。默认为当前目录。
-m, --mode {BOFHound,BloodHound,Objects}
要使用的输出模式。默认为 BOFHound 输出模式,该模式随后可配合 BOFHound 使用。也可以直接输出为 BloodHound JSON 输出文件(存在限制)。在 Objects 模式下,所有对象及其所有属性将被输出为 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 的 fork,则应导入 cert_ly4k 文件。部分信息将被省略(例如 ESC8 中是否启用了 Web 注册),因为这些信息无法通过 AD Explorer 收集。
使用 AD Explorer 创建快照比传统的 BloodHound 采集器对网络的要求更高,因为它会尝试从 LDAP 检索所有对象。
ADExplorerSnapshot.py 会创建信息缓存以加快处理过程中的查找速度。特别是在处理较大的快照(例如 4GB 以上)时,你需要有足够的内存。在我的测试中,大约需要快照文件大小一半的内存。
该库已在多个数据集上测试过,如果你遇到问题,请提交问题报告。
AD Explorer 快照解析器已实现为独立模块,也可单独使用。
AD Explorer 存储快照的格式是专有格式,这经历了一段有趣的逆向工程之旅。此存储库中包含了一个 010 编辑器模板,我使用它逐步将快照内容映射为结构体。
对于 BloodHound 输出模式,该库支持 BloodHound v6 输出格式。如果你仍需要旧版本,可在早期提交中找到对更旧版本的支持。 对于旧的 v3 输出格式,你可以使用 v3-format 分支 中的代码。
从 OPSEC 角度来看,AD Explorer 是微软的合法工具。在执行快照时,仅会向 LDAP 服务器发出有限的查询 (objectGuid=*)。然而,结果集非常庞大,因为所有对象及其关联属性都会被检索。这会导致输出量非常大。
可以通过多种方式检测此工具,详情请参考 FalconForce 的精彩博文:FalconFriday — Detecting Active Directory Data Collection — 0xFF21。
本代码使用 MIT 许可,并使用了同样采用 MIT 许可的代码。
ADExplorerSnapshot.py 依赖以下项目:
致谢:
感谢 Deloitte 提供开发此工具的环境。