CobaltStrike的心跳通信

CobaltStrike的心跳通信是其与受害者主机(即Beacon)之间保持连接并传输命令的重要方式。以下是对CobaltStrike心跳通信的详细解析:

一、心跳通信的基本概念

心跳通信是一种用于检测网络连接状态的机制。在CobaltStrike中,Beacon(即CobaltStrike在受害者主机上部署的后门程序)会定期向CobaltStrike的C2服务器(即TeamServer)发送心跳包,以确认双方的网络连接仍然有效,并询问C2服务器是否有新的命令需要执行。

1. 第一次请求时, beacon.exe 程序请求下载完整的 payload;

2. 下好 payload 就直接在内存里运行,也就是说 beacon 开始运行,它做了如下操作:

(1)收集主机信息,生成用于协商的原始密钥 raw key,还有一些其他数据;

(2)用 RSA 公钥加密这些数据,将其存储在请求包的 cookie 中,然后发送给 CS 服务器。

这是第一次心跳,之后 beacon 进入睡眠时间。而CS 服务器收到后,做以下操作:

(1)用 RSA 私钥解开密文,从中提取主机信息和 raw key;

(2)在 target 列表生成一个新的主机;

(3)基于 raw key 生成 AES KEY 和 HMAC KEY,用于后续的加密通信。

3. 睡眠时间过后,beacon 再次发送心跳包,这次发送的目的是询问 CS 服务器是否有命令下发。

如果有,CS 服务器将包含命令的数据用 AES 加密得到密文,以及用 HMAC KEY 计算出 hash ,以 (AES 密文+hash) 的格式存放在 response  报文的响应体中。

如果没有,就跟第一次心跳一样,返回响应体为空的 response 报文。

4. 如果 beacon 收到命令,就在受害者主机上执行。执行完后,将命令执行结果发送给 CS 服务器,并重新进入睡眠时间。

二、心跳通信的过程

  1. Beacon上线
    • Beacon首次启动时会向C2服务器发送上线请求,这个请求通常包含了用RSA公钥加密的受害者主机信息。
    • C2服务器收到请求后,会使用RSA私钥解密信息,并基于解密后的信息生成AES密钥和HMAC密钥,用于后续的加密通信。
  2. 心跳包发送
    • 在Beacon上线并成功建立加密通信后,它会进入睡眠状态,等待一段时间后再次发送心跳包。
    • 心跳包的主要目的是询问C2服务器是否有新的命令需要执行。如果没有新命令,C2服务器会返回一个空的响应包;如果有新命令,C2服务器会将命令加密后包含在响应包中发送给Beacon。
  3. 命令执行与结果返回
    • Beacon收到命令后会在受害者主机上执行,并将执行结果加密后发送给C2服务器。
    • C2服务器收到结果后,会进行解密并展示给攻击者。

三、心跳通信的加密与解密

  • 加密:CobaltStrike使用AES加密和HMAC签名来确保通信过程中的数据安全和完整性。AES密钥和HMAC密钥是在Beacon上线过程中基于受害者主机信息生成的。
  • 解密:C2服务器使用对应的AES密钥和HMAC密钥来解密接收到的数据包,并验证数据的完整性。

四、心跳通信的自定义配置

  • CobaltStrike允许攻击者通过修改配置文件来自定义Beacon的心跳间隔、检查频率等参数,以适应不同的攻击场景和需求。
  • 攻击者还可以利用CobaltStrike提供的流量伪装功能来隐藏或伪装Beacon的心跳通信流量,以逃避安全检测。

1、cobalt strike malleable C2配置文件:

通过cobalt strike maleable C2配置文件可以修改框架内的各种默认值,操作者可以修改Beacon的内存占用,更改其检入的频率等等,甚至可以修改 Beacon的网络流量。
因此想要实现流量伪装,需要去整一个Malleable-C2-Profiles配置文件加载,脚本下载地址:

GitHub - rsmudge/Malleable-C2-Profiles: Malleable C2 is a domain specific language to redefine indicators in Beacon's communication. This repository is a collection of Malleable C2 profiles that you may use. These profiles work with Cobalt Strike 3.x.

2、配置malleable:
解压后打开profile文件就可以在里面修改

参考文章:深入研究cobalt strike malleable C2配置文件 - 先知社区 

3、执行:
修改完(或编写完)之后将profies上传到C2服务器上,先使用c2lint文件查看cobalt strike malleable C2配置文件(也就是上面的amazon.profile)有没有异常

五、总结

CobaltStrike的心跳通信是其实现远程控制受害者主机的重要机制之一。通过定期发送心跳包并加密传输命令和结果数据,CobaltStrike能够确保与受害者主机之间的网络连接稳定且安全。同时,攻击者还可以通过自定义配置来优化心跳通信的性能和隐蔽性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事讲予风听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值