12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
三国霸业 战车-珍宝-觉醒-攻城掠地SF-全新玩法 免费玩新区 攻城掠地私服 进入游戏
手游私服盒子 各类免费游戏 0.1折送海量资源 各类手游私服 进入游戏
皇家MU2 《奇迹 2:传奇》韩国网禅公司《奇迹》正统续作。 3D锁视角Mmrpg 暗黑3+传奇+流放之路+奇迹 进入游戏
查看: 312|回复: 0

CVE-2017-12824及利用样本分析

[复制链接]

59

主题

59

帖子

128

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
128
发表于 2020-9-17 09:37:43 | 显示全部楼层 |阅读模式
0x00 前言

笔者于誊写此文之前从未打仗过InPage,该文权当笔者于学习过程中的一篇学习笔记,此中如有不妥或错误之处,望读者不吝见教,笔者感激不尽。
0x01 InPage

该介绍引自维基百科
InPage是一款文字处理步调和页面布局软件,最初在1994年开发,适用于Windows和Mac平台下的乌尔都语,Balochi,波斯语,Pashto和阿拉伯语等语言。屏幕所见即所得。
笔者复现及分析环境基于InPage 2010:

0x02 漏洞分析

0x02.1 漏洞描述

该漏洞本质是越界读(Out-Of-Bound Read),InPage在处理文档中的InPage100流时未对需要处理的数据范例(Type)进行有效性检查,而该字段可以由攻击者设置一个超出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区块内容到内存:

之后依次是.rdata、rsrc、.reloc区块,不再逐一截图。
接下来对DLL文件进行重定位。检查基址重定位表大小是否为0:

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

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

修复输入表:

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

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

其功能为创建一新线程:

由此该DLL文件得以执行。
0x03.2 样本二

样本名称:Press_Note.inp
MD5:5DD080B9AD4BC5C58C0CED31829CCADA
该样本与上一样本的利用方法相同,不再占用篇幅。
0x04 Donot构造某利用样本分析

样本名称:EOI-Application_Form.inp
MD5:D9279F628C9F19420F14EDF3CFC3123F
调试方法同上一样本,不再赘述。与上一样本相似,通过连续两个0x35363839(字符串"5689")定位Shellcode:

解密将要执行指令:

第二次解密:

获取GetModuleHandleA调用地址:

第三次解密:

通过硬编码的方式来给GetProcAddress()通报参数:

之后分别获取ole32.CoInitialize、msvcrt.fclose、kernel32.ExitProcess、kernel32.GetEnvironmentVariableW、msvcrt.strlen、msvcrt.fwrite、msvcrt.memset、ole32.CoCreateInstance、msvcrt.fopen、msvcrt.strcat、kernel32.GetEnvironmentVariableA、msvcrt.malloc函数的调用地址。
清空内存内容,用于后续存储字符串:

拼接字符串:



向C:\Windows\Tasks\tss.js这一JS文件中写入内容:

该脚本功能为执行同目录下的staEnd.dll。
之后通过于启动目录创建快捷方式实现长期化:

该快捷方式指向JS文件:

生存到文件:

向staEnd.dll文件中写入内容:

向file.inp文件中写入内容:

写入完成之后关闭文件,并调用ExitProcess()退出。
0x05 Confucius(孔夫子)构造某利用样本分析

样本名称:Visit of Azerbaijan delegation to pakistan (2).inp
MD5:633640453DE64EB79891B7433242A0A1

该样本与0x03.1中样本利用方法相同,不再赘述。
0x06 参考


  • Wikipedia
  • 蔓灵花(BITTER)APT构造使用InPage软件漏洞针对巴基斯坦的攻击及团伙关联分析
  • ATT&CK 之后门长期化

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-11-25 02:45 , Processed in 0.078125 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表