前言

近期,FireEye检测到了一种利用漏洞CVE-2017-0199的恶意OfficeRTF文档——本周早前FreeBuf也报道了这一漏洞,在无需启用Word宏的情况下,打开恶意RFT文档就可感染恶意程序。当用户打开嵌入了漏洞利用代码的恶意文档之后,这个漏洞将允许攻击者在目标设备中下载并执行一个包含PowerShell命令的Visual Basic脚本,而FireEye所发现的这个恶意Office文档正是利用了漏洞CVE-2017-0199来在受感染设备上下载并执行恶意Payload。

目前,FireEye已经将漏洞详情上报给了微软公司,并且正在根据微软补丁的发布时间来协调漏洞披露的相关事宜。【漏洞公告】从近期一些安全机构的分析来看,该漏洞已经被攻击者应用到了攻击中,FreeBuf的安全快讯就报道了该漏洞已经被应用到Dridex银行木马的部署;乌克兰冲突的网络间谍活动中该漏洞也被攻击者利用。

在漏洞补丁发布之前,这个漏洞可以绕过绝大多数的防护机制,但是FireEye的邮件和网络产品成功检测到了这种恶意文档。FireEye建议广大Office用户尽快安装微软公司提供的这份补丁【补丁公告】。

攻击场景

攻击的整个过程如下:

1.    攻击者向目标用户发送一个嵌入了OLE2文件(对象链接)的Word文档。

2.    当用户打开文档之后,winword.exe会向远程服务器发送一个HTTP请求,并获取一个恶意HTA文件。

3.    服务器返回的这个文件是一个伪造的RTF文件,其中嵌入了恶意脚本。

4.    Winword.exe会通过一个COM对象来查询HTA文件处理器,而这一行为将会使微软HTA应用(mshta.exe)加载并执行恶意脚本。

在FireEye所发现的两个恶意文档中,嵌入在其中的恶意脚本首先会终止winword.exe进程,然后下载额外的Payload,最后加载恶意代码。原始的winword.exe进程将会被终止,恶意VB脚本将会隐藏如下图所示的用户弹窗:

2.png

文件1-(MD5:5ebfd13250dd0408e3de594e419f9e01)

FireEye所识别出的第一个恶意文档主要有三个操作阶段。首先,一个嵌入在文档中的OLE2链接对象会让winword.exe访问下面这个URL地址,并下载第一阶段所需要的恶意HTA文件:

 

http[:]//46.102.152[.]129/template.doc

下载完成之后,“application/hta”处理器会对恶意HTA文件进行处理。下图中选中的那一行显示的是第一次恶意文件下载过程,随后还会下载额外的恶意Payload:

      3.png

下载完成之后,临时文件会被存储在用户的临时网络文件夹内,文件名为template[?].hta,其中的[?]为当前运行时间。

逻辑漏洞

Mshta.exe负责处理和解析Content-Type“application/hta”的内容,并执行脚本代码。下图显示的是winword.exe为“application/hta”处理器请求CLSID的注册表键值。

4.png

Winword.exe会向DCOMLaunch服务发送一次请求,并通过svchost.exe进程来让DCOMLaunch执行mshta.exe。接下来,Mshta.exe将会负责执行嵌入在恶意HTA文档中的脚本代码。下图显示的是第一阶段所下载的VB脚本代码(已经过凡混淆处理):

5.png

上图所示的脚本代码会执行下列恶意行为:

1.    通过taskkill.exe终止winword.exe进程,并隐藏之前图片所显示的用户弹窗。

2.    从地址http[:]//www.modani[.]com/media/wysiwyg/ww.vbs下载一个VBScript文件,保存路径为%appdata%\Microsoft\Windows\maintenance.vbs。

3.    从地址http[:]//www.modani[.]com/media/wysiwyg/questions.doc下载一个钓鱼文件,保存路径为%temp%\document.doc。

4.    让Microsoft Word重启。

5.    执行VBScript文件:%appdata%\Microsoft\Windows\maintenance.vbs

6.    打开钓鱼文件%temp%\document.doc,隐藏恶意活动。

其中,恶意VBScript文件将负责执行下面这两个任务:

1.    向%TMP%/eoobvfwiglhiliqougukgm.js写入一个嵌入式脚本(经过混淆处理)。

2.    执行脚本代码。

经过混淆的eoobvfwiglhiliqougukgm.js脚本负责执行以下三个任务:

1.    尝试将自己从系统中删除。

2.    尝试下载http[:]//www.modani[.]com/media/wysiwyg/wood.exe,并将文件保存在%TMP%\dcihprianeeyirdeuceulx.exe。

