漏洞挖掘前言

OFFICE OLE2LINKCVE-2017-0199

TFD  XJL                 2018 年 12 月 20 日 星期四

目录

OFFICE OLE2LINK(CVE-2017-0199)

第一部分 OFFICE漏洞简介

1.1 微软office漏洞背景

1.2 OFFICE OLE2LINK漏洞简介

第二部分 OFFICE OLE2LINK漏洞分析

2.1 漏洞原理简单分析

2.2 漏洞攻击原理简单图解

2.3 相关知识介绍

第三部分 攻击代码分析

3.1 ms.rtf

3.2 配置文件

第四部分 利用复现过程

第五部分 攻击总结

参考资料


第一部分 OFFICE漏洞简介

1.1 微软office漏洞背景

微软Office系统软件(Word/Excel/PowerPoint等),一直是电脑上最为常用的办公软件之一,在国内外都拥有大量的用户。另一方面,利用Office系列软件的漏洞进行网络攻击已经成为黑客惯用的手段,广泛运用于APT攻击,抓肉鸡,传播勒索病毒等。其中一种典型的攻击方式是“鱼叉攻击”:黑客将包含漏洞的文档伪装成为一个正常的Office文档,并精心构造文件名,然后投递到用户邮箱,如果用户不小心打开文档,恶意代码便会悄悄执行,用户完全没有感知。

另外,随着新版本的Office不断发布,微软逐渐停止了对于老版本Office的技术支持,包括提供安全更新。2017 年10月,微软就正式停止了对 Office 2007的技术支持。这本是软件生命周期中不可避免的事情,但对于使用Office 软件的用户来说,除非升级到更新的版本,否则将面临被黑客攻击的风险。然而,事实上目前仍有大量的用户选择不升级,而是继续使用老版本的Office软件。

1.2 OFFICE OLE2LINK漏洞简介

CVE编号:CVE-2017-0199  危害等级:超危

发布时间: 2017-04-13   威胁类型:远程

Microsoft Office是美国微软(Microsoft)公司开发的一款办公软件套件产品。常用组件有Word、Excel、Access、Powerpoint、FrontPage等。

多款Microsoft产品中存在远程代码执行漏洞。远程攻击者可借助特制的文本文件利用该漏洞执行任意代码。以下产品和版本受到影响:

Microsoft Office 2007 SP3;   Microsoft Office 2010 SP2;

Microsoft Office 2013 SP1;   Microsoft Office 2016;

Microsoft Windows Vista SP2; Windows Server 2008 SP2;

Windows 7 SP1;               Windows 8.1。

图1-漏洞修复统计图(数据时间截止2017年10月)

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

第二部分 OFFICE OLE2LINK漏洞分析

2.1 漏洞原理简单分析

该漏洞利用OFFICE OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,OFFICE调用URL Moniker(COM对象)将恶意链接指向的HTA文件下载到本地, 当用户打开包含嵌入式漏洞的文档时,winword.exe 会向远程服务器发出 HTTP 请求,以检索恶意 HTA 文件,服务器返回的文件时一个带有嵌入式恶意脚本的假 RTF 文件,winword.exe 通过 COM 对象查找 application/hta 的文件处理程序,这会导致 Microsoft HTA 应用程序(mshta.exe),加载恶意攻击者下载并执行包含 PowerShell 命令的 Visual Basic 脚本。

2.2漏洞攻击原理简单图解

图2-漏洞攻击原理简图

2.3 相关知识介绍

HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别。一般情况下,hta可以用vbscript与jscript编写,vbs功能更强大。 hta可以操作数据库,界面用html+css就可以实现,很方便写一些简单的应用。

OLE(Object Linking and Embedding,对象连接与嵌入)。是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM)。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(Component Object Model),简称COM。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。

第三部分 攻击代码分析

3.1 ms.rtf

new ActiveXObject("wscript.shell")  启动创建对象的应用程序。一旦对象被创建,就可以用定义的对象变量在代码中引用它。

a.Run("%SystemRoot%\\system32\\calc.exe") 运行计算器。%systemroot%是系统中的一个变量,表示的是windows系统启动文件夹位置。System32是系统文件夹下的一个子文件夹,而计算器的应用正是在此文件夹下。

3.2 配置文件

对于rtf文件,服务器的Content-type会返回application/rtf

对于rtf文件,服务器的Content-type会返回application/hta,所以word将返回对象以hta脚本的方式执行

