首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2017年Office漏洞及漏洞攻击研究报告

2017年Office漏洞及漏洞攻击研究报告

作者头像
昨天50还没用完
发布2018-06-29 14:59:07
6500
发布2018-06-29 14:59:07
举报
文章被收录于专栏:菜鸟程序员菜鸟程序员

第一节    引子

微软Office系统软件(Word/Excel/PowerPoint等),一直是电脑上最为常用的办公软件之一,在国内外都拥有大量的用户。另一方面,利用 Office系列软件的漏洞进行网络攻击已经成为黑客惯用的手段,广泛运用于 APT攻击,抓肉鸡,传播勒索病毒等。其中一种典型的攻击方式是“鱼叉攻击”:黑客将包含漏洞的文档伪装成为一个正常的Office 文档,并精心构造文件名,然后投递到用户邮箱,如果用户不小心打开文档,恶意代码便会悄悄执行,用户完全没有感知。 另外,随着新版本的Office不断发布,微软逐渐停止了对于老版本Office的技术支持,包括提供安全更新。2017 年10月,微软就正式停止了对 Office 2007的技术支持。这本是软件生命周期中不可避免的事情,但对于使用Office 软件的用户来说,除非升级到更新的版本,否则将面临被黑客攻击的风险。然而,事实上目前仍有大量的用户选择不升级,而是继续使用老版本的Office软件。

针对上述情况,腾讯电脑管家安全实验室对2017年Office漏洞以及漏洞攻击进行了深入的分析和整理,并向全社会输出此报告,希望更多的人能够了解 Office 漏洞以及危害,进一步提高安全意识;同时也希望各家安全厂商能够同心协力,一起来为用户建设更加安全的网络环境。

第二节    Office漏洞补丁数据及分析

截止到10月,微软在2017年一共发布了372 个Office漏洞补丁,除了1 月和2月之外,微软每个月的发布的 Office补丁数量都在30个以上,其中9月最高,发布了 74 个补丁,每月发布的补丁具体数量详见下图:

从漏洞补丁发布的数量来看,如果用户不及时使用Windows Update或者第 3方安全软件打补丁修复漏洞,将面临极大的安全风险。

根据腾讯电脑管家的统计,目前大约有48%的用户仍然在使用低版本的Office软件,包括Office 2007/Office 2003 等;同时,微软对于Office 2007 以上版本的也不是完全支持:对于Office 2010和Office 2013 来说,支持SP2及以上版本,对于Office 2013 来说,支持 SP1及以上版本。 Office各版本用户分布如下图:

对于这些使用低版本Office的用户来说,他们将不再会收到任何Office漏洞的安全更新,即使这个漏洞已经被黑客掌握并频繁用于网络攻击。

更为糟糕的是,很多用户虽然使用的是较高版本的Office,可以收到Office漏洞的安全更新通知,但是由于安全意识的缺乏,往往选择不安装安全更新。以今年曝光的 RTF漏洞CVE-2017-0199 为例:

漏洞编号

漏洞曝光时长

补丁发布时间

未修复比例

CVE-2017-0199

6个月

2017年4月

23.81%

这个漏洞在网络上公开曝光的时长已经超过了6个月,黑客早已掌握该漏洞的利用技术,并发起了多起网络攻击;另一方面,微软在2017年 4月份的安全更新中就发布了该漏洞的补丁,电脑管家也多次提醒用户修复该漏洞,但截止当前,仍然有超过 1/5的用户没有选择修复该漏洞。

第三节    Office漏洞攻击案例分析

2017年注定是网络安全不平静的一年,WannaCry勒索病毒利用微软SMB “永恒之蓝”漏洞横扫全球计算机网络,让所有人都切身感受到了漏洞作为网络攻击武器的强大威力。其实在2017 年,Office漏洞攻击也层出不穷,对政府、企业和个人都造成了很大的威胁。下面我们针对一些典型的 Office漏洞攻击案例来做分析。

(一)利用 Office 漏洞进行 APT 攻击

