CobaltStrike逆向学习系列(8):Beacon 结果回传流程分析

这是[信安成长计划]的第 8 篇文章
关注微信公众号[信安成长计划]

0x00 目录

0x01 Beacon 接收与处理

0x02 结果回传

Beacon 在接受完命令并执行后,会将数据加密回传给 TeamServer,TeamServer 进行解析后,并根据类型对结果的格式进行处理后,再回传给 Controller

0x01 Beacon 接收与处理

直接在通信相关函数上下断,HttpSendRequest 发送任务,InternetReadFile 接收任务

图片

跟出函数以后再根据其上下文分析,也就能推断出大致范围

图片

同理在回结果的时候也是一样,这样也就大致确定了整个处理逻辑的代码范围,在这之间进行任务接收、解密、执行、结果回传等

图片

0x02 结果回传

在 Beacon 回结果的时候依然是从 WebServer 接收,继续走了 MalleableHook 来调用到真正的处理函数

图片

最终会走到 POST 的处理流程当中

图片

接着会先读取前四个字节作为大小,然后申请内存,并将后续所有内容读入数组当中

图片

接下来就是解密操作

图片

与之前分析加密一样,先取出相应的 Key,然后再进行相应的操作

图片

计算 Hmac 值,并进行校验

图片

校验通过后进行解密

图片

接着就是读取并返回,后面对 conunter 的计数,看描述可能是防止 replay attack,具体情况并未分析清楚

图片

接着会通过读取返回值所指定的类型来决定以怎样的格式来返回

图片

具体类型的含义在 Job 中也可见一二

图片

然后按照指定格式处理完成后,会回传给 Controller

图片

在 output 中调用了 broadcast,也就意味着他是从 BroadcastWriter 中回传的

图片

接着 Controller 在 TeamQueue 中接收到了信息

图片

继续走处理流程

图片

接着在 DataManager 中进行相应处理

图片

接着 TeamServer 这边实际还有流程没有完成

图片

接着会将下面这些类型全部执行一遍

图片

随便一个跟进去,根据名字分析,应该是对结果值进行相应的提取的,可能是用于对票据等一些内容的展示

图片

posted @ 2022-01-19 11:29  信安成长计划  阅读(94)  评论(0)    收藏  举报