一个用于 BloodHound API 的交互式命令行 shell。
一个用于 BloodHound 的交互式命令行 shell。无需打开 Web UI,即可在终端中查询 Active Directory 对象、寻找弱点并发现攻击路径。
需要 Python 3.11+ 以及 BloodHound CE v9 服务器(已在 v9.7.1 上测试)。
pipx install bhshell # 推荐
# 或
pip install bhshell
$ bhshell --url http://127.0.0.1:8080
[bh: shell] > login -u admin
[+] Logged in as admin on 127.0.0.1:8080
[bh: shell] > hunt
Severity Check Count Example Description
critical dcsync 2 [email protected] Non-Tier-Zero principals with replication rights
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt kerberoastable'), or 'hunt --all'.
[bh: shell] > user CORP\svc_sql --all -o svc_sql.csv
[bh: shell] > path --owned -g
相同的命令也可以非交互式运行以用于脚本编写:bhshell -c "hunt --json" > hunt.json。
| 命令 | 显示内容 |
|---|---|
user、computer、group、lookup | Kerberoastable / AS-REP roastable、委派、密码年龄、Tier Zero 和已拥有标记,以及组嵌套、入站/出站 ACL 控制、会话和本地管理员权限 |
search | 匹配属性过滤器的对象(search -t user hasspn enabled),支持日期、时间跨度(90d)和通配符 |
path | 到目标或到 Tier Zero 的最短路径,从所有已拥有对象出发,或通过 --via 步骤;以跳链、终端图形或用于报告的 SVG/PNG 形式输出 |
hunt | 按严重性进行域范围检查:DCSync、对 Tier Zero 的控制、AD CS(ESC*)、Kerberoasting、特权会话、LAPS/gMSA 读取者、属性中的密码、接管原语(Shadow Credentials、RBCD)、GPO 控制、NTLM 中继、信任关系、可能的蜜罐令牌……;hunt --owned 将其限制为已拥有对象能够执行的操作 |
cypher、query | 原始 Cypher,以及一个已保存查询库:内置查询、你自己的 .cyp 文件(~/.bhshell/queries/ 或通过 config query_dirs 设置的任意文件夹)以及服务器上保存的查询 |
owned、hvt | 标记或取消标记已拥有和 Tier Zero 对象 |
domains、trusts | 按域统计的数量,以及带 SID 过滤状态的信任关系图 |
要添加你自己的查询,请将其保存为 ~/.bhshell/queries/ 中的 .cyp 文件,然后按名称运行:
$ cat ~/.bhshell/queries/stale-admins.cyp
// description: Enabled adminCount users who have not logged on for a year
MATCH (u:User) WHERE u.admincount = true AND u.enabled = true
AND u.lastlogontimestamp < (datetime().epochseconds - 31536000) RETURN u
[bh: shell] > query run stale-admins -o stale-admins.csv
有关格式以及如何将查询保存在其他文件夹中(团队仓库、每次交战一个文件夹),请参阅查询库。
大多数命令都支持 --json 和 -o FILE(JSON 或 CSV)。登录可使用密码(加 MFA)或 API 令牌;机密信息会通过提示输入或从环境变量读取,绝不会作为参数传递。
完整的使用指南(每个命令、视图标志、搜索过滤器、路径选项、hunt 检查和配置设置)位于 docs/USAGE.md。
在 shell 内,运行 help 或 help <command>。
欢迎在 github.com/kr0no/bloodhound-shell/issues 提交错误报告和拉取请求。
git clone https://github.com/kr0no/bloodhound-shell.git
cd bloodhound-shell
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
python -m pytest
测试使用 responses 模拟 BloodHound API,因此不需要 BloodHound 服务器。
基于 MIT 许可证分发。详情请参阅 LICENSE。
BloodHound 是 SpecterOps 的商标。bhshell 是一个独立项目,与 SpecterOps 无关联,也未获得其认可。