CVE-2017-12824及利用样本分析(一)

简介: 笔者于书写此文之前从未接触过InPage,该文权当笔者于学习过程中的文章学习笔记,其中如有不当或错误之处,望读者不吝赐教,笔者感激不尽。


1.本文作者系复眼小组的ERFZE,未经允许禁止转载2.全文一共1800多字,图片38张,预计阅读时间8分钟3.笔者于书写此文之前从未接触过InPage,该文权当笔者于学习过程中的一篇学习笔记,其中如有不当或错误之处,望读者不吝赐教,笔者感激不尽!

0x00前言

笔者于书写此文之前从未接触过InPage,该文权当笔者于学习过程中的文章学习笔记,其中如有不当或错误之处,望读者不吝赐教,笔者感激不尽。

0x01页内

该介绍引自维基百科

InPage是一种文字处理程序和页面布局软件,最初在1994年开发,适用于Windows和Mac平台下的乌尔都语,Balochi,波斯语,普什图语和阿拉伯语等语言。

笔者复现及分析环境基于InPage 2010:

0x02进攻分析

0x02.1进攻描述

该突破本质是越界读(Out-Of-Bound Read)InPage在处理文档中的InPage100流时未对需要处理的数据类型(类型)进行有效检查,而该范围可以由攻击者设置一个超出Type范围的值导致InPage在处理Type前后造成越界读。

0x02.2静态分析

由于笔者重新找到可以调试使用的POC,故直接使用Bitter组织某样作为调试对象。

进攻触发位置位于sub_453590

sub_453700传递给sub_453590的参数是读取到的Type值:

调试之后发现该变量0x7E72,那么右移8位之后即为0x7E。然后看看dword_656A28[0x7E]的赋值(位于sub_4560A0内):


result = sub_4536A0(0x7Eu, (int)&unk_656E60);

sub_4536A0功能如下:

进一步查看unk_656E60

可以看到纹理unk_656E60大小为0x1B,而4*0x72明显超过其大小,因此造成越界读。

0x02.3动态调试

笔者调试时采用附加到进展Inpage.exe之后打开样本文件的方法来调试。设置断点如下:

成功断下:

之后其越界调用0x00455AFA处指令:

0x00455AFA处指令恰好将控制流交到由攻击者构造的数据上:

0x03 Bitter组织某利用样本分析

0x03.1 样本一

样本名称:Court_Notice.inp MD5:303F01E8CE9488CA7C1B265A8768CCE0

该样本的漏洞利用部分已由上节给出,下面直接分析其Shellcode。通过连续两个0x416E3453(字符串"An4S")标志进行定位其Shellcode起始位置:

跳转到Shellcode之后,先获取PE文件(DLL文件Backdoor)起始位置:

获取使用到的函数调用地址:

创建一名为QPONMLKJIH的互斥对象,并调用GetLastError检查是否已存在该名称的互斥对象(0xB7,ERROR_ALREADY_EXISTS):

DLL文件申请SizeofImage大小的内存空间:

若申请失败,则修改第一个参数为NULL,重新申请。

其后将DLL文件加载到内存中并手动完成PE装载器的工作。首先是复制DLL文件头部:

复制.text区块内容到内存:

之后依次是.rdatarsrc.reloc区块,不再一一截图。

接下来对DLL文件进行重定位。检查基址重定位表大小是否为0:

检查IMAGE_BASE_RELOCATION结构大小是否为0:

根据重定位项数组中的重定位数据进行重定位:

修复输入表:

依次更改.text.rdatarsrc区块所在内存区域的保护属性:

调用DLL文件中一函数过程:

其功能为创建一新线程:

由此该DLL文件得以执行。

0x03.2 样本二

样本名称:Press_Note.inp

MD5:5DD080B9AD4BC5C58C0CED31829CCADA

该样本与上一样本的利用方法相同,不再占用篇幅。


相关文章
|
Python
简易评分系统
如果用户名及口令不合法,用户名或口令最多可输入3次,验证错误超过3次以后,自动退出系统。
130 0
|
机器学习/深度学习 算法 数据挖掘
Sentieon | 应用教程: 使用DNAscope对HiFi长读长数据进行胚系变异检测分析
Sentieon | 应用教程: 使用DNAscope对HiFi长读长数据进行胚系变异检测分析
119 0
|
存储 数据安全/隐私保护
CVE-2017-8291及利用样本分析(二)
CVE-2017-8291及利用样本分析
|
存储 安全 JavaScript
CVE-2017-12824及利用样本分析(二)
笔者于书写此文之前从未接触过InPage,该文权当笔者于学习过程中的文章学习笔记,其中如有不当或错误之处,望读者不吝赐教,笔者感激不尽。
|
存储 安全 虚拟化
CVE-2017-0261及利用样本分析
CVE-2017-0261及利用样本分析
|
存储 NoSQL 安全
CVE-2017-8291及利用样本分析
CVE-2017-8291及利用样本分析
|
安全 Windows
CVE-2018-0798及利用样本分析
•成因:EQNEDT32.exe在解析Matrix record时,并未检查长度,从而造成栈溢出。无论打不打CVE-2017-11882补丁都可以成功触发,使得攻击者可以通过刻意构造的数据内容及长度覆盖栈上的函数返回地址,从而劫持程序流程。
|
存储 安全 JavaScript
CVE-2017-11882及利用样本分析
Windows的公式编辑器EQNEDT32.EXE读入包含MathType的OLE数据,在拷贝公式字体名称时没有对名称长度进行校验,使得攻击者可以通过刻意构造的数据内容覆盖栈上的函数返回地址,从而劫持程序流程。
|
机器学习/深度学习 数据采集 运维
基于支持向量机的网络⼊侵检测系统的全面调查和分类
基于支持向量机的网络⼊侵检测系统的全面调查和分类
|
SQL 安全 JavaScript
常见漏洞分类
常见漏洞分类
339 0
常见漏洞分类