Office漏洞常常用于APT攻击,对于高价值目标,甚至会使用未公开的Office 0Day漏洞。 2017年就曝光了数个Office0Day 漏洞野外攻击样本,而我们也捕获了一些利用Office漏洞的 APT攻击样本。

CVE-2017-8759是2017年曝光的Office0Day漏洞之一,在漏洞曝光后的几天内,我们就捕获到了攻击样本。攻击载体是一个名为《中国香港记者 ***.doc》的 Word文档,通过钓鱼邮件发动鱼叉攻击。文档中嵌入了恶意载荷,触发CVE-2017-8759漏洞后执行,会从指定 URL下载一个名为whoamifile.jpeg的 hta文件:

whoamifile.jpeg文件的功能是下载指定服务器上的youcandowhat.jepg文件到临时目录并执行,该文件是一个远程控制木马LameRat 的安装包。LameRat能够检测数十种国内外主流安全软件,并进行相应的绕过安装,适配当前主流的 windows操作系统。

LameRat主要功能都通过下发各种插件完成,分析发现该木马下发的插件多大数十种,能够实现各种复杂的定向功能:

(二)利用 Office 漏洞传播僵尸网络

僵尸网络的主要传播路径为海量发送钓鱼邮件。随着民众安全意识的提高,直接发送可执行文件的钓鱼文件被成功打开的几率变得越来越低,而发送文档类型的文件则能大大提高点击率,因此Office漏洞也成了僵尸网络传播者的最常用的手段之一。在CVE-2017-0199 漏洞曝光后,我们就拦截到了大量利用该漏洞的钓鱼邮件,邮件附件中携带了 CVE-2017-0199漏洞利用程序,一旦收件人在未打补丁的电脑上打开附件中的Doc 文件,就会感染Loki Bot僵尸网络木马:

传播的Loki Bot僵尸网络,会盗取大量帐号密码。

(三)利用Office漏洞传播勒索病毒

勒索病毒是近年来互联网安全面临的主要威胁之一。除了WannaCry,Petya 等知名勒索病毒之外,迄今我们已经发现了数百种的勒索病毒及其变种,而Office 漏洞也成为了勒索病毒传播的主要手段之一。以下是我们近期拦截到的利用 CVE-2017-0199打包的敲诈者病毒邮件:

漏洞触发后释放的木马是一个敲诈者病毒,能够加密电脑中的多种文档类型文件,并且用到RSA2048非对称加密,理论上无法破解,木马还会根据加密文件的数量和大小等来判断要勒索的比特币数量。

越来越多的攻击者更加倾向于利用Office漏洞文档来进行恶意行为,相比传统的可执行程序更具有迷惑性。若攻击者使用鱼叉或水坑攻击方式,并结合社会工程学手段,精心构造文档名及伪装内容,安全意识薄弱的用户很容易中招。

第四节    漏洞原理分析

2017年曝光了好几个Office漏洞以及漏洞的利用方法,这一定程度上导致了Office漏洞攻击的泛滥。接下来将从技术角度去揭露这些漏洞的原理,以及漏洞修复的思考。我们相信,只有深入理解这些漏洞,才有可能做出更好的防御。

(一)逻辑漏洞CVE-2017-0199、CVE-2017-8570

CVE-2017-0199是Microsoft Office的OLE处理机制实现上存在的一个逻辑漏洞,此漏洞的成因主要是 word在处理内嵌OLE2LINK对象时,通过网络更新对象时没有正确处理Content-Type所导致的一个逻辑漏洞。攻击者可利用这个漏洞构造恶意Office文件,当用户打开特殊构造的恶意Office文件后,无需其他的操作,就可以实现在用户系统上执行任意命令,从而控制用户系统。

这个漏洞的利用非常简单,不同于内存破坏漏洞,它不需要做内存布局,不需要绕过微软采用的一系列诸如ASLR、DEP之类的漏洞缓解措施,就能实现从远程服务器下载执行任意代码,而且成功率非常高,同时影响 office所有版本。在 2017年BlackHat黑帽大会上,CVE-2017-0199 获得了最佳客户端安全漏洞奖。

