CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
\x01 前言
- 2018 年 1 月 9 日,Office 公式编辑器再曝出新漏洞,编号为 CVE-2018-0798。提起公式编辑器大家都不陌生,之前的 CVE-2017-11882 和 CVE-2018-0802 这对姊妹漏洞都出自这里,当然了这个只是公开的漏洞,还有一些是没有公开的。可能是由于公式编辑器漏洞有点多,所以这次 Windows 干脆直接通过删掉公式编辑器的方式来修复漏洞,一了百了。但漏洞补丁刚发布一周,就已开始出现多例 CVE-2018-0798 漏洞的变种和在野利用,据说中国的一些组织也包括其中。漏洞原理比较简单,是由于多次循环复制导致的栈溢出,幸运的是循环的次数和复制的数据都可以进行精确的控制,从而给漏洞利用带来了便利。
\x02 分析环境
- 虚拟机:VMware 15 Pro + Windows7 SP1
- 反汇编调试工具:x64dbg
- 其他工具:C32Asm
- 漏洞软件:Office 2016
- POC:CVE-2018-0798_poc.rtf(提取码:d6rp)
\x03 调试分析
- 在调试之前先将系统的 ASLR 给关闭,并且更改注册表用来将调试器附加到公式编辑器上,为的是方便调试。
- 由于在调试漏洞前并没有找到该漏洞的 POC,所以需要手动的构造数据并且完成分析。幸运的是从阅读国外的几篇分析文档中捕获到了两个重要的信息,第一个是漏洞触发的函数为 sub_443F6C,且存在复制操作的指令为 mov [ecx],al。
- 第二个是出问题的数据结构来自公式编辑器的 Matrix,查询一下发现有如下定义,从后面的分析中可以看出这个数据结构是专门用来处理公式编辑器中的矩阵公式的。
- 新建 RTF 文件,插入一个带有矩阵公式的公式编辑器对象(OLE),之后在 sub_443F6C 函数的首地址下断点,看看处理 Matrix 数据时是否走 sub_443F6C 函数这个流程。
- 重新运行之后断在了 sub_443F6C 函数上,通过分析堆栈调用,发现其父函数为 sub_443E34,对这两个函数下记录断点,看看该函数与解析矩阵数据是否有关联。从下图中可以看出当只有一个矩阵公式时 sub_443E34 执行了一次。
- 之后再添加一个矩阵。
- 通过对比可以发现,每处理一个矩阵都会调用到 sub_443E34 进行解析。
- 对其中一次调用 sub_443E34 函数调试看看:首先这个函数会调用 sub_43B349 函数对矩阵进行基本的判断,判断里面的数据是否符合要求。
- 其次会调用一系列 sub_416352 函数去获取对象中的数据,这里特指 Matrix 数据。通过对取出的数据分析后发现 0x443E8F 地址调用的 sub_416352 函数会从样本中取出 Matrix 偏移地址 +B 的数据用来控制循环读取数据的次数。
- 这里的对象其实就是公式编辑器对象,这属于微软 OLE 框架下的数据传递技术,我们知道公式编辑器是独立于 Office 存在的,是一个完整的 .exe 或者 .dll 程序,也就是说 Office 如果想调用公式编辑器必须通过创建新进程的方式调用,而且进程之间的数据传递是基于 LRPC 的 OLE 接口技术,这里是通过 GlobalLock 函数间接处理的。
- 接着进入 sub_443F6C 函数。
- 在该函数中首先会将之前取出的循环次数放入 eax 中,之后进行 (eax + 9) >> 3 的运算,运算完成之后再一次调用 sub_416352 函数去获取需要复制到栈上的数据(Matrix 数据偏移 +D),之后通过 mov [ecx],al 指令将获取到的数据复制到栈中,复制大小为一个字节,完成之后判断循环次数是否为 0,为 0 则跳出循环。
- 由此分析得出流程图:
- 根据分析的结果对 Matrix 偏移 +B 的地方填充循环次数 FF,对偏移 +D 的地方填充复制的数据。
- 重新运行后首先会获取到循环次数为 0xFF。
- 进入 sub_443F6C 函数之后获取到复制的数据为 0xAA。 - 到达此处后继续循环。
- 至此栈上的返回地址已经被 Matrix 的数据给覆盖了,实现了跳转到任意地址的目的。
关于 CVE-2018-0798 漏洞分析到此结束,如有错误,欢迎指正。
CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析相关推荐
- CVE-2012-0003:Microsoft Windows Media Player winmm.dll MIDI 文件堆溢出漏洞调试分析
0x01 蜘蛛漏洞攻击包 前言:2012 年 2月,地下黑产中流行着一款国产名为蜘蛛漏洞的攻击包 -- "Zhi-Zhu Exploit Pack",该工具包含 5 个漏洞,都是在 ...
- 黑客组织从2018年底开始利用CVE-2018-0798公式编辑器漏洞
Anomali研究人员在追踪Royal Road RTF文档武器化过程中发现多个攻击组织利用CVE-2017-11882和CVE-2018-0802漏洞. Anomali研究人员在追踪Royal Ro ...
- 使用Pageoffice打开Office word报错0x80040154问题或者卸除WPS后Microsoft Office图标无法显示问题
使用pageoffice打开word时候,报错如下图: 或者本地Microsoft Office图标无法显示,如下图: 原因分析:因为安装WPS时关联了.doc.xls.ppt等文件的图标,卸载WPS ...
- 在Microsoft Office、Visio、WPS中用LaTeX的方式编辑公式
用LaTeX的方式在Word中编辑公式,简直爽到爆! 1.安装CTeX和Aurora 这两个软件在我的百度网盘下载,如果万一哪天失效了请留言联系我: 链接:https://pan.baidu.com/ ...
- Microsoft Office Word 2010-2016中公式不能自动斜体的解决方法
转自该博客: https://www.cnblogs.com/1024th/p/10990607.html 并补充修改原文没有的 Microsoft Office遇到自定义宏要求数字签名的问题. 归纳 ...
- Microsoft Office Word 中的公式自动编号
先插入公式,#,插入题注(交叉引用),生成了标号.此时整个公式是题注样式.在公式和标号之间插入一个样式分隔符. ____________________________________________ ...
- Microsoft Office如何打开Visual Basic编辑器(macOS)
目录 写在前面 科普 如何开启Visual Basic编辑器 写在前面 一些专业人士在Microsoft Office套件中有时需要用到Visual Basic编辑器,但又不知道如何打开.本文就向大家 ...
- 用公式编辑器将数学公式转为LaTeX代码
在用LaTeX排版科技论文时,当遭遇大量复杂数学物理公式时,即使是能够熟练使用LaTeX的老手,也难免要花费大量时间来编写代码. 事实上,许多公式编辑器和网站已经支持将用户通过界面输入的公式转换为La ...
- MathType中文版公式编辑器操作激活教程
相信很多圈友都和小编一样,在写论文和专利申报材料的时候都有一个共同的噩梦,那就是公式插入编辑. 每次最难的就是在Word文档中插入那些展示我们科研过程的公式.这也正是我们科研党和学生党在日常工作中会常 ...
- 强大的公式编辑器 —— MathType最新版本安装与使用
强大的公式编辑器 -- MathType最新版本安装与使用 由于使用了很长时间的机械硬盘出现坏道,安装在其中的MathType6.9(精简版)也没办法使用了,本来想安装个高版本的MathType,比如 ...
最新文章
- Linux驱动技术(一) _内存申请
- NAR:psRobot-植物小RNA分析系统
- 《智能路由器开发指南》——1.1 OpenWrt简介
- python程序如何做界面_python是如何写界面程序的?
- 如何用计算机声卡,声卡是什么,详细教您怎么查看自己电脑的声卡
- 一维数组中的一些问题
- Struts 动态FORM实现过程
- iframe显示错误页面
- 爱奇艺怎么开启数据流量自动播放
- 【java】自动写入数据到文件夹中
- adadelta算法_优化算法:AdaGrad | RMSProp | AdaDelta | Adam
- 【信息系统项目管理师】第十五六章 配置管理和标准化
- 保存 Hexo 博客源码到 GitHub
- Multisim高频电子线路4.7振荡器仿真
- Icode编程>>>Python编程>>>1级训练场>>>基础训练【1】
- 浙江杭州1040阳光工程叫家里人来投资违不违法?能不能赚到钱?
- 两个div右侧固定,左侧自适应屏幕
- 群晖NAS搭建web服务器,并发布公网可访问 2/4
- 前端图片在线转换Base64 图片编码Base64
- EXCEL多列vlookup匹配