这是[信安成长计划]的第 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 这边实际还有流程没有完成
接着会将下面这些类型全部执行一遍
随便一个跟进去,根据名字分析,应该是对结果值进行相应的提取的,可能是用于对票据等一些内容的展示