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

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

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

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

工具目录

分类

查看所有分类
Loading categories
pyCobaltHound — pyCobaltHound 是一个针对 Cobalt Strike 的 Aggressor 脚本扩展,旨在实现 Cobalt Strike 与 Bloodhound 之间的深度集成。 | Kitploit
工具/GitHubGitHub/nvisosecurity/pycobalthound
渗透测试框架权限提升侦察漏洞利用框架横向移动信息收集后渗透利用红队
GitHubnvisosecurity/pycobalthound

pyCobaltHound

pyCobaltHound 是一个针对 Cobalt Strike 的 Aggressor 脚本扩展,旨在实现 Cobalt Strike 与 Bloodhound 之间的深度集成。

查看仓库
1351954年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

快速总结

pyCobaltHound 是一个用于 Cobalt Strike 的 Aggressor 脚本扩展,旨在提供 Cobalt Strike 与 Bloodhound 之间的深度集成。

pyCobaltHound 旨在通过以下方式帮助红队操作人员:

  • 自动查询 BloodHound 数据库,发现新收集凭证所打开的提权路径。
  • 自动将受感染的用户和计算机标记为已控制。
  • 允许操作人员快速、轻松地调查 Beacon 会话和用户的提权潜力。

为此,pyCobaltHound 使用一组内置查询。操作人员还可以添加/删除自己的查询,以微调 pyCobaltHound 的监控能力。这使他们能够在行动过程中灵活调整 pyCobaltHound,以适应特定目标(用户、主机等)。

安装与使用

要安装 pyCobaltHound,请克隆此仓库。不要忘记同时克隆包含的子模块!

您可以使用以下命令:

  • git clone https://github.com/NVISOsecurity/pyCobaltHound.git --recurse-submodules

依赖项

确保已正确安装以下依赖项:

PyCobalt

PyCobalt 是 Cobalt Strike 的 Python API。它公开了许多 Aggressor 函数,可直接在 Python 中使用。

设置

确保已安装 Python3+。虽然 PyCobalt 可能也适用于 macOS 和 Windows,但我们仅在 Linux 上进行了实际测试。

有两种使用 PyCobalt Python 库的方法:

  1. 直接通过 PYTHONPATH 从仓库中运行。pyCobaltHound 采用此方法,在 Python 程序中使用 sys.path 变量设置搜索路径。
  2. 安装 PyCobalt Python 库。为此,请运行 python3 setup.py install。您需要修改 pycobalthound.py,以确保它使用已安装的库,而不是包含仓库中的库。
备注
  • 请注意,PyCobalt 项目能否在未来得到维护并无保证。事实上,该项目的最新更新是为了适应 Cobalt Strike 4.2 的变更。但由于 pyCobaltHound 仅使用基本的 Aggressor 函数与 Cobalt Strike 及其操作人员交互,这对 pyCobaltHound 来说并不是大问题。
  • 本项目使用的 PyCobalt 子模块是我们自己维护的一个分支。不过,我们不控制 PyCobalt 仓库。
技巧与提示
  • PyCobalt 附带一些脚本控制台命令,用于管理正在运行的 Python 脚本。当您重新加载 Aggressor 脚本时,应首先显式停止 Python 脚本。否则它们将永远运行但无所作为。在 pyCobaltHound 的开发过程中,我们注意到这还可能导致未定义的行为。 重新加载 pyCobaltHound 的操作如下:
    root@kitploit:~
    aggressor> python-stop-all`
    [pycobalt] Asking script to stop: /root/pycobalthound/pycobalthound.py
    [pycobalt] Script process exited: /root/pycobalthound/pycobalthound.py
    
    aggressor> reload example.cna`
    [pycobalt] Executing script /root/pycobalthound/pycobalthound.py
    
  • 为了使 PyCobalt 正常工作,您只能在一个 Aggressor 脚本中调用 PyCobalt。如果您想将 pyCobaltHound 与其他使用 PyCobalt 的 Aggressor 脚本一起使用,请牢记这一点。我们的方法是拥有一个包含对每个基于 PyCobalt 的工具进行 python() 和 include() 调用的 Aggressor 脚本。

notify2(可选)