CVE-2017-0199涉及到两个危险的COM对象:

CLSID_SCRIPTLET ={06290bd3-48aa-11d2-8432-006008c3fbfc} CLSID_HTA ={3050f4d8-98b5-11cf-bb82-00aa00bdce0b}

CLSID_HTA是一个表示Microsoft HTML Application(文件后缀.hta)的全局唯一标识符,由 32个16 进制字符组成。scriptlet又称为Windows Script Component (WSC),其设计目的是执行Javascript 、 VBScript以及 PerlScript等脚本语言,同样也可以执行XML文件中的脚本代码。

微软在4月份发布补丁修复了CVE-2017-0199,分成两部分,一部分是针对Office 的补丁,修改了MSO.dll,一部分是针对Windows的补丁,修改了ole32.dll ,需要office补丁和Windows补丁两者结合一起,才能完整修复这个漏洞。微软在补丁中加入了一套过滤机制,在 office 尝试初始化这两个危险的COM对象时,直接拒绝掉。

单纯地过滤COM对象的GUID很容易,但是可以寻找另外的COM 对象来绕过补丁,这导致了另外一个漏洞:CVE-2017-8570的诞生,安全研究人员另外找到了一个 GUID为{06290BD2-48AA-11D2-8432-006008C3FBFC} 的COM对象,它和之前的GUID非常类似:

{06290BD3-48AA-11D2-8432-006008C3FBFC}

{06290BD2-48AA-11D2-8432-006008C3FBFC}

可以看到两者只相差一位。这个新的GUID绕过了微软针对CVE-2017-0199的补丁,微软不得不继续添加过滤列表,在 8月份继续发布补丁封堵了这个新的GUID 。在可以想象的将来,预计这个过滤列表会继续增加下去。

(二) EPS 漏洞 CVE-2017-0261、CVE-2017-0262

EPS是封装的PostScript(Encapsulated PostScript)格式。PostScript 语言是Adobe 公司设计用于向任何支持 PostScript语言的打印机打印文件的页面描述语言。EPS 图片实际上就是一个PostScript程序。

Office文档中可以嵌入各种格式的图片,例如GIF、JPG、 PNG等等,也可以嵌入EPS图片,每种图片都有对应的处理模块,例如 GIF图片由GIFIMP32.FLT 处理,EPS图片由EPSIMP32.FLT处理。在打开Office 文档时,会创建一个 FLTLDR.EXE的进程,加载各种图片的处理模块,当文档中嵌入EPS图片时,EPSIMP32.FLT会被加载进来,用于渲染 EPS 图片。

CVE-2017-0261是一个EPS的UAF漏洞, PostScript中,本地VM中的对象分配和对本地 VM中的现有对象的修改由称为save和restore的功能完成,它们可以用来封装位于本地VM中的PostScript 语言程序的相关代码。restore能够释放新建的对象,并撤消从相应的save操作后对现有对象的修改,回收从save 操作后所分配的内存。当与forall 运算符组合时,攻击者就可以实施类似Use-After-Free的漏洞攻击了,下图显示了利用save 和restore操作的伪代码:

通过操作save操作符之后的操作,攻击者能够操纵内存布局,并将UAF漏洞转换为读/ 写原语。攻击者创建了一个字符串,利用漏洞将它的长度设置为0x7fffffff ,基数为0。此时,攻击者拥有了读写任意用户内存的能力,EPS 图片中的PostScript脚本可以进一步搜索gadgets来构建 ROP链,使用 ROP链来修改存放shellcode的内存块为可执行。这样恶意的shellcode就能够在FLTLDR.EXE 进程中运行了。

CVE-2017-0262是一个EPS的类型混淆漏洞,由forall操作符引发的,它可以改变执行流程,允许攻击者控制栈上的值。攻击者继而利用了两个数组对象,实现了 EPSIMP32.FLT 的基址泄漏和任意地址读写:

