【漏洞分析】CVE-2017-0199:分析 Microsoft Office RTF 漏洞

http://p3.qhimg.com/t01b6553f98f6656924.jpg

翻译:shan66

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

FireEye最近检测到利用CVE-2017-0199安全漏洞的恶意Microsoft Office RTF文档,要知道CVE-2017-0199可是此前尚未公开的漏洞。当用户打开包含该漏洞利用代码的文档时,恶意代码就会下载并执行包含PowerShell命令的Visual Basic脚本。 FireEye已经发现了一些通过CVE-2017-0199漏洞下载并执行各种臭名昭著的恶意软件系列的有效载荷的Office文档。

FireEye与Microsoft分享了该漏洞的详细信息,并通过协调,根据Microsoft公司发布相应的补丁程序的时间来选择该漏洞的公开披露时机,具体情况读者可以从这里找到。

在该漏洞的补丁发布之前,该漏洞的利用代码能够绕过大多数安全措施;然而,FireEye电子邮件和网络产品仍然检测到了相关的恶意文件。 FireEye建议Microsoft Office用户从Microsoft下载安装相应的补丁程序。 


攻击场景

攻击的具体方式如下所示:

1. 攻击者通过电子邮件向目标用户发送含有OLE2嵌入式链接对象的Microsoft Word文档

2. 当用户打开文档时,winword.exe将会向远程服务器发出HTTP请求,以索取恶意HTA文件

3. 服务器返回的文件是一个带有嵌入式恶意脚本的假RTF文件

4. Winword.exe通过COM对象查找application / hta的文件处理程序,从而导致Microsoft HTA应用程序(mshta.exe)加载并执行恶意脚本

根据我们之前发现的两个文档来看,其恶意脚本将终止winword.exe进程,下载额外的有效载荷,并加载诱饵文件。之所以要终止原始的winword.exe进程,是为了掩盖OLE2link生成的用户提示。该提示具体如图1所示。 

http://p2.qhimg.com/t01f627749d686e3fe6.png

图1:Visual Basic脚本隐藏的用户提示 


文件1——(MD5: 5ebfd13250dd0408e3de594e419f9e01)

对于FireEye发现的第一个恶意文件来说,攻击过程分为三个阶段。 首先,嵌入的OLE2链接对象会令winword.exe通过以下URL下载第一阶段的恶意HTA文件: 

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

下载之后,这个恶意的HTA文件将由“application / hta”处理程序进行处理。在图2中高亮显示的行展示了其第一次下载,其后是附加的恶意有效载荷。

http://p4.qhimg.com/t013146563f22705150.png

图2:实际攻击情形

一旦下载完成,模板文件将被存储在用户的临时Internet文件中,并将其命名为[?] .hta,其中[?]是在运行时才被确定的。


逻辑错误

Mshta.exe程序负责处理Content-Type为“application / hta”的文件,解析文件内容并执行脚本。 图3展示的是winword.exe正在查询“application / hta”处理程序的CLSID的注册表值。 

http://p3.qhimg.com/t0159cb3fe880413216.png

图3:Winword查询注册表值

Winword.exe向DCOMLaunch服务发出请求,这将导致托管DCOMLaunch的svchost.exe进程执行mshta.exe。之后,Mshta.exe就会执行嵌入在恶意HTA文档中的脚本。 图4显示了第一阶段下载的、经过反混淆处理后的VBScript。

http://p7.qhimg.com/t014b45f8bf9c940145.png

图4:第一个文件,即第一阶段的VBScript

在图4中所示的脚本将执行以下恶意操作: 

1. 使用taskkill.exe终止winword.exe进程,以隐藏图1所示的提示。

2. 从http [:]//www.modani [.] com/media/wysiwyg/ww.vbs下载一个VBScript文件,并将其保存到%appdata%MicrosoftWindowsmaintenance.vbs文件中

3. 从http [:]//www.modani [.] com/media/wysiwyg/questions.doc下载诱饵文件,并将其保存到%temp%document.doc文件中

4. 清理15.0和16.0版本Word的Word Resiliency keys,以便Microsoft Word可以正常重新启动

5. 执行恶意攻击第二阶段的VBScript:%appdata%MicrosoftWindowsmaintenance.vbs

6. 打开诱饵文档%temp% document.doc,以隐藏用户的恶意活动

一旦执行,前面下载的第二阶段的VBScript(ww.vbs/maintenance.vbs)脚本将执行以下操作:

1. 将嵌入式的、经过混淆处理的脚本写入%TMP%/ eoobvfwiglhiliqougukgm.js

2. 执行脚本

经过混淆处理的eoobvfwiglhiliqougukgm.js脚本,在运行时将完成以下操作:

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

2. 尝试下载http [:]//www.modani [.] com/media/wysiwyg/wood.exe(最多尝试44次),并将文件保存到%TMP%dcihprianeeyirdeuceulx.exe

