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

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

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

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

工具目录

分类

查看所有分类
Loading categories
async-pico-hub — 异步 PICO Hub 是一个正在开发中的框架,用于通过自定义事件监控和进程内异步 BOF 扩展 Cobalt Strike。 | Kitploit
工具/GitHubGitHub/nccgroup/async-pico-hub
渗透测试框架后渗透利用命令与控制红队Payload 开发
GitHubnccgroup/async-pico-hub

async-pico-hub

异步 PICO Hub 是一个正在开发中的框架,用于通过自定义事件监控和进程内异步 BOF 扩展 Cobalt Strike。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Async PICO HUB

Async PICOs 是一个框架,用于在 Cobalt Strike Beacon 进程内运行长期存活、事件驱动的 Beacon Object Files。它结合 Crystal Palace PICOs 与 Beacon 端执行模型,提供异步执行、任务跟踪、优雅关闭以及安全的异步输出。

与 Cobalt Strike 原生的异步 BOF 不同,Async PICOs 在 Beacon 的进程中执行,并且可以在事件发生时唤醒 Beacon 以呈现输出。

为什么使用 Async PICOs?

Cobalt Strike 原生的异步 BOF 解决的是另一个问题。Async PICOs 旨在用于在 Beacon 内部执行的长期运行、事件驱动的任务,并能安全地将结果立即回传给操作人员。

有关实现细节和设计原理,请参阅随附的博客文章:

https://www.nccgroup.com/research/async-picos-and-custom-beacon-wakeups-in-cobalt-strike/

构建

前置要求

在开始构建之前,需要以下组件:

  • 本仓库的本地副本

  • 已构建的 Crystal Palace 版本

  • 支持 MSVC 和 CMake 的 Visual Studio

  • Tradecraft Garden

  • 克隆仓库

克隆或复制仓库到本地:

root@kitploit:~
git clone <repo-url>
cd async-pico-hub

安装 Crystal Palace

Async PICOs 依赖 Crystal Palace 进行 PICO 生成。

下载最新版本的 Crystal Palace 压缩包,并按照其说明进行构建。构建完成后,将 Crystal Palace 的二进制文件放入:

root@kitploit:~
pico-tools/crystal-palace/

预期的目录结构应类似于:

root@kitploit:~
pico-tools/
└── crystal-palace/
    ├── src/
    ├── lib/
    └── ...

下载最新版本的 Tradecraft Garden,并将其放入

root@kitploit:~
pico-tools/tradecraftgarden

预期的目录结构应类似于:

root@kitploit:~
pico-tools/
└── tradecraftgarden/
    ├── libtcg/
    ├── simple_pic/
    └── ...

请确保构建 libtcg 和 simple_pic 示例,以便能够构建 Async PICOs。

在 Visual Studio 中打开项目

该项目使用 CMake 来简化使用 MSVC 的构建过程。

在仓库根目录中,右键单击文件夹并选择:

root@kitploit:~
Open with Visual Studio

这将加载 CMake 项目并显示可用的构建配置。

构建配置

可用的构建配置如下:

x64 Debug

构建 PICO 和 BOF 的本地可执行版本,用于调试。

当需要在本地调试行为或在 Visual Studio 中逐步执行代码时,请使用此配置。

x64 Release

构建优化后的 PICO 和 BOF 本地可执行版本。

使用此配置在 Beacon 外部测试发布行为。

x64 Release Objects

构建部署产物:

  • 使用 Crystal Palace 生成的位置无关 PICOs
  • 标准 BOF,例如 AsyncPICOMgr

这是用于生成 Cobalt Strike 对象的配置。

构建输出

构建完成后,生成的产物可以在以下位置找到:

build/x64-ReleaseObject/obj/

该目录包含编译好的、可供使用的 PICO 和 BOF。

快速开始

配置自定义 sleepmask

Async PICOs 要求 Beacon 使用自定义 sleepmask。

在尝试使用 Async PICOs 之前,请在您的 malleable profile 中启用对自定义 sleepmask 的支持。

