概述
Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS。基于强大的管理能力,现在CobaltStrike备受APT组织、灰黑产从业者以及红队人员的青睐。但由于CobaltStrike的文件特征、网络特征以及内存特征都太过于明显,如何成功加载CS变成了一个难题。比较简单的解决方案是编写复杂的加载器,通过加载器去内存加载cs,例如近年攻防演练中就出现了大批的Golang加载器加载CS。
样本分析
基本信息
MD5 | FileName | FileType |
---|---|---|
78b5f592a5fa471c6b19876e3770104d | FloydNewsletter.doc | Doc/Macro |
原始样本为doc文档,利用方式为Macro。
详细分析
原始样本的宏代码通过AutoOpen方法触发,宏代码触发之后程序将会依次调用SaveTextToFile和EventNotification两个方法 ,其中第一个方法用于写入文件到本地磁盘,第二个方法用于弹框迷惑用户
硬编码的base64解码之后将会写入到C:\Users\Public\Downloads\OrderData.xml
,接着程序调用MSBuild加载该xml文件(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe)。
释放的xml文件中包含了一段C#的代码
利用MSBuild加载xml中的C#代码是一种比较老的技术,2017年的时候海莲花也用过该技术。
xml文件中的关键代码在Execute函数中,Execute函数首先是定义了一个orig_hash,该hash用于判断下面shellcode是否解密成功
接着程序定义了一段hex数组,for循环255次,依次遍历该数据与循环变量进行异或,异或完成之后计算该段hex的hash并与上面的orig_hash相比较
若比较成功,则说明shellcode成功解密,程序则会创建svchost.exe并将shellcode注入到该进程中
通过简单的C#代码即可解密该段数据
根据解密后shellcode的头部数据可以得知这是一个CobaltStrike的下载器
该Beacon定义的C2地址为:pharmgenz.com