【技术分享】对СVE-2017-11826漏洞利用程序的分析

https://p5.ssl.qhimg.com/t01b7630c4fe477da31.jpg

译者:興趣使然的小胃

预估稿费:80RMB

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

一、前言

在最近的周二补丁日(10月17日)中,微软发布了62个漏洞补丁,其中有个补丁负责修复СVE-2017-11826漏洞。СVE-2017-11826漏洞是一个非常严重的零日(zero-day)漏洞,攻击者可借此实施针对性攻击行动,所有版本的Microsoft Office软件都会受此漏洞影响。

二、技术分析

攻击者所使用的漏洞利用程序为一个RTF文档,其中包含一个DOCX文档,DOCX文档负责利用Office Open XML解析器中存在的СVE-2017-11826漏洞。

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

漏洞利用载荷本身为word/document.xml格式,如下所示:

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

根据Office Open XML文件格式标准(ECMA-376)中的描述,“font”元素用来描述文档中使用的字体,正常的“font”元素如下所示:

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

在漏洞利用载荷中,并没有出现</w:font>这个闭合标签。紧跟在<w:font>标签之后的是<o:idmap/>对象元素,这种情况会导致OOXML解析器出现“类型混淆(type confusion)”现象。使用任何对象元素都可以成功利用这个漏洞。在漏洞利用点之前,我们必须通过某个检查步骤,具体方法是在<w:font>标签之前设立一个OLEObject元素,其中的name属性值从UTF-8编码转换为Unicode编码后长度必须大于或等于32个字节。

http://p6.qhimg.com/t0150154c30b5a0eb07.png

从UTF-8编码转换为Unicode编码后,E8 A3 AC E0 A2 80会变成EC 88 88 08。

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

如果这些条件全部满足,这个指针会被解除引用,控制流程会移交给“该地址+4”处所对应的内容。

http://p0.qhimg.com/t014577fe5eca16df25.png

如果想控制0x088888EC地址处的内存内容,攻击者需要将常见的堆喷射(heap spraying)技术与ActiveX组件结合使用。

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

漏洞利用程序使用msvbvm60.dll中的ROP以及gadget(指令代码)来绕过ASLR(地址空间布局随机化)以及DEP(数据执行保护)机制。RTF文档会使用与msvbvm60.dll文件相关联的CLSID来加载这个DLL模块。

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

ROP的第一部分功能是设置ESP寄存器的值:

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

ROP的第二部分内容会被忽略掉,其作用是将EIP寄存器设置为0x088883EC。最后的“pop eax; retn”指令会将0x729410D0地址填充到EAX中。这个地址是msvbvm60.dll导入(Imports)表中VirtualProtect指针所对应的地址(VirtualProtect位于Kernel32.dll中)。

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

http://p6.qhimg.com/t01c76883b6054f0cbe.png

下一个ROP gadget会使用这个VirtualProtect指针来调用VirtualProtect(0x8888C90, 0x201, 0x40, 0x72A4C045)函数。执行这个操作后,程序控制权会移交给0x8888F70地址处的shellcode,这段shellcode会解密并执行内嵌的DLL:

https://p4.ssl.qhimg.com/t01ff0526bda47733ce.png

三、附录

卡巴斯基实验室安全解决方案将СVE-2017-11826漏洞利用程序标记为:

MSWord.Agent.ix

MSOffice.CVE-2017-11826.a

HEUR:Exploit.MSOffice.Generic

对应的IOC为:

cb3429e608144909ef25df2605c24ec253b10b6e99cbb6657afa6b92e9f32fb5

(完)