# Conducting Internal Reconnaissance With Bloodhound Ce

> 使用 BloodHound 社区版（Community Edition）进行内部活动目录（Active Directory）侦察，绘制攻击路径图，识别权限提升链，并发现域环境中的错误配置。

- Skill: `killvxk/conducting-internal-reconnaissance-with-bloodhound-ce` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/conducting-internal-reconnaissance-with-bloodhound-ce`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/conducting-internal-reconnaissance-with-bloodhound-ce/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/conducting-internal-reconnaissance-with-bloodhound-ce

---

# 使用 BloodHound CE 进行内部侦察

## 概述

BloodHound 社区版（CE）是由 SpecterOps 开发的现代化基于 Web 的活动目录侦察平台，使用图论来揭示 AD 环境中隐藏的关系和攻击路径。与传统 BloodHound 应用不同，BloodHound CE 使用带有专用图数据库的 PostgreSQL 后端，提供更好的性能、现代化的 Web UI 和增强的 API 能力。红队使用 BloodHound CE 收集 AD 对象、ACL、会话、组成员关系和信任关系，然后可视化从低权限账户到高价值目标（如域管理员）的攻击路径。SharpHound 收集器（CE 版使用 v2）从活动目录收集数据，而 AzureHound 则从 Azure AD / Entra ID 环境收集数据。

## 目标

- 使用 Docker Compose 部署 BloodHound CE 服务器
- 使用 SharpHound v2 或 BloodHound.py 收集 AD 数据
- 将收集的数据导入 BloodHound CE 进行图分析
- 识别从已控制主体到域管理员的最短攻击路径
- 发现基于 ACL 的攻击路径、Kerberoastable 账户和委派滥用
- 执行自定义 Cypher 查询进行高级攻击路径分析
- 生成攻击路径报告用于演练记录

## MITRE ATT&CK 映射

- **T1087.002** - 账户发现：域账户
- **T1069.002** - 权限组发现：域组
- **T1482** - 域信任发现
- **T1615** - 组策略发现
- **T1018** - 远程系统发现
- **T1033** - 系统所有者/用户发现
- **T1016** - 系统网络配置发现

## 实施步骤

### 阶段一：BloodHound CE 部署
1. 使用 Docker Compose 部署 BloodHound CE：
   ```bash
   curl -L https://ghst.ly/getbhce -o docker-compose.yml
   docker compose pull
   docker compose up -d
   ```
2. 访问 Web 界面：https://localhost:8080
3. 使用默认管理员凭据登录（显示在 Docker 日志中）：
   ```bash
   docker compose logs | grep "Initial Password"
   ```
4. 立即修改默认管理员密码

### 阶段二：使用 SharpHound v2 收集数据
1. 将 SharpHound v2 传输到已控制的 Windows 主机：
   ```powershell
   # 执行全量收集
   .\SharpHound.exe -c All --outputdirectory C:\Temp

   # 仅 DC 收集（仅 LDAP，更隐蔽）
   .\SharpHound.exe -c DCOnly

   # 会话收集，用于映射已登录用户
   .\SharpHound.exe -c Session --loop --loopduration 02:00:00

   # 从特定域收集
   .\SharpHound.exe -c All -d child.domain.local
   ```
2. 替代方案：从 Linux 使用 BloodHound.py：
   ```bash
   bloodhound-python -u user -p 'Password123' -d domain.local -ns 10.10.10.1 -c All
   ```
3. 将生成的 ZIP 文件导出到分析工作站

### 阶段三：数据导入与初步分析
1. 通过 BloodHound CE Web 界面上传收集的数据（文件摄入）
2. 在界面中将已控制的账户标记为"Owned"
3. 运行内置分析查询：
   - 到域管理员的最短路径
   - 具有到 DA 路径的 Kerberoastable 用户
   - AS-REP Roastable 用户
   - 具有 DCSync 权限的用户
   - 具有非约束委派的计算机

### 阶段四：自定义 Cypher 查询
1. 在 BloodHound CE 搜索栏中执行自定义 Cypher 查询：
   ```cypher
   // 查找从已控制主体到域管理员的最短路径
   MATCH p=shortestPath((n {owned:true})-[*1..]->(m:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"}))
   RETURN p

   // 查找具有到 DA 路径的 Kerberoastable 用户
   MATCH (u:User {hasspn:true})
   MATCH p=shortestPath((u)-[*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"}))
   RETURN p

   // 查找具有 DA 成员会话的计算机
   MATCH (c:Computer)-[:HasSession]->(u:User)-[:MemberOf*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})
   RETURN c.name, u.name

   // 查找基于 ACL 的攻击路径（GenericAll, WriteDACL, GenericWrite）
   MATCH p=(u:User)-[:GenericAll|GenericWrite|WriteDacl|WriteOwner|ForceChangePassword*1..]->(t)
   WHERE u.owned = true
   RETURN p

   // 查找可以 DCSync 的用户
   MATCH (u)-[:MemberOf*0..]->()-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain)
   RETURN u.name, d.name

   // 查找有 LAPS 但非管理员可读的计算机
   MATCH (c:Computer {haslaps:true})
   MATCH p=(u:User)-[:ReadLAPSPassword]->(c)
   RETURN p
   ```

### 阶段五：攻击路径优先级排序
1. 按以下标准对已识别的攻击路径评分：
   - 跳数（越少 = 优先级越高）
   - 隐蔽性要求（避免嘈杂的技术）
   - 每一跳的工具可用性
   - 每个步骤的检测可能性
2. 为优先级最高的路径制定执行计划
3. 识别攻击链中每个步骤所需的工具
4. 为每种技术规划 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 查询库 | 社区 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
- [ ] 已控制的主体在界面中已标记
- [ ] 已识别到域管理员的最短路径
- [ ] 已记录基于 ACL 的攻击路径
- [ ] 已列出 Kerberoastable 和 AS-REP Roastable 账户
- [ ] 已执行自定义 Cypher 查询进行高级分析
- [ ] 已按可行性和隐蔽性对攻击路径进行优先级排序
- [ ] 已生成包含所有已识别路径和证据的报告

