概述

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两个方法 ,其中第一个方法用于写入文件到本地磁盘,第二个方法用于弹框迷惑用户
image.png

硬编码的base64解码之后将会写入到C:\Users\Public\Downloads\OrderData.xml ,接着程序调用MSBuild加载该xml文件(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe)。
image.png

释放的xml文件中包含了一段C#的代码
image.png

利用MSBuild加载xml中的C#代码是一种比较老的技术,2017年的时候海莲花也用过该技术。
image.png

xml文件中的关键代码在Execute函数中,Execute函数首先是定义了一个orig_hash,该hash用于判断下面shellcode是否解密成功
image.png

接着程序定义了一段hex数组,for循环255次,依次遍历该数据与循环变量进行异或,异或完成之后计算该段hex的hash并与上面的orig_hash相比较
image.png

若比较成功,则说明shellcode成功解密,程序则会创建svchost.exe并将shellcode注入到该进程中
image.png

通过简单的C#代码即可解密该段数据
image.png

根据解密后shellcode的头部数据可以得知这是一个CobaltStrike的下载器
image.png

该Beacon定义的C2地址为:pharmgenz.com
image.png