一个 SquidSec 开源项目
SquidOffense.com ·
GitHub
BloodBash 是一个开源的离线 SharpHound 和 AzureHound JSON 分析器,由 SquidSec 创建并维护。它构建图,呈现 AD/Entra 攻击路径和错误配置,并输出按优先级排序的发现结果。无需 Neo4j 或 BloodHound UI。
| 组织 | SquidSec |
| 网站 | https://squidoffense.com/ |
| 应用版本 | v1.4.2 |
| 最新二进制文件 | |
| 许可证 | MIT |
| 运行时(源码) | Python 3.9+ |
合并到 main 会自动构建 Linux 和 Windows 二进制文件,并发布 GitHub Release(标签 v1.4.2-build.N)。
BloodBash 由 SquidSec 为安全社区构建和维护——面向红队成员、渗透测试人员和安全防御人员,他们需要快速的离线 AD/Entra 分析,而无需搭建 BloodHound 基础设施。
独立的 SquidSec BloodBash 可执行文件——无需 Python、pip 或 venv:
| 平台 | 最新下载 |
|---|---|
| Linux x64 | bloodbash-linux-x64 |
| Windows x64 | bloodbash-windows-x64.exe |
# Linux
curl -sL -o bloodbash \
https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-linux-x64
chmod +x bloodbash
./bloodbash /path/to/json --all
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-windows-x64.exe" `
-OutFile bloodbash.exe
.\bloodbash.exe C:\path\to\json --all
pipx install git+https://github.com/DotNetRussell/BloodBash
或从克隆:
git clone https://github.com/DotNetRussell/BloodBash.git
cd BloodBash
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
依赖项:networkx、rich、tqdm、pyyaml。
从这 3 个开始(指向 SharpHound/AzureHound 目录或 .zip 文件):
# 1) Day-0 triage - default when you pass only the data path
bloodbash /path/to/json
# same as:
bloodbash /path/to/json --quick-wins
# 2) Just owned a user - outbound compromise dossier
bloodbash ./sharpout --from-user alice --from-user-export
# 3) Full attack analysis (large env: --fast auto on big graphs)
bloodbash /path/to/json --all --fast
# inventory ladders still opt-in:
bloodbash /path/to/json --all --inventory
从源代码检出运行 python3 BloodBash.py 等同于 bloodbash。
# Binary / pipx
./bloodbash /path/to/json
bloodbash /path/to/json --from-user alice --from-user-export
# Multi-collection merge (low-priv + DA zip, multi-domain forest)
bloodbash ./lowpriv.zip --merge ./da.zip ./child-domain.zip --all --fast
裸目录(无检查标志)运行 quick-wins 分类。使用 --all 进行完整攻击路径分析(而非清单),或使用 --wizard 进行交互式选择。
在 --all 和 --quick-wins 下,空的检测器部分会被抑制,以保持控制台可读。选择性标志仍会为你请求的检查打印绿色的“none found”行。
示例数据:SampleSharphoundADData/ 和 SampleAzurehoundData/。
bloodbash --help # start-here + cheat sheet
bloodbash --help-advanced # full flag tables + all examples
更多配方:docs/cookbook.md。
| 领域 | 检查项 |
|---|---|
| AD 权限 | DCSync(GetChanges+GetChangesAll;嵌套 DA/EA 视为预期)、高价值对象上的危险 ACL、值得关注的非 HV ACL 滥用(对用户/计算机/组的 ForceChangePassword / GenericAll / GenericWrite;批量计算机 GenericWrite 噪声已抑制)、GPO 滥用、RBCD(已配置 + 可配置)、约束/非约束委派(DC 与非 DC 部分)、SID 历史、域信任(--trust) |
| AD 凭据 | 可 Kerberoast、可 AS-REP roast(带 AdminCount / OWNED / LASTLOG 标签)、特权 roast(--privileged-roast:可 roast + 嵌套 DA/EA / AdminCount)、影子凭据、描述中的密码、PasswordNeverExpires / PasswordNotRequired。SharpHound 的 sensitive(NOT_DELEGATED)不会排除 roast 候选对象 |
| ADCS | ESC1-ESC7(当收集器属性存在时还包括 ESC8/ESC9/ESC13)。ESC10-12 需要注册表/HTTP 角色数据,而 SharpHound 通常不包含这些数据。当 zip 中没有证书对象时给出软提示 |
| Azure / Entra | 特权角色、应用/SP 凭据控制路径、显式禁用 MFA、来宾用户、SP 滥用权限 |
| 路径 | 到高价值目标的最短路径(--fast 中为有限集合;HV 包括 Builtin Administrators 和域控制器计算机)、已拥有主体(--owned = 入站)、自定义 --path-from / --path-to |
| 沦陷档案 | --from-user / --compromise:出站成员关系、AdminTo/RDP/ACL 计数、嵌套组、到 HV 的自动路径、txt/csv 导出(包括批量 AdminTo 主机列表)。可选的 --writable-file 导入 bloodyAD get writable JSON/TSV(令牌有效写入;SharpHound 仅映射过滤后的 ACE 集合) |
| 路径修复 | 最繁忙路径排名(--busiest-paths)、边移除建议(--path-break) |
| 清单 | 密码年龄阶梯、陈旧/不活跃账户、特权组、结构信息(域/DC/信任)、已拥有对象清单、带百分比的统计仪表板 |
| PlumHound 风格 CSV 包 | --csv-pack DIR:多 CSV 清单(域、DA、可 roast 对象、LAPS、Everyone/过度授权边、计算机 AdminTo 计算机、双重特权+本地管理员、批量 AdminTo 主机)+ index.csv |
| 多输入 | --merge PATH… 将额外的目录/zip 合并到一个图中(多域 / 双重低权限+DA 收集) |
| 其他 | 收集健康度横幅(对象计数、会话/AdminTo/RDP 覆盖率、ADCS 存在情况)、LAPS 覆盖率(haslaps)+ LAPS 密码读取者(ReadLAPSPassword)、GPO XML(--gpo-content-dir)、域 Trusts[] 边、组嵌套、--list-domains |
发现结果会被评分并汇总在优先级发现表中(大批量卫生类别会折叠;使用 --all-findings 查看完整的折叠列表)。滥用面板会按类别建议工具/命令。
这是来自 SquidSec 的离线启发式分析器,并非完整的 BloodHound CE 替代品。建议在同一 zip 上与 BloodHound CE 进行验证以确认路径一致性。
将 ./sharpout 替换为你的 SharpHound/AzureHound 目录或 zip。源码检出:使用 python3 BloodBash.py 代替 bloodbash。
# Help (tables + examples)
bloodbash --help
bloodbash --help-advanced
# Default = quick wins (high-signal day-0 triage)
bloodbash ./sharpout
bloodbash ./sharpout --quick-wins
bloodbash ./sharpout --quick-wins --domain CORP.LOCAL
bloodbash ./2024-collection.zip --quick-wins
# Interactive picker
bloodbash ./sharpout --wizard
# Full attack analysis (--all auto --fast on large graphs; inventory is separate)
bloodbash ./sharpout --all
bloodbash ./sharpout --all --fast
bloodbash ./2024-collection.zip --all
bloodbash ./sharpout --all --inventory
# Merge multiple collections into one graph
bloodbash ./lowpriv.zip --merge ./da.zip --all --fast
bloodbash ./forest-root --merge ./child-a.zip ./child-b.zip --quick-wins
# One domain / tenant only
bloodbash ./sharpout --all --domain CORP.LOCAL
bloodbash ./azureout --azure-privileged-roles --domain <tenantId>
# Domain trusts
bloodbash ./sharpout --trust
bloodbash ./sharpout --all --trust
# In-repo samples
bloodbash SampleSharphoundADData --quick-wins
bloodbash SampleSharphoundADData --all --fast --all-findings
bloodbash SampleAzurehoundData --azure-privileged-roles --azure-guest-access --all-findings
--quick-wins 运行的内容