此处关键点在于添加objupdate标签,这个标签的作用是可以自动更新对象,因此加了这一处后就无需用户交互即可执行恶意代码。

第四部分 利用复现过程

Step1:在网站根目录下构造ms.rtf文档

在网站根目录下新建一个 rtf 文件, 内容任意,如(Dong&Li test)保存命名 ms.rtf。

打开Apache,用浏览器访问网站根目录,可以看见根目录下的文件(如图)

Step2构建发送给受害者的恶意文档exp.rtf

接着新建一个 word 文档,插入 => 对象 => 由文件创建 => 链接到文件 =>ms.rtf 的地址,然后将 word 另存为rtf格式,文件名为 exp.rtf。

在我们的实验中ms.rtf的地址为本机IP+文件名(如:http://192.168.80.1/ms.rtf)。

对象插入成功后,文档内容如下

此时如果我们双击“Dong&Li test”,会正常弹出文档ms.rtf内容。

Step3:改写ms.rtf

此时将网站根目录下的 ms.rtf 用记事本打开,在文档添加如下代码:

Step4修改配置文件

此时在apache配置文件conf/mime.types中把

修改成

Step5:删除浏览器缓存

打开ie浏览器,删除浏览器缓存

Step6:验证攻击

重启服务器。打开 exp.rtf, 双击内容,即可弹出计算器

Step7:修改文档,实现自动攻击

这样的poc还是需要用户双击对象进行交互的,我们可以进一步做成自动弹出计算器。这里我们先使用记事本把exp.rtf打开。

将 \ object\objautlink\rsltpict 修改为 \ object\objautlink\objupdate\rsltpict

Step8:验证自动攻击

保存修改后,此时若再打开exp.rtf,就会直接弹出计算机,不需要用户手动点击。

第五部分 攻击总结

漏洞CVE-2017-0199允许攻击者远程执行恶意VBScript脚本。这是一个逻辑漏洞,而且目前大多数安全缓解方案都无法处理针对这种漏洞的攻击活动。当恶意脚本运行之后,它会下载并执行恶意Payload,并向用户显示一个钓鱼文档。我们所检测到的两个恶意文档都会执行相应的恶意Payload,其中一个包含LATENTBOT,而另一个则包含WingBird/FinFisher。虽然恶意文档中仅包含一个指向攻击者服务器的链接地址,但MVX引擎仍然成功检测到了这种多阶段的攻击活动,不过微软公司已经发布了相应的更新补丁,所以尽快对自己的Office软件进行升级是十分必要的。

该漏洞利用OFFICE OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,OFFICE调用URL Moniker(COM对象)将恶意链接指向的HTA文件下载到本地, URL Moniker通过识别响应头中content-type的字段信息最后调用mshta.exe将下载到的HTA文件执行起来。

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

参考资料

http://www.zerokeeper.com/penetration/cve20170199-office-rtf-replication-process.html

CVE-2017-0199漏洞复现与研究_空旷在远方的博客-CSDN博客_cve-2017-0199

访问的文章审核中... - FreeBuf网络安全行业门户

访问的文章审核中... - FreeBuf网络安全行业门户

访问的文章审核中... - FreeBuf网络安全行业门户

Tuuu Nya's blog | 一个想当黑客的艺术家 ✨

CVE-2017-0199漏洞分析相关推荐

  1. linux内核安全数据,【漏洞分析】Linux内核XFRM权限提升漏洞分析预警(CVE–2017–16939)...

    0x00 背景介绍 2017年11月24日, OSS社区披露了一个由独立安全研究员Mohamed Ghannam发现的一处存在于Linux 内核Netlink socket子系统(XFRM)的漏洞,漏 ...

  2. 2022CTF培训(十一)IOT 相关 CVE 漏洞分析

    附件下载链接 D-Link DIR-823G 固件全系统仿真 2022CTF培训(十)IOT 相关 CVE 漏洞分析 是采用 qemu-user 对个别程序进行仿真,而对于完整的仿真需要使用 qemu ...

  3. 国产软件CVE漏洞分析系列:泛微OA系统 漏洞编号:SSV-91661

    今天开始扒拉一下各种国产软件已经公布的漏洞,有些公司自己把漏洞保密起来,其实真是傻啦吧唧的,以为不让大家知道,漏洞就不存在吗!没办法,可能也是为了上市公司的股价吧.普通人对于漏洞的理解还是有点狼来了的 ...

  4. RiskSense Spotlight:全球知名开源软件漏洞分析报告

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 RiskSense 公司最近发布了关于全球当前知名开源软件 (OSS) 的漏洞分析报告.奇安信代码卫士团队编译如下.   摘要 开源软 ...

  5. Android Parcelable反序列化漏洞分析与利用

    文章目录 前言 背景知识 Parcelable序列化 Bundle的数据结构 LaunchAnyWhere CVE-2017-13288 漏洞利用原理解析 POC程序攻击演示 CVE-2017-133 ...

  6. OWASP TOP10漏洞分析和防御

    目录 2013VS2017 应用程序安全风险 注入 介绍 形成原因 利用场景 防御 失效的身份认证 介绍 形成原因 利用场景 防御 敏感数据泄露 介绍 形成原因 利用场景 防御 XML外部实体(XXE ...

  7. 公开仓库中Docker镜像的漏洞分析结果发布

    Federacy的一名研究人员发布了一项报告,该报告分析了公开仓库中Docker镜像的漏洞.24%的镜像发现了明显的漏洞,其中基于Ubuntu的镜像漏洞最多,而基于Debian的镜像漏洞最少. \\ ...

  8. cve-2019-11076 Cribl UI 1.5.0 未授权命令执行漏洞分析

    Cribl是一款日志分析工具.Cribl UI是其中的一个用户界面. Cribl UI 1.5.0版本中存在安全漏洞.远程攻击者可借助未认证的Web请求利用该漏洞运行任意命令. 前言 前几天瞎逛 Gi ...

  9. cve-2019-1821 思科 Cisco Prime 企业局域网管理器 远程代码执行 漏洞分析

    前言 不是所有目录遍历漏洞危害都相同,取决于遍历的用法以及用户交互程度.正如你将看到,本文的这个漏洞类在代码中非常难发现,但可以造成巨大的影响. 这个漏洞存在于思科Prime Infrastructu ...

  10. linux “大脏牛”漏洞分析(CVE-2017-1000405)

    一.背景简介 脏牛漏洞(CVE-2016–5195)是公开后影响范围最广和最深的漏洞之一,这十年来的每一个Linux版本,包括Android.桌面版和服务器版都受到其影响.恶意攻击者通过该漏洞可以轻易 ...

最新文章

  1. [转]收录全部作品,《寂静岭套装》发售开始
  2. 这台计算机似乎没有安装操作系统_前沿科技 | 浙江大学科学家联合之江实验室成功研制全球神经元规模最大的类脑计算机...
  3. scrum in agile development
  4. 一个将当前目录下HEX文件的第一行数据删除的程序...
  5. SAP Cloud for Customer Lead OData服务的ETAG字段
  6. 对于一个IE8兼容性问题的反思
  7. python利用jieba(textRank、TFIDF)提取关键字
  8. 金字火腿推出“人造牛排” 股价连日上涨接近历史高点
  9. 【Kafka】kafka SSL close message 远程主机被迫关闭了一个连接
  10. android中的资源文件
  11. 多线程 之 生产者与消费者
  12. 一、坐标系之WGS84坐标系与WGS84 Web Mercator
  13. .NET 6 运行在Win7 SP1上出错
  14. 20145322何志威《网络对抗技术》Exp6 信息搜集技术
  15. 阿里云部署数据库(遇到的问题及解决方案)
  16. c语言coin函数库,Coin Test | C/C++程序员之家
  17. 将系统必备组件打包进安装文件(以vs15打包.net formwork 4.5为例)有点鸡肋
  18. 今日金融词汇--- 技术面分析
  19. 同样诞生于顶尖大学,一个市值千亿,一个曾经仅次腾讯百度,如今却。。。...
  20. 寒食 —— [当代] 光剑

热门文章

  1. 线性表学习归纳总结一
  2. 通过Java监听MySQL数据的变化
  3. 无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装
  4. win7资源管理器总是崩溃
  5. android sdcard 不存在,安卓手机真机运行时找不到sdcard?
  6. Format oracle 用法,oracle sqlplus中column格式化命令之heading用法
  7. 如何搭建自己的私有云盘
  8. 猎头如何做大单,赚大钱?
  9. 互联网思维的“独孤九剑”
  10. 用html5画瀑布图,一起制作瀑布图