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