【漏洞分析】传播银行类木马的Office 0day漏洞(CVE-2017-0199)技术分析

阅读量161818

|

发布时间 : 2017-04-14 15:23:33

http://p5.qhimg.com/t01cd76e97c2c73e00a.jpg

传送门

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

【漏洞预警】传播银行类木马的Office 0day漏洞


漏洞概述

微软在4月份的例行补丁(4月12日)中对一个Office远程命令执行漏洞(CVE-2017-0199)进行了修补,但事实上在补丁发布之前已有多个利用此漏洞的攻击在野外被发现,其中包含分发银行恶意软件的案例。360天眼实验室也在之前得到相关的漏洞利用样本,分析确认为一个对中国做持续APT攻击的团伙的针对性攻击,这是与已知的其他安全厂商公布的不同来源的攻击,由此可见在此漏洞被修补之前已经在地下扩散到了非常大的范围。随着漏洞相关的技术细节的公开,由于漏洞影响大量的Office版本,利用此漏洞的攻击极有可能开始泛滥,需要引起高度重视。

该漏洞利用OFFICE OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,OFFICE调用URL Moniker(COM对象)将恶意链接指向的HTA文件下载到本地, URL Moniker通过识别响应头中content-type的字段信息(图1)最后调用mshta.exe将下载到的HTA文件执行起来。 

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

图1

利用此漏洞的通常攻击场景,用户收到一个包含恶意代码的Office文件(不限于RTF格式的Word文件,可能为PPT类的其他Office文档),点击尝试打开文件时会从外部网站下载特定的恶意HTA程序执行,从而使攻击者获取控制。


漏洞细节

这里基于Hash为5ebfd13250dd0408e3de594e419f9e01的样本文件对漏洞的利用细节做进一步的深入分析。

5ebfd13250dd0408e3de594e419f9e01是RTF格式的文件,内嵌的OLE对象类型被设置为OfficeDOC,嵌入形式是包裹进一个链接类型OLE对象,类型为ole2link(OLE对象中,其数据流偏移4的位置,如果为2则为包裹类型,如果是1的话则为链接类型)。链接形式的OLE对象本身不包含在文档本身中,而是位于文档之外,其中链接的对象可以在本机,也可以在远程服务器上,这是COM组件的一个特性,因为OLE本身就是COM组件的一部分。

下图为5ebfd13250dd0408e3de594e419f9e01中对象的结构信息

http://p5.qhimg.com/t01a25b55f51ee808b6.png

图2

URL Monkiler是COM对象,在RTF文件中,它的CLSID存放顺序与实际是部分颠倒的:

E0 C9 EA 79 F9 BA CE 11 8C82-00AA004BA90B (红色部分)。Office通过URL Moniker来发送远程请求,下载 http://46.102.152.129/template.doc ,MD5: 3c01c4d68ddcf1e4ecd1fa1ca3024c54,下载的文件是一个RTF文件,其中包含了VBS脚本(如图3)。之后URL Moniker通过content-type识别为HTA,最后调用mshta.exe加载。mstha.exe在匹配到脚本数据之后,执行其中包含的VBS(图4),可以看到这个VBS做了一些简单的混淆。

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

 图3

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

图4

VBS脚本功能:

1. 执行powershell命令结束winword.exe进程

2. 下载http://hyoeyeep.ws/sp.exe文件,写入%appdata%MicrosoftWindowsStart MenuProgramsStartupwinword.exe,这样实现了自启动

3. 下载http://hyoeyeep.ws/sp.doc写入%temp%document.doc

4. 清空注册表键值Word versions 15.0 and 16.0 Resiliency子键与键值。这样winword可以正常的启动

5. 运行%appdata%MicrosoftWindowsStart MenuProgramsStartupwinword.exe。

6. 调用winword打开document.doc。这是个正常文件,目的当然是造成正常处理文件的假象

sp.exe(a9e0d7e94f555dc3a2db5e59e92ed778)属于Dridex家族,是网银类的后门。这里就不详细分析了。下图是VirusTotal上的扫描结果:

http://p8.qhimg.com/t01d98942d7d2520974.png

图5

mshta执行template.doc的过程还值得提一下:

因为下载回来的template.doc文件格式是RTF,里面嵌入了vbscript,mshta会搜索文件数据,匹配可执行的脚本。mshta先会加载mshtml.dll并调用RunHtmlApplication这个导出函数,然后在CCHtmScriptParseCtx::Execute()中匹配脚本文件的标签,获取脚本对象,如图6。0x1fa2120为某数据对象,0x68C173A0处是该类对象的类函数,如图7。我们可以看到0x678128处是RTF文件的内容,0x4910为VBS脚本开始的偏移。经过匹配之后找到脚本数据,最后调用vbscirpt.dll执行脚本。

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

图6

http://p9.qhimg.com/t0129f06827a6b02735.png

图7


相关思考

COM/OLE技术是微软的一大技术亮点,但为开发人员提供了很大的便利同时,其组件的丰富特性也造成了许多的安全隐患,关于OLE所造成的安全漏洞可以参考《Attacking Interoperability: An OLE Edition》文档。对于CVE-2017-0199来说,其绕过了Office执行脚本的安全措施,OLE机制的3个特性组合下导致了这个漏洞:

1. OLE link object特性,本身提供了非常灵活的数据存储和操作架构。

2. URL Moniker特性,Office没有将请求对象类型与content-type做校验是导致HTA脚本执行的一个重要原因,远程请求文件根据content-type来运行对应程序,加载执行数据。

3. Windows在执行HTA文件的时候,会匹配搜索数据流,直到发现有脚本数据流。

这三个特性单个来看都不存在明显的安全隐患,都是为了尽可能实现正常功能,但是这些特性的组合造就了这个漏洞。正好应验了那句话,功能越强大组合方式越多存在安全问题的可能性就会越大。同时像CVE-2017-0199这种典型的利用Windows特性,实现攻击效果,对安全研究人员提出了新的考验,相信以后这种类型的机制组合漏洞还会出现。


参考资料

1.https://msdn.microsoft.com/en-us/library/ms775149(v=vs.85).aspx 

2. https://www.fireeye.com/blog/threat-research/2017/04/cve-2017-0199-hta-handler.html 

3. https://msdn.microsoft.com/en-us/library/dd942265.aspx 


传送门


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

【漏洞预警】传播银行类木马的Office 0day漏洞

本文由奇安信威胁情报中心原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/85889

安全客 - 有思想的安全新媒体

分享到:微信
+10赞
收藏
奇安信威胁情报中心
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66