3.    运行%TMP%\dcihprianeeyirdeuceulx.exe

下图显示的是进程的执行链:

6.png

这一恶意软件最终所使用的payload为LATENTBOT恶意软件家族的一个新型变种。下图显示的是第一个文档文件的元数据:

7.png

LATENTBOT Payload

LATENTBOT是一款高度混淆化的BOT,从2013年起就已经得到了网络犯罪分子的青睐,而且与第一个文档有关的Payload是LATENTBOT恶意软件家族的一个新型变种。这种新版本的LATENTBOT在攻击WindowsXP(x86)和Windows7系统时采用的是与之前版本不同的注入机制:

1.    Attrib.exe-这个恶意bot会调用Attrib.exe,在映射attrib.exe的地址空间时使用的是ZwMapViewOfSection()。

2.    Svchost代码注入-Attrib.exe会以挂起模式运行svchost.exe进程,并通过调用ZwMapViewOfSection()向内存空间注入恶意代码。

3.    控制转移-接下来,它会使用SetThreadContext()修改主线程的OEP,并触发代码执行。

4.    浏览器注入-在NtMapViewOfSection()的帮助下使用类似的方法向默认浏览器中注入Payload。

在Windows7以及之后版本的操作系统中,恶意bot并不会使用attrib.exe,而是在NtMapViewOfSection()的帮助下利用恶意Payload来启动默认浏览器,并向svchost.exe中注入恶意代码。

注入成功之后,这个变种会与下面这台远程命令控制服务器进行通信:

8.png

连接成功之后,LATENTBOT会生成一个信标(beacon)。下图所示即为一个经过解码的信标,其版本号为5015:

9.png

在我们对样本进行分析时,这台C2服务器已经下线。在2017年4月10日时,托管在www.modani[.]com/media/wysiwyg/wood.exe的恶意软件已被更新,而C2服务器的地址也改成了217.12.203[.]100。

文档2-(MD5:C10DABB05A38EDD8A9A0DDDA1C9AF10E)

FireEye所识别出的第二个恶意文档主要会进行两个阶段的恶意活动。首先,它会访问下面这个地址来下载第一阶段所需使用的恶意HTA文件:

 

http[:]//95.141.38[.]110/mo/dnr/tmp/template.doc

这个文件会下载到用户的临时网络文件目录内,并以template[?].hta明明,其中的[?]为当前运行时间。下载完成之后,winword.exe会利用mshta.exe来解析文件,mshta.exe会搜索文件中的<script></script>标签,并执行标签内的脚本代码。下图显示的是经过反混淆的脚本代码:

10.png

上图显示的代码会进行以下几种恶意操作:

1.    通过taskkill.exe终止winword.exe进程,并隐藏之前图片所显示的用户弹窗。

2.    从http[:]//95.141.38[.]110/mo/dnr/copy.jpg下载并执行恶意文件,保存路径为%appdata%\Microsoft\Windows\StartMenu\Programs\Startup\winword.exe

3.    下载http[:]//95.141.38[.]110/mo/dnr/docu.doc,保存路径为%temp%\document.doc

4.    让Microsoft Word重启。

5.    执行恶意Payload,路径为%appdata%\Microsoft\Windows\StartMenu\Programs\Startup\winword.exe

6.    打开钓鱼文件%temp%\document.doc,隐藏恶意活动。

在对恶意Payload进行了分析之后,我们发现它是WingBird的一个变种,而这种恶意软件与FinFisher的性质十分相似。需要注意的是,这款高度混淆化的恶意软件采用了大量反分析机制,关于该恶意软件样本的详细内容请参考Artem的这篇文章【传送门】。

11.png

概括总结

FireEye在Microsoft Word中发现了一个漏洞(CVE-2017-0199),这个漏洞将允许攻击者远程执行恶意VBScript脚本。这是一个逻辑漏洞,而且目前大多数安全缓解方案都无法处理针对这种漏洞的攻击活动。当恶意脚本运行之后,它会下载并执行恶意Payload,并向用户显示一个钓鱼文档。我们所检测到的两个恶意文档都会执行相应的恶意Payload,其中一个包含LATENTBOT,而另一个则包含WingBird/FinFisher。虽然恶意文档中仅包含一个指向攻击者服务器的链接地址,但FireEye的MVX引擎仍然成功检测到了这种多阶段的攻击活动,不过微软公司已经发布了相应的更新补丁,我们也建议广大用户尽快对自己的Office软件进行升级。