CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

admin 2022年4月23日02:35:08SecIN安全技术社区CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析已关闭评论54 views880字阅读2分56秒阅读模式

所有的任务在 Controller 处理以后,都会直接发送到 TeamServer,接着等待 Beacon 回连的时候将任务取走,文章以 shell whoami 为例

0x01 Controller->TeamServer

当在 Console 中输入命令回车后,会进入 BeaconConsole 进行处理

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

专门来处理 shell 命令,命令解析 popString 所返回的就是要执行的命令 whoami

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

接着会在 TaskBeacon 中处理执行逻辑,因为只有一个 Beacon 就直接跟入了

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

然后就是构造任务了,将信息处理后用于 Beacon 去解析执行

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

之后会先打印执行日志,然后才是真正的传递了

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

日志记录也是一样通过 TeamQueue 传给 TeamServer

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

TeamServer 在 ManageUser 中接到日志

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

在处理以后直接添加广播将信息发送出去

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

然后通过 BroadcastWriter 写回给 Controller

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

接着 Controller 将任务发送给 TeamServer

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

TeamServer 在接到以后同样走对应的处理逻辑

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

从两个参数中取出 BeaconId 和任务,然后进入 BeaconData 处理逻辑

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

这里的有用代码也就是 else 中的 add 了,上面的判断是 CS 的一个暗桩,运行三十分钟后再执行命令就会直接发布退出任务

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

在将任务添加到 List 以后,也会将 BeaconId 记录下来

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

到这里任务的发布就完成了

0x02 TeamServer->Beacon

在 Beacon 回心跳包的时候,会来请求任务

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

直接从任务队列中取出数据

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

然后循环添加,并将添加过的移除,如果任务大于指定大小的话就会跳出循环

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

最后将任务队列返回

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

之后再相应的将其他的内容取出

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

最后构造并返回,这里会进行打印日志的操作,输出发送了的命令的长度

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

在返回之后会对数据进行加密

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

首先会根据 BeaconId 取出对应的 AESKey 和 HmacSHA256Key

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

之后写入系统时间/1000,任务长度,任务数据,并对其进行补齐,添加 A,补够 16 的整数倍

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

然后进行 AES 加密

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

接着对数据进行 Hmac

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

之后将 AES 加密后的任务写入,并将 Hmac 的前 16 位拼接到后面

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

之后便返回给 Beacon 了

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

0x03 流程图

CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月23日02:35:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  CobaltStrike逆向学习系列(7)-Controller 任务发布流程分析 https://cn-sec.com/archives/916924.html