Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ghosthound — GhostHound 是一个 BloodHound OpenGraph 扩展,将 Active Directory 墓碑对象复活(tombstone reanimation)作为一等攻击路径呈现,通过 SHOW_DELETED 枚举已删除对象,绘制出可恢复这些对象的主体,并揭示被重新激活的身份何时重新获得特权组成员身份。 | Kitploit
工具/GitHubGitHub/jvbotelho/ghosthound
权限提升侦察漏洞利用横向移动信息收集后渗透利用渗透测试红队
GitHubjvbotelho/ghosthound

ghosthound

GhostHound 是一个 BloodHound OpenGraph 扩展,将 Active Directory 墓碑对象复活(tombstone reanimation)作为一等攻击路径呈现,通过 SHOW_DELETED 枚举已删除对象,绘制出可恢复这些对象的主体,并揭示被重新激活的身份何时重新获得特权组成员身份。

查看仓库
42211个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

GhostHound

Crates.io docs.rs OpenSSF Scorecard

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 无法绕过的限制。
  • 可经 LDAP (389) 或 LDAPS (636) 网络访问域控制器。
  • 如果想导入生成的图,需要 BloodHound CE v8+(没有它,收集和 JSON 输出也可独立工作)。

用法

root@kitploit:~
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。

导入到 BloodHound

  1. 在 BloodHound CE 的 OpenGraph 管理页面,上传一次 crates/ad-tombstone/model.json,以注册 GhostHound_TombstoneUser/GhostHound_TombstoneComputer/GhostHound_TombstoneGroup 节点类型以及 GhostHound_CanReanimate/GhostHound_WasMemberOf/GhostHound_SameAs 关系类型(全部注册为可遍历,因此它们可参与最短路径查询)。
  2. 将 GhostHound 生成的 JSON(通过 UI 或 ingest API)作为常规 OpenGraph 数据载荷上传。
  3. 直接对 Neo4j 运行 crates/ad-tombstone/bridge_shadow_nodes.cypher(BloodHound CE 自带的 Cypher 搜索栏是只读的,会拒绝它):
    root@kitploit:~
    docker exec -i <graph-db-container> cypher-shell -u neo4j -p <password> < crates/ad-tombstone/bridge_shadow_nodes.cypher
    
    GhostHound 指向现有 AD 主体(Domain Admins 等)的边会落在占位节点上,而不是 BloodHound 已有的真实节点上——这是 OpenGraph 导入的限制,不是此数据本身的缺陷;请参阅 docs/adr/0006-opengraph-cross-source-node-identity.md。该脚本会将它们桥接起来,使路径真正可遍历。每次导入后重新运行都是安全的。
  4. 导入 crates/ad-tombstone/queries.json 中的入门查询,并可选地运行一次 ,将 Tier Zero OU 下的墓碑标记为高价值——出于与步骤 3 相同的原因(其 也是更新子句),这也需要使用 而不能用搜索栏。

桥接后,复活路径呈现为正常的可遍历路径——删除前是 Domain Admins 成员的墓碑,可由每个拥有 Reanimate-Tombstones 权限的主体访问,并桥接到真实的 Domain Admins 节点:

来自家庭实验室测试运行的 GhostHound 复活路径:多个具有 GhostHound_CanReanimate 权限的主体指向一个已删除用户,该用户有一条指向占位节点的 GhostHound_WasMemberOf 边,通过 GhostHound_SameAs 桥接到真实的 Domain Admins 组。

供应链态势

该项目从第一天起就优先考虑高置信度的安全(docs/adr/0005-supply-chain-openssf-posture.md):

  • cargo deny 用于严格的 copyleft/GPL 禁用和漏洞审计。
  • OpenSSF Scorecard 工作流。
  • cargo fuzz 用于解析原始二进制描述符时的 panic 安全。
  • 基础库中没有 unsafe。

设计理由

docs/adr/ 目录记录了该设计背后的决策(语言选择、认证范围、ad-secdesc 许可约束、AD 回收站数据模型、供应链态势),docs/research/tombstone-viability-findings.md 则包含底层研究。

下载工具
crates/ad-tombstone/privilege_zones.cypher
SET
cypher-shell