然后进一步构造ROP链,通过ROP实现了shellcode 的执行。

这两个漏洞最终都实现了在FLTLDR.EXE进程中执行任意代码,但它是一个沙箱进程,权限很低,所以攻击者还需要利用内核提权漏洞来实现沙箱逃逸,获取到系统的最高控制权。

由于脚本语言的灵活性,微软的一些漏洞缓解机制如ASLR、DEP等相继被绕过,这使得微软在5 月份的office补丁中做出了很激进的修复措施,直接禁止了 EPSIMP32.FLT的加载,也就是说,office 不再支持EPS图片格式,一劳永逸地杜绝了所有的EPS漏洞。

(三).NET Framework 漏洞 CVE-2017-8759

CVE-2017-8759本质上是一个.Net Framework漏洞,影响所有主流的.NET Framework 版本。现在主流的windows 7、windows 10等操作系统中都默认安装了.NET Framework ,任何使用SOAP服务的软件都能通过.NET Framework触发,当然它也可以集成到 office 文档中,用户只要双击打开office文档,无需其他操作,即可触发该漏洞,实现任意代码执行。漏洞位于:

http://referencesource.microsoft.com/#System.Runtime.Remoting/metadata/wsdlparser.cs

中的PrintClientProxy函数中,该函数用于将解析wsdl文件后得到的信息格式化成.cs 代码,其中部分代码如下所示:

soap:address中的location指定了SOAP的 URL地址,在6142行、 6149行中,调用了WsdlParser.IsValidUrl() 函数来格式化location指定的URL地址,这个函数代码如下所示:

这个函数功能很简单,将解析得到的URL地址前面加上@”,末尾再加上” ,就返回了,例如,string value输入的 URL地址是http://guanjia.qq.com ,会被格式化成@”http://guanjia.qq.com” 返回给调用者。 6148行、 6149行、6150行三行代码会格式化成如下所示的代码:

// base.ConfigureProxy(this.GetType(),@””http://guanjia.qq.com

一个wsdl文件中可以指定多个location,从以上代码中可以看到,只有第一个location 才是有效的,从第二个开始,会加上注释符// ,整个URL地址会被当作注释内容输出到.cs代码中,然后会创建 csc.exe进程,由它编译生成一个名字类似于http*****.dll,这个 DLL会被加载到 office进程中,由于最终编译生成的.dll里面不会包含注释的URL地址,在正常情况下,这里不会有任何问题。但是 WsdlParser.IsValidUrl() 函数中没有考虑输入的string value会包含一个换行符的情况,例如,我们捕获的攻击样本中指定了如下所示的一个location :

WsdlParser.IsValidUrl()函数格式化后,会生成如下的代码:

我们可以看到注释符//只注释了base.ConfigureProxy(this.GetType(), @”;,由于换行符的存在,它不会注释掉接下来的 4行代码,这些代码会被编译到最后生成的 http*****.dll中,被office进程加载后执行。

在样本中,通过代码:

System.Diagnostics.Process.Start(_url.Split('?')[1],_url.Split('?')[2]);

创建了mshta.exe进程,通过“_url.Split(‘?’)[2]” 指定让mshta.exe从攻击者控制的远程服务器中拉取到一个 .db文件,里面嵌入了一段VBScript 脚本,会由mshta.exe解析执行,进一步从攻击者控制的远程服务器中拉取远控木马下载执行。

微软在9月份的补丁中修改了WsdlParser.IsValidUrl()函数,它循环遍历location 中指定的每一个字符,对于换行符这样的特殊符号,不会输出它,对于不是数字也不是字母的字符,打印成 \u****十六进制形式输出,例如,上述攻击者指定的有问题的location最终生成如下的代码:

这样就有效避免了最终生成的代码中出现换行符的情况,也确保了注释符//能注释掉location中指定的内容。

(四)类型混淆漏洞>CVE-2017-11826

