
AD-PathFinder v1.2.0
使用 BloodHound CE + OpenGraph 数据对 Active Directory、ADCS、SCCM 和 MSSQL 进行攻击路径映射。
ADPathFinder
ADPathFinder 是一款面向渗透测试人员和红队成员的攻击映射工具。它分析 SharpHound 数据,并将其与 OpenGraph 插件统一,以从低权限用户和计算机出发,揭示通往域管理员和域控制器等高价值目标的攻击路径。原生支持 MSSQLHound 和 ConfigManBearPig,将覆盖范围扩展至 AD、ADCS、SCCM 和 MSSQL。
跳至: 快速开始 · 覆盖范围 · 工作原理 · 报告 · 配置 · 贡献者
Coverage
| 领域 | 示例 |
|---|---|
| 核心 AD | 提权路径、委派、管理员权限、BadSuccessor、暴露的高价值会话 |
| 密码 | 弱密码、空密码、密码重用、用户名相似性、LM Hash 使用、与弱密码关联的 Kerberoast 和 AS-REP 暴露 |
| ADCS | ESC 风格的证书模板和 CA 风险 |
| MSSQL(MSSQLHound OpenGraph 数据) | 登录、链接服务器、模拟、中继和提权路径 |
| SCCM(ConfigManBearPig OpenGraph 数据) | 接管和中继路径、启用 PXE 的分发点、管理点策略检索 |
| 跨域 | 域信任、共享密码和域间提权路径 |
Requirements
- Python 3.9 或更高版本。
- BloodHound CE 和 Neo4j 默认在
neo4j://localhost:7687本地可用。 - 用于导入和删除操作的 BloodHound CE API 凭据。
- 一个用于 AD 审计覆盖范围的 BloodHound CE / SharpHound zip 文件。
- 可选的 MSSQLHound 和 ConfigManBearPig 的 OpenGraph 插件 zip,用于 MSSQL 和 SCCM 覆盖。
- 可选的 NTDS 哈希转储和 hashcat potfile,用于密码审计。
Quickstart
从源代码安装
git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
配置 BloodHound API 访问
adpathfinder --setup-bloodhound-api
这会存储用于导入和删除操作的 BloodHound CE API 设置。
导入 SharpHound 数据
adpathfinder --import SharpHound.zip
多个 SharpHound 和 OpenGraph 插件 zip 文件可以通过一条命令导入:
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
导入数据并运行完整审计
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
仅使用你有的 zip 文件。--pwd 的值不是 AD 域;它是公司、品牌或组织术语的逗号分隔列表,用于标记已破解密码。
运行域审计
adpathfinder --ad
运行密码审计
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
仅当报告中需要包含明文密码时才使用 --unsafe-report。
写入诊断信息
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
工作原理
| 阶段 | 说明 |
|---|---|
| 摄取 | 将 SharpHound 和支持的 OpenGraph zip 合并为一个图。直接支持 MSSQLHound 和 ConfigManBearPig 数据 |
| 映射 | 查找从用户和计算机到高价值目标的最短路径。你可以配置边集以移除 HasSession 之类的噪声边 |
| 分组 | 对共享路径的账户进行分组,使重复路径报告为一条发现,而不是许多近似重复项 |
| 配对 | 将 NTDS 哈希和 hashcat potfile 与图数据进行比较,以显示评估期间哪些路径可用 |
| 分层 | 报告 SMB 签名禁用或默认特权组等独立发现,并在同一主机或组也位于通往高价值目标的路径上时提高严重性 |
| 渲染 | 编写带有 SVG 路径图、缓解建议、PowerShell 验证步骤和已修复状态跟踪的 HTML 报告,以及文本、JSON 和诊断输出 |
AD HTML 报告
密码审计 HTML 报告
配置
ADPathFinder 从工作目录读取 config.ini。也可以使用 ADPF_* 环境变量设置值。
运行以下命令以配置用于导入和删除操作的 BloodHound CE API 访问:
adpathfinder --setup-bloodhound-api
有关所有选项、Neo4j 连接设置、文件权限和示例配置,请参阅 wiki 上的配置。有关过滤攻击路径输出,请参阅排除的关系。
输出
报告写入 report_<domain>/,例如 report_training.local/。
| 输出 | 用途 |
|---|---|
<domain>_AD_report.html | 面向客户的 HTML 报告,包含分组发现、路径图、缓解建议、验证步骤和已修复状态跟踪 |
<domain>_domain_audit.txt / <domain>_domain_audit.json | 用于审查、自动化和后续分析的文本和 JSON 域审计输出 |
<domain>_password_audit.html / <domain>_password_audit.txt / <domain>_password_audit.json | 当提供 NTDS 哈希和 hashcat potfile 时生成的密码审计输出 |
<domain>_*_unsafe.* | 仅使用 --unsafe-report 生成的可选不安全报告;这些报告可能包含明文密码 |
diagnostics.json | 使用 --diagnostics 生成的可选运行统计信息和调试数据 |
将 NTDS 数据、potfile 和生成的报告视为敏感的评估数据。--unsafe-report 标志会将明文密码写入输出文件;仅在报告中确实需要明文时使用它,并相应存储生成的 _unsafe 文件。
参见 sample_reports/ 中的示例域审计和密码审计输出。
贡献者
检查项(Check)是使用装饰器注册的小型类,它们声明数据需求并返回发现字典。平台检查项声明其数据源,因此当匹配的 OpenGraph 数据不存在时,常规 AD 审计会跳过 MSSQL 或 SCCM 检查项。
参见 wiki 上的添加新检查项、使用 OpenGraph 插件和框架指南。
测试
运行 pip install -e ".[test]",然后执行 pytest tests/ -m "not neo4j and not integration" 即可在不使用 Neo4j 的情况下运行快速的框架测试。有关 Neo4j 夹具套件和完整本地测试工作流程,请参阅 tests/README.md。
致谢
ADPathFinder 基于其他项目收集的数据构建;感谢这些项目的作者以及 SpecterOps 团队:
- BloodHound CE — Active Directory 图数据。
- MSSQLHound 由 Chris Thompson 开发 — MSSQL 数据收集。
- ConfigManBearPig 由 Chris Thompson 开发 — SCCM 数据收集。