2017-10-31 11:13:01
阅读:1402次
点赞(0)
收藏
来源: securelist.com
作者:興趣使然的小胃
译者:興趣使然的小胃
预估稿费: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漏洞。
漏洞利用载荷本身为word/document.xml格式,如下所示:
根据Office Open XML文件格式标准(ECMA-376)中的描述,“font”元素用来描述文档中使用的字体,正常的“font”元素如下所示:
在漏洞利用载荷中,并没有出现</w:font>这个闭合标签。紧跟在<w:font>标签之后的是<o:idmap/>对象元素,这种情况会导致OOXML解析器出现“类型混淆(type confusion)”现象。使用任何对象元素都可以成功利用这个漏洞。在漏洞利用点之前,我们必须通过某个检查步骤,具体方法是在<w:font>标签之前设立一个OLEObject元素,其中的name属性值从UTF-8编码转换为Unicode编码后长度必须大于或等于32个字节。
从UTF-8编码转换为Unicode编码后,E8 A3 AC E0 A2 80会变成EC 88 88 08。
如果这些条件全部满足,这个指针会被解除引用,控制流程会移交给“该地址+4”处所对应的内容。
如果想控制0x088888EC地址处的内存内容,攻击者需要将常见的堆喷射(heap spraying)技术与ActiveX组件结合使用。
漏洞利用程序使用msvbvm60.dll中的ROP以及gadget(指令代码)来绕过ASLR(地址空间布局随机化)以及DEP(数据执行保护)机制。RTF文档会使用与msvbvm60.dll文件相关联的CLSID来加载这个DLL模块。
ROP的第一部分功能是设置ESP寄存器的值:
ROP的第二部分内容会被忽略掉,其作用是将EIP寄存器设置为0x088883EC。最后的“pop eax; retn”指令会将0x729410D0地址填充到EAX中。这个地址是msvbvm60.dll导入(Imports)表中VirtualProtect指针所对应的地址(VirtualProtect位于Kernel32.dll中)。
下一个ROP gadget会使用这个VirtualProtect指针来调用VirtualProtect(0x8888C90, 0x201, 0x40, 0x72A4C045)函数。执行这个操作后,程序控制权会移交给0x8888F70地址处的shellcode,这段shellcode会解密并执行内嵌的DLL:
三、附录
卡巴斯基实验室安全解决方案将СVE-2017-11826漏洞利用程序标记为:
MSWord.Agent.ix
MSOffice.CVE-2017-11826.a
HEUR:Exploit.MSOffice.Generic
对应的IOC为:
cb3429e608144909ef25df2605c24ec253b10b6e99cbb6657afa6b92e9f32fb
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://securelist.com/analyzing-an-exploit-for-%D1%81ve-2017-11826/82869/