notify2 是(或曾经是)一个在 Linux 上显示桌面通知的包。稍后我们将看到,pyCobaltHound 支持几种通知操作人员的方式。notify2 用于在 Linux 上通过 D-Bus 向通知守护进程发送通知。

要启用此功能,需要使用以下命令安装 notify2:

pip install notify2

在 Cobalt Strike 中使用

在 Cobalt Strike 中使用 pyCobaltHound 就像将 pycobalthound.cna Aggressor 脚本导入您的客户端一样简单。完成后,您应该会在 Cobalt Strike 菜单栏中看到一个 pyCobaltHound 菜单。

使用

凭据存储监控

pyCobaltHound 最初的目标是监控 Cobalt Strike 的凭据缓存(视图 > 凭据)中的新条目。它通过响应 Cobalt Strike 在凭据存储变更时触发的 on_credentials 事件来实现这一点。

当此事件触发时,pyCobaltHound 将:

  1. 解析并验证从 Cobalt Strike 接收到的数据
  2. 检查是否已通过其缓存调查过这些实体
  3. 将实体添加到缓存中,供将来运行使用
  4. 检查实体是否存在于 BloodHound 数据库中
  5. 将实体标记为已控制
  6. 使用内置查询和自定义查询,针对每个新实体查询 BloodHound 数据库。
  7. 解析返回的结果,将任何重要的发现通知操作人员,并将其写入基本 HTML 报告。

由于所有这些操作都是异步于主 Cobalt Strike 客户端进行的,因此该过程不应阻塞您的用户界面,您可以在 pyCobaltHound 后台调查时继续工作。

pyCobaltHound 为每个团队服务器使用独立的缓存,以防止在使用多个团队服务器时出现问题。

从缓存中移除实体

有时,您可能希望重新调查特定用户(或整个凭据存储)。例如当您将新数据上传到 BloodHound 数据库时。

由于 pyCobaltHound 应该已经调查过(因此缓存了)凭据存储中的所有实体,因此如果不进行人工干预,它不会针对这些新数据评估它们。

操作人员有两种方法可以控制哪些实体被缓存。

移除特定实体

如果您希望从缓存中移除某个特定实体(或多个),可以在凭据查看器中操作(视图 > 凭据)。只需选择您的目标,然后点击 pyCobaltHound 菜单下的从缓存中移除选项。

移除整个缓存

如果您希望移除缓存中的所有实体,可以在 pyCobaltHound 的主菜单中操作(Cobalt Strike > pyCobaltHound > 擦除缓存)。当您想重新评估整个凭据存储时,这最为有用。

手动触发调查

将目标从缓存中移除后,您可以手动提示 pyCobaltHound 重新调查凭据存储的内容。此过程与上述完全相同。

Beacon 管理

pyCobaltHound 包含与现有 Beacon 会话交互的功能。这些功能可以在 Beacon 上下文菜单中找到。请注意,这些命令可以针对单个 Beacon 或选定的 Beacon 组执行。

当处理那些尚未(或尚未)被攻陷凭据但实际上已受我们控制的用户和计算机(例如,因为我们有一个 Beacon 在其会话令牌下运行)时,此功能尤其有用。

标记为已控制

标记为已控制 功能(pyCobaltHound > 标记为已控制)可用于将 Beacon(或 Beacon 组)在 BloodHound 数据库中标记为已控制。

此对话框将要求操作人员提供以下信息:

  • 节点类型
    • 两者: 如果选择此项,则将 Beacon 上下文关联的用户和计算机均标记为已控制。只有当 Beacon 会话以本地管理员、SYSTEM 或作为其他用户的高完整性会话运行时,pyCobaltHound 才会将计算机标记为已控制。
    • 用户: 如果选择此项,则将 Beacon 上下文关联的用户标记为已控制。
    • 计算机: 如果选择此项,则将 Beacon 上下文关联的计算机标记为已控制,无论关联会话的完整性级别如何。
  • 域
    • 由于 Beacon 的上下文不包含对域的任何引用,操作人员需要自己指定

调查

调查 功能(pyCobaltHound > 标记为已控制)可用于调查与 Beacon(或 Beacon 组)相关联的用户和主机。

