Payload生成分析

分阶段payload

aggressor\dialogs\WindowsExecutableDialog.class

生成stager shellcode

shellcode具体的生成和混淆过程可以自己跟一下getPayloadStrager这个方法(后边有一个混淆的算法)

把生成好的stager shellcode根据生成类型嵌入到不同的PE文件中然后保存到文件

读取PE资源添加shellcode(这里还有一个试用版遗留问题)然后修正PE校验码最后保存到文件

这里就是被替换的地方

大小一共是1024个字节对于一个stager是绰绰有余

修补前后对比

PE校验码
shellcode填充

其他分阶段payload生成过程大同小异没啥区别包括

Payload Generator生成的都是stager shellcode,基本也是这个过程只不过没有嵌入到PE中

无阶段Payload生成过程

无阶段payload生成过程基本上也没太大区别

大致流程就是读取Beacon.dll,解密完成进行修补然后使用相同的方法将其嵌入到PE中。

对比修补前后右为原始Beacon.dll,左为修补后

比对修补前后时,导出格式请选择RAW格式。整体来说Beacon修补了三个地方PE头Malleable C2通信规则Malleable C2后渗透规则

4.x与3.x不同的是多了一个资源解密,在3.x时所有资源都是放在resources文件夹内,在4.x后Cobalt Strike将加密的资源都放在了sleeve文件夹内,还有一些不同的是,无阶段payload生成增加了powershell和raw两种格式。至于具体怎么修补通信规则和后渗透规则的自己读一下相关代码吧