3. 执行%TMP% dcihprianeeyirdeuceulx.exe

图5为我们展示了事件的进程执行链。

http://p7.qhimg.com/t01f90e3a43036eb119.png

图5:进程创建事件

在这里,这个恶意软件的最终有效载荷是LATENTBOT恶意软件系列中的一个较新版本。至于这个恶意软件的更新详情,请参见文件2的有关介绍。 

http://p4.qhimg.com/t01aa51822df816249c.png

表1:第一个文档文件的元数据


有效载荷LATENTBOT

与第一个文档相关联的有效载荷是LATENTBOT恶意软件系列的更新版本。 LATENTBOT是一个经过高度混淆处理后的BOT,自2013年以来一直在野外传播。

较新版本的LATENTBOT为Windows XP(x86)和Windows 7操作系统提供了多种不同的注入机制:

Attrib.exe补丁——LATENTBOT将调用Attrib.exe,修改内存中的相关内容,并插入一个JMP指令将控制权传递到映射的部分。为了将这一部分映射到atrrib.exe的地址空间中,需要使用ZwMapViewOfSection()。

Svchost代码注入——Attrib.exe以挂起模式启动svchost.exe进程,创建内存空间,并通过调用ZwMapViewOfSection()分配代码。

控制传输——然后使用SetThreadContext()修改主线程的OEP,它将在远程进程中执行以触发代码执行。

浏览器注入——借助NtMapVIewOfSection()将最终的有效载荷注入默认的Web浏览器中。 

在Windows 7或更高版本的操作系统中,该bot不会使用attrib.exe。 相反,它会将代码注入到svchost.exe中,然后借助NtMapViewOfSection(),通过恶意有效载荷来启动默认浏览器。

然后,该变种将连接到以下命令和控制(C2)服务器:

http://p7.qhimg.com/t0127952187c9af9a64.png

在与C2服务器成功连接后,LATENTBOT将生成一个信标。 其中一个解密的信标如下所示,更新版本号为5015:

http://p7.qhimg.com/t014cb8aa4185a178bb.png

在我们进行漏洞分析时,C2服务器已经处于离线状态。 该bot具有高度模块化的插件架构,并已用于“Pony”行动的信息窃取。

截至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

该文件下载到用户的临时Internet文件目录中,名称为[?] .hta,其中[?]是在运行时才确定的。 一旦下载完成,winword.exe就会使用mshta.exe来解析该文件。 mshta.exe会在文件中查找<script> </ script>标签来进行相关的解析工作,并执行其中的脚本。 图6显示了经过反混淆处理后的脚本。

http://p7.qhimg.com/t013bf1ba3f2346f94e.png

图6:第二个文件,第一阶段的VBScript 

图6展示了以下恶意操作:

1. 使用taskkill.exe终止winword.exe进程,以隐藏图1所示的提示

2. 从http [:]//95.141.38 [.] 110/mo/dnr/copy.jpg下载可执行文件,将其保存到'%appdata%MicrosoftWindowsStart MenuProgramsStartupwinword.exe文件中

3. 从http [:]//95.141.38 [.] 110/mo/dnr/docu.doc下载文档,将其保存到%temp%document.doc文件中

4. 清理Word 15.0和16.0版本的Word Resiliency key,以使Microsoft Word正常重新启动

5. 在“%appdata%MicrosoftWindowsStart MenuProgramsStartupwinword.exe”中执行恶意有效载荷

6. 打开诱饵文档%temp% document.doc,以隐藏用户的恶意活动

检查恶意有效载荷后发现,它是微软称为WingBird的注入器的一个变体,具有与FinFisher类似的特性。这个恶意软件经过了充分的混淆处理,并提供了多种反分析措施,包括定制的虚拟机以增加分析所需时间。 “Artem”发表的博客文章介绍了WingBird的有效载荷驱动程序。这篇博客的作者简要介绍了与该样本匹配的注入器的保护技术。 

http://p2.qhimg.com/t0110731d4bce5ea523.png

表2:第二个文件的元数据


小结

我们发现了一个编号为CVE-2017-0199的安全漏洞,这是Microsoft Word中的一个漏洞,它允许攻击者执行恶意的Visual Basic脚本。 CVE-2017-0199漏洞是一个逻辑错误引起的,并且能够绕过大多数安全防御措施。在执行恶意脚本后,攻击者能下载并执行恶意的有效载荷,同时向使用者显示诱饵文件。这两个文件都能执行恶意有效载荷,其中一个包含LATENTBOT,另一个包含WingBird/FinFisher。实际上,这个恶意文件中只含有一个指向攻击者控制的服务器的链接,这充分展示了FireEye的MVX引擎在检测多阶段攻击方面的绝对优势。在该漏洞的补丁发布之前,我们就已经观测到了利用该漏洞的攻击活动。

我们建议Microsoft Office用户尽快安装相应的漏洞补丁。  

(完)