遇到一个有趣的样本,觉得挺有趣的,就分析了一下。
0x01-----------------execl下载器部分
用了一个模糊图片,欺骗用户点击启用宏。
使用oletools的工具中的olevba3.py就可以初步判断是恶意xls了
当我们点击那个启用宏的按钮时,会触发Submit()方法,然后execl会创建一个wscrpt.shell的object来运行.net的编译器来编译远程的payload, ,ec2-18-191-166-175.us-east-2.compute.amazonaws.com\webdav\msbuild.xml
0x02--------------------msbuild.xml分析
msbuild.xml包含了恶意的c#源码。该源码中包含了C2的地址。和被base64编码和Deflat压缩过的恶意程序。使用msBuild.exe来绕过杀软等的检测这种方式已经被很多组织利用了。比如著名的APT组织海莲花等。
经过解码和解压缩之后,通过使用Aseeembly.Load等方法,实现直接在内存中加载恶意程序的功能。
0x03---------------------解密恶意文件
这里我稍微改了一下这个病毒的源码,让它不执行,而是将解密的程序输出到文件。接下来我们使用dnspy来分析这个恶意程序。
0x04-----------------------恶意程序以及关联开源项目分析。
这这之前看了一下那个C2的地址,443端口上面没有任何东西。
程序的基本类和方法如下图。
因为C2的443端口上没有放置任何东西。所以针对这个C2的分析继续不下去了。继续搜索一些这个样本中的信息,发现这个样本使用的是一个开源的后渗透框架-SILENTTRINITY。
https://github.com/byt3bl33d3r/SILENTTRINITY,该开源框架的工作机制如下。
所以本篇所介绍的样本,在Server端没有部署成功。导致stage.zip无法下载。
该框架的client端的所有代码全部定义在 public class ST中。定义了三个静态变量。
我们接着看ST.Main 函数。
初始化URL通过Main的参数。然后通过
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
加入自己的自定义程序集加载逻辑。这样是为了避免通过反射加载程序集出错的时候能够根据自定义的方式解决。
接下来就是调用RunIPYEngine()引擎,该引擎能够用来执行python程序,而无需安装python环境
接下来分析RunIPYEngine()。
首先会创建python解析引擎的实例。
协商ECDH协商用于AES加密用的key,然后访问C2获取stage.zip。使用key将被加密的stage.zip解密。然后加载其中的IronPython.dll程序集。然后提取stage.zip中的Main.py。
执行Main.py.
根据该框架的工作机制图。执行Main.py中之后。客户端会向C2发送获取job.py的请求。
如果有job, 则会下发给客户端。客户端的Main.py会创建一个新的IPY的engin线程来执行job.py,并且将执行的结果返回给服务端。
0x05-------------------本次分析总结。
1、该样本的C2的服务没有提供到位,本来想写文发稿的,让我很难受。
2、该样本的前期入口点xls文件这里,里面的宏代码没有做任何的混淆。虽然该样本在VT上只有5个引擎报了。但是,我觉得经过混淆效果会更好。
3、这次学习到了msBuild.exe来直接生成恶意程序并且在内存中加载的方式。虽然这种攻击方式已经被披露很久了。但我觉得他使用宏来执行这一点是非常不错的。
IOC:
Xls:
b9a8c91ca53684394cd34b32477240a60579c89c048bafdb67cdd897606341ba
url:
ec2-18-191-166-175.us-east-2.compute.amazonaws.com\webdav\msbuild.xml
注:本来想自己搭建一个测试一下的,后来觉得太麻烦就不搞了。样本上传附件:密码:infected
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界