NetSPI/AD-PathFinder
GitHub: NetSPI/AD-PathFinder
ADPathFinder 是一款基于 BloodHound CE 与 OpenGraph 数据的 Active Directory 攻击路径自动化映射与审计报告工具。
Stars: 83 | Forks: 7
# ADPathFinder
ADPathFinder 是一款专为渗透测试人员和红队成员设计的攻击路径映射工具。它通过分析 SharpHound 数据,并将其与 OpenGraph 插件相结合,能够挖掘出从低权限用户和计算机到诸如 Domain Admins 和 Domain Controllers 等高价值目标的攻击路径。该工具原生支持 MSSQLHound 和 ConfigManBearPig,将覆盖范围扩展至 AD、ADCS、SCCM 和 MSSQL。
## 覆盖范围
| 领域 | 示例 |
| --- | --- |
| 核心 AD | 提权路径、委派、管理员权限、BadSuccessor、暴露的高价值会话 |
| 密码 | 弱密码、空密码、密码重用、用户名相似性、使用 LM hash、Kerberoast 以及与弱密码相伴的 AS-REP 暴露 |
| ADCS | ESC 风格的证书模板和 CA 风险 |
| MSSQL (MSSQLHound OpenGraph 数据) | 登录、链接服务器、 impersonation、 relay 和权限提升路径 |
| SCCM (ConfigManBearPig OpenGraph 数据) | 接管和 relay 路径、启用 PXE 的分发点以及管理点策略检索 |
| 跨域 | 域间的信任、共享密码和提权路径 |
## 环境要求
- 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,用于密码审计。
## 快速开始
## 工作原理
| 阶段 | 具体内容 |
| --- | --- |
| **获取** | 将 SharpHound 和受支持的 OpenGraph zip 压缩包合并为一个图。直接支持 MSSQLHound 和 ConfigManBearPig 数据 |
| **映射** | 查找从用户和计算机到高价值目标的最短路径。你可以[配置边集](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships)以移除诸如 `HasSession` 等产生干扰的边 |
| **分组** | 对共享同一路径的账户进行分组,以便将重复路径作为单个发现报告,而不是许多近乎重复的结果 |
| **配对** | 将 NTDS 哈希和 hashcat potfile 与图数据进行比对,以展示在评估期间哪些路径是可利用的 |
| **分层** | 报告独立的发现(例如 SMB 签名被禁用或默认特权组),并在同一主机或组也位于通往高价值目标的路径上时,提高其严重性级别 |
| **渲染** | 生成包含 SVG 路径图、缓解措施说明、PowerShell 验证步骤和修复状态跟踪的 HTML 报告,以及文本、JSON 和诊断输出 |
/`,例如 `report_training.local/`。
| 输出 | 用途 |
| --- | --- |
| `_AD_report.html` | 提供给客户的 HTML 报告,包含分组的发现结果、路径图、缓解措施说明、验证步骤和修复状态跟踪 |
| `_domain_audit.txt` / `_domain_audit.json` | 用于审查、自动化和后续分析的文本和 JSON 域审计输出 |
| `_password_audit.html` / `_password_audit.txt` / `_password_audit.json` | 提供了 NTDS 哈希和 hashcat potfile 时的密码审计输出 |
| `_*_unsafe.*` | 仅在使用 `--unsafe-report` 时生成的可选不安全报告;这些文件可能包含明文密码 |
| `diagnostics.json` | 使用 `--diagnostics` 生成的可选运行统计和调试数据 |
请将 NTDS 数据、potfile 和生成的报告视为敏感评估数据。`--unsafe-report` 标志会将明文密码写入输出文件中;仅在报告中确实需要明文时才使用它,并妥善存储生成的 `_unsafe` 文件。
有关域审计和密码审计输出的示例,请参见 [`sample_reports/`](sample_reports/)。
### 测试
执行 `pip install -e ".[test]"`,然后运行 `pytest tests/ -m "not neo4j and not integration"` 即可在没有 Neo4j 的情况下运行快速框架测试。有关 Neo4j 测试套件和完整的本地测试工作流,请参见 [`tests/README.md`](tests/README.md)。
## 致谢
ADPathFinder 建立在其他项目收集的数据基础之上;在此感谢它们的作者以及 SpecterOps 团队:
- [BloodHound CE](https://github.com/SpecterOps/BloodHound) — Active Directory 图数据。
- 由 Chris Thompson 开发的 [MSSQLHound](https://github.com/SpecterOps/MSSQLHound) — MSSQL 数据收集。
- 由 Chris Thompson 开发的 [ConfigManBearPig](https://github.com/SpecterOps/ConfigManBearPig) — SCCM 数据收集。
从源码安装
配置 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 ```运行域审计
``` 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 ```
标签:逆向工具