GhostHound 是面向 Active Directory 的 BloodHound OpenGraph 扩展。SharpHound 和所有其他 AD 收集器都会跳过 CN=Deleted Objects:已删除对象(墓碑)对标准的 BloodHound 攻击路径分析不可见,尽管 AD 回收站和墓碑复活机制可以让拥有足够权限的主体恢复其中一个——并接管它所代表的任何身份。GhostHound 通过 SHOW_DELETED 控制跨 LDAP 枚举墓碑,确定谁可以复活每个墓碑,并生成 OpenGraph JSON 载荷及 model.json 扩展定义,使 BloodHound CE v8+ 能够将其作为图的一等公民进行渲染。
仅限授权使用。 这是一款攻防安全/红队工具,用于授权的渗透测试和检测实验室研究。只应对您被明确授权测试的 Active Directory 环境运行。
Administrators 等效权限(或明确委派了对 CN=Deleted Objects 的读取权限)。非特权账户根本无法看到该容器,无论使用哪种认证方法——这是 AD 强制执行、GhostHound 无法绕过的限制。ghosthound -d ghost.local --dc-ip 10.0.0.10 -u alice -o tombstones.json
密码解析顺序:--password(应避免使用——可通过 ps//proc/<pid>/cmdline 和 shell 历史看到),然后是 LDAP_PASSWORD 环境变量,如果两者均未设置,则使用交互式提示。
默认情况下,GhostHound 通过 LDAPS (636) 连接并开启证书验证。对于不适合这种环境的情况,有两个标志:
--disable-ldaps——回退到明文 LDAP (389)。绑定密码以明文发送;除隔离的实验室外,请避免使用。--insecure-tls——保持 LDAPS(加密传输)但跳过证书验证,适用于不在信任库中的自签名/实验室证书。只要 DC 的证书是唯一问题,就应优先选用此选项而非 --disable-ldaps。--timeout-secs(默认 30)对初始连接和随后的每次 LDAP 操作都设置了时限,因此不可达的 DC 或错误的 --dc-ip 会在该时间窗口内失败,而不是一直挂起。
运行 ghosthound --help 查看完整标志列表。
GhostHound 采用库优先的工作区构建——相关理由参见 docs/adr/0001-language-rust-library-first.md:
bloodhound-opengraph:BloodHound OpenGraph JSON 构建器(Python bhopengraph 的 Rust 对应实现)。ad-secdesc:宽松许可、从零实现的 ntSecurityDescriptor/DACL/ACE 解析器(关于为何不依赖唯一现存的 Rust 等价库——其为 GPL-3.0——请参阅 docs/adr/0003-security-descriptor-parsing-strategy.md)。ad-secdesc-oracle:内部、未发布的差分测试框架,以该 GPL-3.0 crate 作为黑盒 oracle 对 ad-secdesc 进行比较——已从默认构建和每个已发布 crate 的依赖图中隔离。ad-tombstone:LDAP SHOW_DELETED 枚举、AD 回收站状态建模和复活权限分析。ghosthound:编排上述组件的 CLI。crates/ad-tombstone/model.json,以注册 GhostHound_TombstoneUser/GhostHound_TombstoneComputer/GhostHound_TombstoneGroup 节点类型以及 GhostHound_CanReanimate/GhostHound_WasMemberOf/GhostHound_SameAs 关系类型(全部注册为可遍历,因此它们可参与最短路径查询)。crates/ad-tombstone/bridge_shadow_nodes.cypher(BloodHound CE 自带的 Cypher 搜索栏是只读的,会拒绝它):
docker exec -i <graph-db-container> cypher-shell -u neo4j -p <password> < crates/ad-tombstone/bridge_shadow_nodes.cypher
docs/adr/0006-opengraph-cross-source-node-identity.md。该脚本会将它们桥接起来,使路径真正可遍历。每次导入后重新运行都是安全的。crates/ad-tombstone/queries.json 中的入门查询,并可选地运行一次 ,将 Tier Zero OU 下的墓碑标记为高价值——出于与步骤 3 相同的原因(其 也是更新子句),这也需要使用 而不能用搜索栏。桥接后,复活路径呈现为正常的可遍历路径——删除前是 Domain Admins 成员的墓碑,可由每个拥有 Reanimate-Tombstones 权限的主体访问,并桥接到真实的 Domain Admins 节点:

该项目从第一天起就优先考虑高置信度的安全(docs/adr/0005-supply-chain-openssf-posture.md):
cargo deny 用于严格的 copyleft/GPL 禁用和漏洞审计。cargo fuzz 用于解析原始二进制描述符时的 panic 安全。unsafe。docs/adr/ 目录记录了该设计背后的决策(语言选择、认证范围、ad-secdesc 许可约束、AD 回收站数据模型、供应链态势),docs/research/tombstone-viability-findings.md 则包含底层研究。
crates/ad-tombstone/privilege_zones.cypherSETcypher-shell