关于 conducting-internal-reconnaissance-with-bloodhound-ce
这是一项面向获授权安全测试人员的 BloodHound CE 内部侦察技能,涵盖 AD 数据采集、图分析与攻击路径报告。内容包括部署、内置及自定义 Cypher 查询和路径优先级评估。
主要功能
- 01部署 BloodHound CE
- 02采集并导入 AD 数据
- 03分析最短攻击路径
- 04使用自定义 Cypher 查询
- 05整理攻击路径报告
适用场景
- 01审计 AD 权限与关系
- 02查找通往 Domain Admin 的路径
- 03评估 ACL、委派及 Kerberoasting 风险
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-internal-reconnaissance-with-bloodhound-ce安装后在 Claude Code 中输入/conducting-internal-reconnaissance-with-bloodhound-ce确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用 BloodHound CE 进行内部侦察
法律声明: 本技能仅用于经授权的安全测试和教育目的。未经授权对您不拥有或未获得书面许可进行测试的系统使用本技能是非法的,可能违反计算机欺诈相关法律。
概述
BloodHound Community Edition (CE) 是由 SpecterOps 开发的现代化、基于 Web 的 Active Directory 侦察平台,它使用图论来揭示 AD 环境中的隐藏关系和攻击路径。与旧版 BloodHound 应用程序不同,BloodHound CE 使用 PostgreSQL 后端和专用图数据库,提供更高的性能、现代化的 Web UI 以及增强的 API 能力。红队使用 BloodHound CE 收集 AD 对象、ACL、会话、组成员关系和信任关系,然后将从已攻陷的低权限账户到 Domain Admins 等高价值目标的攻击路径可视化。SharpHound 收集器(CE 的 v2 版本)从 Active Directory 收集数据,而 AzureHound 则从 Azure AD / Entra ID 环境收集数据。
何时使用
- 当进行涉及使用 BloodHound CE 开展内部侦察的安全评估时
- 当针对相关安全事件遵循事件响应流程时
- 当执行计划的安全测试或审计活动时
- 当通过动手测试验证安全控制措施时
先决条件
- 熟悉红队概念和工具
- 可访问用于安全执行的测试或实验环境
- 已安装必要依赖项的 Python 3.8+
- 对任何测试活动具备适当的授权
目标
- 使用 Docker Compose 部署 BloodHound CE 服务
- 使用 SharpHound v2 或 BloodHound.py 收集 AD 数据
- 将收集的数据导入 BloodHound CE 以进行图分析
- 识别从已拥有主体到 Domain Admins 的最短攻击路径
- 发现基于 ACL 的攻击路径、可 Kerberoast 的账户以及委派滥用
- 执行自定义 Cypher 查询以进行高级攻击路径分析
- 生成攻击路径报告用于项目文档
MITRE ATT&CK 映射
- T1087.002 - 账户发现:域账户
- T1069.002 - 权限组发现:域组
- T1482 - 域信任发现
- T1615 - 组策略发现
- T1018 - 远程系统发现
- T1033 - 系统所有者/用户发现
- T1016 - 系统网络配置发现
工作流
阶段 1:BloodHound CE 部署
- 使用 Docker Compose 部署 BloodHound CE:
curl -L https://ghst.ly/getbhce -o docker-compose.yml docker compose pull docker compose up -d - 通过 https://localhost:8080 访问 Web 界面
- 使用默认管理员凭据登录(显示在 Docker 日志中):
docker compose logs | grep "Initial Password" - 立即更改默认管理员密码
阶段 2:使用 SharpHound v2 进行数据收集
- 将 SharpHound v2 传输到已攻陷的 Windows 主机:
# Execute full collection .\SharpHound.exe -c All --outputdirectory C:\Temp # DCOnly collection (LDAP only, stealthier) .\SharpHound.exe -c DCOnly # Session collection for logged-on user mapping .\SharpHound.exe -c Session --loop --loopduration 02:00:00 # Collect from specific domain .\SharpHound.exe -c All -d child.domain.local - 替代方案:从 Linux 使用 BloodHound.py:
bloodhound-python -u user -p 'Password123' -d domain.local -ns 10.10.10.1 -c All - 将生成的 ZIP 文件外泄到分析工作站
阶段 3:数据导入和初步分析
- 通过 BloodHound CE Web 界面(File Ingest)上传收集到的数据
- 在界面中将已攻陷的账户标记为 "Owned"
- 运行内置分析查询:
- 到 Domain Admin 的最短路径
- 具有到 DA 路径的可 Kerberoast 用户
- 可进行 AS-REP Roast 的用户
- 具有 DCSync 权限的用户
- 具有无约束委派的计算机
阶段 4:自定义 Cypher 查询
- 在 BloodHound CE 搜索栏中执行自定义 Cypher 查询:
// Find shortest path from owned principals to Domain Admins MATCH p=shortestPath((n {owned:true})-[*1..]->(m:Group {name:"DOMAIN [email protected]"})) RETURN p // Find Kerberoastable users with path to DA MATCH (u:User {hasspn:true}) MATCH p=shortestPath((u)-[*1..]->(g:Group {name:"DOMAIN [email protected]"})) RETURN p // Find computers with sessions of DA members MATCH (c:Computer)-[:HasSession]->(u:User)-[:MemberOf*1..]->(g:Group {name:"DOMAIN [email protected]"}) RETURN c.name, u.name // Find ACL-based attack paths (GenericAll, WriteDACL, GenericWrite) MATCH p=(u:User)-[:GenericAll|GenericWrite|WriteDacl|WriteOwner|ForceChangePassword*1..]->(t) WHERE u.owned = true RETURN p // Find users who can DCSync MATCH (u)-[:MemberOf*0..]->()-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain) RETURN u.name, d.name // Find computers with LAPS but readable by non-admins MATCH (c:Computer {haslaps:true}) MATCH p=(u:User)-[:ReadLAPSPassword]->(c) RETURN p
阶段 5:攻击路径优先级排序
- 根据以下标准对识别出的攻击路径评分:
- 跳数(越短 = 优先级越高)
- 隐蔽性要求(避免高噪声技术)
- 每一跳的工具可用性
- 每一步被检测到的可能性
- 为最高优先级的路径创建执行计划
- 确定该链条中每一步所需的工具
- 为每种技术规划 OPSEC 注意事项
工具与资源
| 工具 | 用途 | 平台 |
|---|---|---|
| BloodHound CE | 基于 Web 的图分析平台 | Docker |
| SharpHound v2 | AD 数据收集(.NET,用于 CE) | Windows |
| BloodHound.py | AD 数据收集(Python) | Linux |
| AzureHound | Azure AD / Entra ID 数据收集 | 跨平台 |
| PlumHound | 自动化 BloodHound 报告 | Python |
| BloodHound Query Library | 社区 Cypher 查询仓库 | Web |
关键攻击路径类型
| 路径类型 | 描述 | 示例 |
|---|---|---|
| ACL 滥用 | 利用配置错误的 ACL | 对 DA 组的 GenericAll |
| Kerberoasting | 破解服务账户密码 | SPN 账户 → DA |
| AS-REP Roasting | 攻击未启用预认证的账户 | 无预认证用户 → 密码破解 |
| 委派滥用 | 利用非约束/约束委派 | 计算机 → 冒充 DA |
| GPO 滥用 | 修改应用于特权 OU 的 GPO | GPO 写入 → 在 DA 上执行代码 |
| 会话劫持 | 利用已攻陷主机上的 DA 会话 | 管理员会话 → 窃取令牌 |
验证标准
- BloodHound CE 已部署并可访问
- 已从范围内的所有域收集 SharpHound v2 数据
- 数据已成功导入 BloodHound CE
- 已在界面中标记已拥有的主体
- 已识别通往 Domain Admin 的最短路径
- 已记录基于 ACL 的攻击路径
- 已列出可 Kerberoast 和可 AS-REP roast 的账户
- 已执行自定义 Cypher 查询以进行高级分析
- 已按可行性和隐蔽性对攻击路径进行优先级排序
- 已生成包含所有已识别路径和证据的报告
评论
支持 Markdown