BloodHound.py AD 信息采集方法论
BloodHound.py 是 BloodHound 的 Python 采集器。核心优势:无需在目标执行(通过 LDAP/DNS 远程采集)+ 全面覆盖(用户/组/计算机/会话/ACL/信任关系)+ JSON 输出(导入 BloodHound GUI 分析攻击路径)。
项目地址:https://github.com/dirkjanm/BloodHound.py
Phase 1: 基本采集
# 全量采集(最常用)
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All
# 指定域控 IP
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All -dc 10.0.0.1
# 指定 DNS 服务器
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All -ns 10.0.0.1
# 输出压缩包
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All --zip
Phase 2: 认证方式
# 密码认证
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All
# NTLM Hash 认证(Pass the Hash)
bloodhound-python -d corp.local -u user --hashes aad3b435b51404eeaad3b435b51404ee:hash -c All
# Kerberos 认证
bloodhound-python -d corp.local -u user -p 'P@ssw0rd' -c All -k
# 使用 ccache 票据
export KRB5CCNAME=/tmp/krb5cc_user
bloodhound-python -d corp.local -u user -c All -k --auth-method kerberos
Phase 3: 采集方式选择
# 默认采集(Group + LocalAdmin + Session + Trusts)
bloodhound-python -d corp.local -u user -p pass -c Default
# 仅采集组成员关系
bloodhound-python -d corp.local -u user -p pass -c Group
# 仅采集本地管理员
bloodhound-python -d corp.local -u user -p pass -c LocalAdmin
# 仅采集会话信息
bloodhound-python -d corp.local -u user -p pass -c Session
# ACL 采集(分析权限关系)
bloodhound-python -d corp.local -u user -p pass -c ACL
# 信任关系
bloodhound-python -d corp.local -u user -p pass -c Trusts
Phase 4: 导入与分析
采集完成后将 JSON/ZIP 文件导入 BloodHound GUI:
# 启动 Neo4j(BloodHound 后端)
sudo neo4j start
# 打开 BloodHound GUI,拖拽 JSON/ZIP 文件导入
# 常用查询:
# - Find all Domain Admins
# - Shortest Path to Domain Admins
# - Find Kerberoastable Users
# - Find AS-REP Roastable Users
渗透测试常用场景
| 场景 | 命令 |
|---|---|
| 全量采集 | bloodhound-python -d corp.local -u user -p pass -c All --zip |
| PTH 采集 | bloodhound-python -d corp.local -u user --hashes LM:NT -c All |
| 仅 ACL 分析 | bloodhound-python -d corp.local -u user -p pass -c ACL |
| 指定 DC | bloodhound-python -d corp.local -u user -p pass -c All -dc 10.0.0.1 -ns 10.0.0.1 |