Microsoft Office OLE2Link(CVE-2017-0199)漏洞利用技术分析与防护方案

2017年4月7日McAfee与FireEye的2名研究员爆出微软(Microsoft)Office Word的一个0-day漏洞(CVE-2017-0199)的相关细节。攻击者可以向受害人发送一个带有OLE2link对象附件的恶意邮件,诱骗用户打开。

当用户打开附件时,恶意代码会连接到攻击者恶意构造的网站,下载并执行恶意HTML应用文件(HTA),之后攻击者可以获得远程执行任意代码权限,执行更多的控制功能。

大致历史如下:

2016年9月9日,CVE发布了漏洞编号。

2017年1月25日,MD5为c10d……f10e的样本在网络中出现。

2017年3月4日,MD5为5ebf……9e01的样本在网络中出现。

2017年4月7日,细节公布。

2017年4月10日,MD5为7753……0c9f的样本在网络中出现。

2017年4月11日,微软发布更新补丁修复了此漏洞。微软官方公告地址如下:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0199

漏洞概述

此漏洞利用的是Office Ole对象链接技术。攻击者将恶意的链接对象嵌入正常的RTF文件中,当用户打开恶意文档时,Office程序会下载并执行包含恶意脚本的HTA文件。

漏洞利用攻击流程

  • 攻击者向用户发送自己精心构造的包含OLE2嵌入式链接对象的Office文档。
  • 用户打开恶意文档时,exe会访问文档中嵌入的恶意链接,下载对应的HTA文件。
  • 服务端返回给用户一个嵌入恶意脚本RTF文件。
  • exe通过com对象找到HTA文件的处理程序(mshta.exe)加载HTA文件并执行其中的恶意脚本。
  • 恶意脚本会下载并执行恶意程序。

防护方案

1、针对此漏洞,微软已经发布更新补丁。用户可以根据如下地址中的描述检查是否进行了对应的更新,如果没有,建议安装对应的补丁程序。
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0199

2、安装金山V8+等终端防护类软件。
3、网络防护规则。

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"Possible Office 0-day, RTF content with HTA header"; flow:established,from_server;
content:"Content-Type|3a 20|application/hta|0d 0a|"; http_header; file_data;content:"|7b 5c 72 74|"; within: 128; classtype:trojan-activity; sid:1; rev:1;)

 

4、 非必要的情况下将.hta文件类型的默认打开方式改为exe。

漏洞细节

利用此漏洞的样本有多个,在这里以MD5为c10d……f10e的样本为例进行分析。

通过file命令可以知道文件格式为RTF文档。

$ file f4a0.doc 
f4a0.doc: Rich Text Format data, version 1, unknown character set

使用脚本工具解析此文件,可以看到此文件中嵌入的其他对象。

将objdata使用字符形式展现如下:

可以确定此对象是一个OLE对象,其结构如下:

Control word Meaning
objautlink OLE autolink的对象类型
rsltpict 如果可能的话,将结果转换为Windows metafile类型或MacPict image类型。
objw 对象宽度,以twips为单位(假定对象有图像表示形式)
objh 对象高度,以twips为单位(假定对象有图像表示形式)
objclass 对象类名,是一个目的控制字
objdata 对象中包含的数据

从对象数据的16进制内容中可以搜索到Url Moniker ClSID和HTA File DownLoad Link的内容和偏移,如下图所示:

解析此对象中的数据如下:

Word在解析到这块数据时会访问对象中的链接。

6807DE56    891F        mov dword ptr ds:[edi],ebx
6807DE58    FF76 18       push dword ptr ds:[esi+0x18]
6807DE5B    FF15 B0169367     call dword ptr ds:[<&ole32.OleIsRunning>>; ole32.OleIsRunning
6807DE61    8945 10       mov dword ptr ss:[ebp+0x10],eax
6807DE64    85C0        test eax,eax
6807DE66    75 21        jnz short WWLIB.6807DE89
6807DE68    56         push esi
6807DE69    FF75 08       push dword ptr ss:[ebp+0x8]
6807DE6C    E8 8D31F7FF     call WWLIB.67FF0FFE
6807DE71    85C0        test eax,eax
6807DE73    75 0B        jnz short WWLIB.6807DE80
6807DE75    C707 01000000     mov dword ptr ds:[edi],0x1
6807DE7B    E9 ED000000     jmp WWLIB.6807DF6D
6807DE80    FF76 18       push dword ptr ds:[esi+0x18]
6807DE83    FF15 10179367     call dword ptr ds:[<&ole32.OleRun>] ; ole32.OleRun

75F83C49    50         push eax
75F83C4A    51         push ecx
75F83C4B    57         push edi             ; ole32.75F09B0C
75F83C4C    6A 00        push 0x0
75F83C4E    FF75 CC       push dword ptr ss:[ebp-0x34]
75F83C51    50         push eax
75F83C52    FF52 20       call dword ptr ds:[edx+0x20] ; urlmon.76475529
 
7645A1ED    68 50704576     push urlmon.76457050     ; UNICODE "_BSCB_Holder_"
76480E0D    E8 A758FDFF     call urlmon.RegisterBindStatusCallback 
 
7645A26D    E8 09010000     call urlmon.7645A37B ; URLDownloadToFile (urlmon)
 
7645A421    E8 13B5FEFF     call urlmon.ReleaseBindInfo

由于目标网址已经失效,通过构造本地环境获取了下图所示的数据包,其中Content-Type表示内容的类型,Content-Range表示只读取指定字节的文件内容。

下载完之后,URL Moniker通过识别Http头中的content-type字段,调用mshta.exe来加载执行下载下来的HTA文件,在mshta.exe匹配到其中的VB脚本后就会执行其脚本程序。通过查看template.doc中的内容可以看到进行了混淆的VB脚本。

脚本功能如下:

  • 启动exe杀掉winword.exe进程.
  • http://www.modani.com/media/wysiwyg/ww.vbs下载VBScript文件并保存到%appdata%\Microsoft\Windows\maintenance.vbs中。
  • http://www.modani.com/media/wysiwyg/questions.doc下载诱惑性文件保存在%temp%\document.doc中。
  • 清理15.0和16.0版本word对应的Resiliency子键和键值。以便word程序可以重新正常启动。
  • 执行脚本%appdata%\Microsoft\Windows\maintenance.vbs。
  • 打开%temp%\document.doc,隐藏攻击者的恶意行为。

攻击定位

IP 地理位置 文件MD5
95.114.38.110 德国 c10d……f10e
47.91.77.141 美国 7753……0C9F
46.102.152.129 罗马尼亚 5ebf……9e01
47.91.76.119 美国 CD60……C208
52.21.203.144 美国 template.doc

绿盟科技针对此漏洞的攻击事件会持续关注!

总结

微软提供的COM/OLE技术犹如一把双刃剑,在为开发人员提供方便的同时,也为攻击者进行恶意攻击提供了机会。此次漏洞便是一个很好的说明。攻击者巧妙的利用了OLE link object、URL Moniker和Windows在执行HTA文件时会匹配搜索数据流的特性,构造了包含恶意链接的RTF文档,绕过大多数的防御措施,实现自己的恶意行为。

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

Spread the word. Share this post!

Meet The Author

Leave Comment