CVE-2017-11826是一个类型混淆漏洞,Microsoft Word的OOXML解析器在处理 docx文档的word/document.xml 时,没有正确地验证标签对象是否闭合,造成类型混淆,通过精心构造标签和内存布局,最终可以造成任意代码执行。这个漏洞影响所有版本的word 。下图是我们捕获到的一个利用该漏洞的RTF样本:

该RTF首先会进行堆喷,做内存布局,然后释放一个带CVE-2017-11826漏洞的.docx 文档,触发漏洞后,借助word中一个没有启用 ASLR的msvbvm60.dll,构造 ROP链,把shellcode所在的内存区设为可执行,实现在word 中执行任意代码。

微软在10月份的补丁中修复了这个漏洞,在处理没有闭合的标签时做了额外的判断,不会出现之前的类型混淆问题。

第五节    漏洞防御

由于很多用户仍然在使用低版本的Office,同时很多用户并没有养成及时打补丁的习惯,腾讯电脑管家除了推送漏洞补丁之外,对于利用Office漏洞进行的攻击,也做了针对性的防御方案,供同行参考和指正:

1、绝大多数被黑客利用的Office漏洞,比如早些年的CVE-2012-0158、 CVE-2015-1641,以及2017 年的CVE-2017-11826,都属于内存破坏型的漏洞。这类漏洞无一例外都要用到未开启 ASLR的DLL来执行ROP ,突破 DEP 。针对这点,腾讯电脑管家对Office系列软件的进程做了特殊处理,每当进程加载一个DLL时,会判断该DLL 是否开启了 ASLR ,如果没有的话,会强制该DLL加载到另外一个随机的地址上去,这样硬编码的ROP 就会失效,从而有效防御这类漏洞; 2、对于EPS漏洞,比如早些年的CVE-2015-2545和 2017年的CVE-2017-0261 、CVE-2017-0262,虽然也属于内存破坏型的漏洞,但是由于能够执行 EPS脚本,灵活性非常大,精心构造的话有可能绕过ASLR+DEP。微软为了根治这个问题,已经在今年 4 月份的 Office补丁中禁用了EPS,管家针对一些没有安装EPS漏洞补丁的Office 也做了同样的处理,禁止了处理 EPS图片的EPSIMP32.FLT模块加载; 3、对于逻辑型漏洞,比如CVE-2017-0199、CVE-2017-8570、 .Net漏洞CVE-2017-8759 ,由于不涉及到二进制层面的漏洞利用,直接Bypass掉了微软以及安全软件对于漏洞利用的缓解和防御机制。针对这类漏洞,腾讯电脑管家加强了Office进程的主动防御逻辑,包括根据Office进程的关系链制定拦截规则,禁止 Office创建高风险进程等。

第六节    结语

在本研究报告撰写的同时,利用OfficeDDE(动态数据交换)特性的一种新型攻击手段已经在网络扩散。虽然该攻击需要用户交互,但由于安全意识的缺乏,仍然有不少用户中招。这无疑又给我们敲了一次警钟:无论过去,现在,还是将来,Office 漏洞攻击仍然会不断持续,也会不断出现新的攻击手段。作为安全从业者,我们一方面需要不断加强用户安全教育,提高用户安全意识,另一方面,也需要不断加强自身产品的安全能力。任重道远,与诸君共勉!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一节    引子
  • 第二节    Office漏洞补丁数据及分析
  • 第三节    Office漏洞攻击案例分析
    • (一)利用 Office 漏洞进行 APT 攻击
      • (二)利用 Office 漏洞传播僵尸网络
        • (三)利用Office漏洞传播勒索病毒
        • 第四节    漏洞原理分析
          • (一)逻辑漏洞CVE-2017-0199、CVE-2017-8570
            • (二) EPS 漏洞 CVE-2017-0261、CVE-2017-0262
              • (三).NET Framework 漏洞 CVE-2017-8759
                • (四)类型混淆漏洞>CVE-2017-11826
                • 第五节    漏洞防御
                • 第六节    结语
                相关产品与服务
                脆弱性检测服务
                脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档