picos-cna/sleepmask.cna 脚本加载 async-sleepmask,这是一个极简的参考实现,用于支持异步输出和 Beacon 唤醒协调。

这个 sleepmask 有意保持简单,并带有 Limitations 一节中所述的局限性。它用于演示框架并简化测试,而非作为生产就绪的成品组件。

如果您已经有一个带有 OPSEC 技术(如栈操纵或其他技术)的自定义 sleepmask,请参阅 将现有 sleepmask 修改为 Async sleepmask,以将 Async PICO 支持集成到您现有的实现中。

加载 Aggressor 脚本

使用 x64 Release Objects 配置构建项目后,将 picos.cna 和 sleepmask.cna Aggressor 脚本加载到 Cobalt Strike 中:

root@kitploit:~
Script Manager → Load → picos-cna/picos.cna
Script Manager → Load → picos-cna/sleepmask.cna

加载完成后,可以通过 picos 命令管理 Async PICOs。

启动一个 Async PICO

要启动一个 PICO:

root@kitploit:~
picos start [path to pico] [arguments]

例如:

root@kitploit:~
picos start C:\temp\MonitorTGT.pico

或者带参数启动:

root@kitploit:~
picos start C:\temp\MonitorTGT.pico DOMAIN\serviceaccount

列出正在运行的 PICOs

要查看正在运行的 Async PICOs:

root@kitploit:~
picos

这将显示当前正在运行的任务及其标识符。

停止一个正在运行的 PICO

要停止一个 Async PICO:

root@kitploit:~
picos stop [pico id]

例如:

root@kitploit:~
picos stop 3

该 PICO 会收到停止信号,并在执行清理后优雅退出。

帮助

更多用法信息可以直接在 Cobalt Strike 中通过 picos 命令的内置帮助菜单获取。

编写自定义 Async PICO

详见 docs/writing_custom_async_pico.md。

将现有 sleepmask 修改为 Async Sleepmask

详见 docs/modifying_existing_sleepmask.md。

随附示例

  • tgt-monitor-pico:异步 pico,用于监听登录事件并打印 Kerberos 票据。基于 https://github.com/jakobfriedl/tgt-monitor-bof
  • example-pico:一个非常简单的 PICO,用于展示异步能力,例如在不阻塞 Beacon 主线程的情况下打开窗口,以及发送输出。

OPSEC 注意事项

公开实现有意保持简单,不包含高级规避技术。它旨在作为可改编的基础,而非可直接部署的成品。

线程创建

Async PICOs 使用 CreateThread 启动。这使执行模型简单且易于理解,但也引入了检测面。在公开实现中,线程从未被模块映像支持的内存开始执行,这可能被检查线程起始地址的产品或启发式规则检测到。

用户应评估替代的线程创建或执行策略是否更适合其环境。

Sleepmask 集成

该框架依赖修改后的 sleepmask 将异步输出回传给 Beacon,并协调唤醒事件。这里包含的实现有意保持最小化,在投入使用前应进行审查。

Sleepmask 是执行模型的一部分,而不仅仅是一个便利层。对输出排队、排空或信号通知方式所做的任何更改,都应仔细评估,以避免引入并发问题或与 Beacon 内部机制产生不支持的交互。

局限性

公开实现带有若干实际局限性,在使用前应加以了解。

共享全局变量存储

Crystal Palace 使 PICO 可以使用全局变量,但公开实现使用简单的共享存储模型来保存全局状态。因此,全局变量并未按线程隔离。

实际上,这意味着并发运行多个 Async PICOs 时,如果它们依赖全局变量,可能需要额外小心。

Sleepmask 依赖

Async PICOs 依赖修改后的 sleepmask 来实现异步输出和 Beacon 唤醒协调。因此,该框架并非完全自包含,不能被视为可直接替换的 BOF。

并非完全成品的部署产物

该仓库旨在演示一种框架和实现方法,而非提供生产就绪的成品组件。随附示例旨在被扩展、修改并适配到各个用例中。

下载工具