此对话框将要求操作人员提供以下信息:

  • 节点类型
    • 两者: 如果选择此项,则调查 Beacon 上下文关联的用户和计算机。只有当 Beacon 会话以本地管理员、SYSTEM 或作为其他用户的高完整性会话运行时,pyCobaltHound 才会调查计算机。
    • 两者(无逻辑): 如果选择此项,则调查 Beacon 上下文关联的用户和计算机。pyCobaltHound 将调查所有实体,而不检查完整性级别。
    • 用户: 如果选择此项,则将 Beacon 上下文关联的用户标记为已控制。
    • 计算机: 如果选择此项,则将 Beacon 上下文关联的计算机标记为已控制,无论关联会话的完整性级别如何。
  • 域
    • 由于 Beacon 的上下文不包含对域的任何引用,操作人员需要自己指定
  • 生成报告
    • 如果选择此选项,将生成基本 HTML 报告

实体调查

pyCobaltHound 包含自由调查实体的功能。可以在主菜单中找到(Cobalt Strike > pyCobaltHound > 调查)。

当处理那些既未被攻陷凭据也不受我们控制的用户和计算机时,此功能尤其有用。

此对话框将要求操作人员提供以下信息:

  • 目标
    • 一个 CSV 格式的字符串,包含操作人员希望调查的实体。可以只是用户/计算机名称(例如 user1)或 FQDN([email protected])。
    • 注意: 请勿混合使用表示法。您只能使用用户/计算机名称或 FQDN!
  • 域已包含
    • 此参数指定提供的目标字符串是否仅包含用户/计算机名称或 FQDN。
  • 域
    • 如果目标字符串不包含 FQDN,操作人员需要指明要调查的实体所属的域。
  • 生成报告
    • 如果选择此选项,将生成基本 HTML 报告

设置

pyCobaltHound 的设置菜单位于 Cobalt Strike > pyCobaltHound > 设置。

pyCobaltHound 会将设置保存到磁盘。每次重新加载 pyCobaltHound 时,它都会检查是否存在设置文件,如果找到则加载已保存的设置。

pyCobaltHound 为每个团队服务器保存一个设置文件,因此可以在不同的团队服务器上使用不同的设置。

Neo4j

要认证到 BloodHound 数据库,pyCobaltHound 需要以下信息:

  • Neo4j 用户名
  • Neo4j 密码
  • Neo4j URL

注意: 如果您选择持久保存设置(以便在客户端/主机重启后保留它们),pyCobaltHound 将反序列化并将这些凭据存储在磁盘上。

缓存

如前所述,pyCobaltHound 使用缓存来确保不会执行不必要的工作。可以在设置中禁用此缓存。这在开发新查询时尤其有用,这样您就不必不断管理/擦除缓存。

通知

pyCobaltHound 支持几种不同的方法,在识别到感兴趣的实体时通知操作人员。可以禁用这些通知。

原生通知

默认情况下,pyCobaltHound 会使用默认的 Aggressor 消息框通知操作人员。此选项可以适应操作人员的工作流程。然而,由于它在运行 Cobalt Strike 客户端的每个平台上都受支持,因此是默认方法。

Notify2 通知

pyCobaltHound 还支持在 Linux 上显示桌面通知。这是我们更喜欢的选项,因为它不会中断操作人员的工作流程。

报告

在某些工作流程中,pyCobaltHound 会生成 HTML 报告。做出这一设计选择是为了避免在调查大量实体时向操作人员推送巨大的通知。这些报告将生成在 reports 文件夹中。可以禁用报告生成。

查询同步

默认情况下,pyCobaltHound 会使用一个中央文件来同步所有查询相关设置,从而实现跨团队服务器的查询同步。这意味着在一个团队服务器上启用、添加或删除的查询,也会在其他团队服务器的查询中启用、添加或删除。这主要是一个便利选项,可以禁用,这在您运行特定于行动的查询且这些查询不适用于您连接的所有团队服务器时非常有用。

禁用

当查询同步被禁用时,pyCobaltHound 会检查是否存在唯一的查询文件。如果存在,它将加载并使用这些查询。如果文件不存在,它将创建并加载它们。此设置将在重新加载后保留。

启用

当查询同步被启用时,pyCobaltHound 会检查是否存在唯一的查询文件。如果存在,将提示操作人员做出选择。

