Cobalt Strike 的可塑 C2 的开源实现
OpenMalleableC2 是一个与框架无关的库,实现了 Cobalt Strike 的 Malleable C2 配置文件格式,用于 HTTP 变换。它使安全研究人员和红队能够在自定义工具和 C2 框架中轻松实现可塑 C2 通信。
它允许全面使用 Malleable C2 配置文件,通过 HTTP 发送任意数据,以透明且(希望)稳定的方式。
有许多开源 C2 框架提供了不同程度的 HTTP 流量定制功能。然而,即使是更成熟的框架(如 Mythic、Havoc、Adaptix 等)在 HTTP 流量定制的深度方面,仍无法与 Cobalt Strike 的 Malleable C2 相提并论——后者能将回调数据嵌入到看起来无害的 HTTP 请求中。本项目的目标是让开源工具既能受益于 Malleable C2 系统的深度定制能力,也能利用其现有的资源(例如配置文件、配置文件生成工具等)。
它基本可用,但目前我不对其稳定性做任何保证。如果发现 bug 请报告 :)
提供的示例是一个简单的 "ping pong" 代理和服务器,演示了典型的 Beacon 回调。代理将发送一个 GET 回调来检查任务,然后发送一个 POST 回调将任务输出发回服务器。
在本示例中,任务只是一个占位随机字符串,代理会检索该字符串,反转后作为结果发回。服务器验证反转后的字符串是否正确,并相应发送响应。
运行 ping-pong 示例:
# 启动 Python 服务器
python Server\Python\examples\pingpong_server.py profiles\gmail.profile
# 或者启动 Go 服务器
cd Server\Go
go run .\cmd\pingpong-server ..\..\profiles\gmail.profile
# 运行代理(在另一个终端中)
.\Client\C\examples\pingpong_agent.exe profiles\gmail.profile
构建 C 客户端示例:
cd Client\C\examples
build.bat
仓库布局:
Client\C\lib C 客户端库
Client\C\examples C ping-pong 代理示例
Server\Python\lib Python 服务器库
Server\Python\examples Python ping-pong 服务器示例
Server\Go\openmalleable Go 服务器库
Server\Go\cmd\pingpong-server Go ping-pong 服务器示例
示例输出:
pingpong_server.py:
