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

这是[信安成长计划]的第 7 篇文章
关注微信公众号[信安成长计划]
在这里插入图片描述
0x00 目录

0x01 Controller->TeamServer

0x02 TeamServer->Beacon

0x03 流程图

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

0x01 Controller->TeamServer

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

图片

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

图片

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

图片

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

图片

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

图片

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

图片

TeamServer 在 ManageUser 中接到日志

图片

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

图片

然后通过 BroadcastWriter 写回给 Controller

图片

接着 Controller 将任务发送给 TeamServer

图片

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

图片

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

图片

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

图片

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

图片

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

0x02 TeamServer->Beacon

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

图片

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

图片

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

图片

最后将任务队列返回

图片

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

图片

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

图片

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

图片

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

图片

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

图片

然后进行 AES 加密

图片

接着对数据进行 Hmac

图片

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

图片

之后便返回给 Beacon 了

图片

0x03 流程图

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值