操作人员有以下选择:

  • 删除
    • 如果选择此项,pyCobaltHound 将直接移除唯一的查询文件。所有自定义查询将丢失。
  • 合并
    • 如果选择此项,pyCobaltHound 将尝试将唯一的查询文件合并到通用查询文件中。在合并查询之前,它会检查通用文件中是否已有同名或相同 Cypher 语句的查询。如果发生任何合并冲突,将询问操作人员是否希望保留未合并的查询。它们将保存在一个单独的文件中。然后移除唯一的查询文件。
  • 保留
    • 如果选择此项,pyCobaltHound 将直接保留唯一的查询文件。所有自定义查询将被保留,如果将来再次禁用查询同步,这些文件将被重新加载。

查询

内置查询

pyCobaltHound 目前支持以下内置查询:

  • 用户 (user-queries.json)
    • 通往域管理员路径
    • 通往高价值目标路径
  • 计算机 (computer-queries.json)
    • 通往高价值目标路径

管理查询

管理 pyCobaltHound 使用的各种查询可以通过主菜单进行(Cobalt Strike > pyCobaltHound > 查询)。

启用/禁用查询

更新查询 对话框允许操作人员启用/禁用特定的查询。使用此对话框时,操作人员首先会被问及要更新哪种类型的查询。这样做是为了在此工作流程中动态地渲染/加载正确的查询。

在回答第一个对话框后,操作人员将看到所选类型的所有可用查询列表。在此他们可以选择要启用/禁用的查询。

aggressor_query_update

查询类型选项是将查询类型传递给工作流中下一个函数的丑陋变通方法,对操作人员无关紧要。

添加自定义查询

添加查询 功能允许操作人员添加/删除自己的查询,以微调 pyCobaltHound 的调查能力。这使他们能够在行动过程中灵活调整 pyCobaltHound,以适应特定目标(用户、主机等)。

此对话框将要求操作人员提供以下信息:

  • 名称
    • 自定义查询的名称。这将在 pyCobaltHound 的工作流程中的各种菜单和报告中使用。
  • Cypher 查询
    • pyCobaltHound 需要执行的 Cypher 查询。操作人员可以自由定义查询。唯一的要求如下:
      • pyCobaltHound 根据正在调查的实体名称动态生成以下 Cypher 字符串:
        • WITH [账户名称列表] AS samAccountNames UNWIND samAccountNames AS names.
        • {statement} 占位符将被替换为此字符串。
        • 此 Cypher 字符串获取目标的 samAccountNames 并将其分配给 "names" 变量。
        • 要使您的查询与此配合工作,您必须确保它以以下语句开头:
          • MATCH (x) WHERE x.name STARTS WITH names
        • 我建议根据您添加的查询类型进行过滤(例如 (x:User))。
      • pyCobaltHound 期望查询返回一组唯一的用户名。
        • 要做到这一点,请以 RETURN DISTINCT (x.name) 结束查询。
      • 有关一些示例,请参考内置查询。
  • 报告标题
    • pyCobaltHound 用于自定义查询的标题。这将在 pyCobaltHound 工作流程的通知和报告中使用。
      • 唯一的要求是句子中包含一个 {number} 占位符,pyCobaltHound 将用此查询的结果数量替换它。
  • 状态
    • 此参数确定查询是以启用状态还是禁用状态创建。
  • 查询类型
    • 您添加的查询类型。这将决定编辑哪一组查询。

删除自定义查询

删除查询 对话框允许操作人员从 pyCobaltHound 中移除特定的自定义查询。使用此对话框时,操作人员首先会被问及要删除哪种类型的查询。这样做是为了在此工作流程中动态地渲染/加载正确的查询。

在回答第一个对话框后,操作人员将看到所选类型的所有可用查询列表。在此他们可以选择要删除的查询。

aggressor_query_remove

查询类型选项是将查询类型传递给工作流中下一个函数的丑陋变通方法,对操作人员无关紧要。

参考

pyCobaltHound 使用/借鉴了以下项目:

  • pycobalt by dcsync
  • Vampire by Coalfire-Research
  • ANGRYPUPPY by vysecurity
  • Max by knavesec
  • BloodHound by SpecterOps
下载工具