CVE-2017-11882分析


参考文档

https://github.com/houjingyi233/office-exploit-case-study/tree/master/CVE-2017-11882%26CVE-2018-0802%26CVE-2018-0798
https://www.anquanke.com/post/id/94841#h2-6
https://www.anquanke.com/post/id/87311
https://www.anquanke.com/post/id/87284
https://github.com/embedi/CVE-2017-11882

分析文件版本

win7 x86+office2007
eqnedt32.exe(这个软件是office2007自带的)

文件

不是作为一个libc库而是一个单独的软件调试起来也比较方便

漏洞分析

漏洞

上图标注的strcpy就是漏洞函数,动态调试一下可以看到呗拷贝的是一个字符串”TIMES NEW ROMAN “

od分析

查了一下这是一种字体

https://github.com/embedi/CVE-2017-11882上下载了样本
(这东西已经是poc了,到这里项目的内容实际已经结束,为了学习分析方法,这里继续分析)

样本分析

下载样本进行测试(会被杀软无情删掉,我这边杀软一声不吭就删了),测试样本

加载要调试的文件

要调试的文件是正常运行的时候加载了一个exe,要调试那个exe。
如果是动态链接库,od提供了方案:alt+e可以找到加载的动态库(注:alt+c可以回到反汇编窗口,alt+b可以查看断点,alt+m可以查看加载不同段的加载地址对于开启pie的程序可以通过ida看到的地址找到对应地址),在动态库入口下断点即可。

但是exe需要修改windows注册表

打开注册表编辑器(regedit)

注册表

图中标了要修改值的路径,新加了一项EQNEDT32.EXE,加入了对应的值,上面的路径是调试器的路径(实际上包含中文路径应该也行,害怕中文路径不行改了个名字)

添加完这一项之后运行EQNEDT32.EXE这个程序就会弹出od调试界面

双击测试样本,在弹出的od界面中下断点(地址从ida里面找到,ctl+g能让光标跳转到某个地址,f2可以下断点)

在第二次运行到拷贝的时候(右击edi寄存器的值,数据窗口中跟随,可以在数据窗口中看到填充的值,应该是shellcode和返回地址)

数据窗口看到的内容

在程序返回时返回到了WinExec函数

返回
返回到了这里

添加

有时候不知道断点应该下到哪里。

可以猜要完成某个功能需要使用什么api,可以使用api断点(当程序调用对应api的时候会断下来)(api就是操作系统给用户提供的接口,是一个个函数实现不同的功能)

设置api断点

可以在对应的函数处下断点(一般是CreateProcess创建进程)

进程函数

  • 很多函数有A和W版本,A表示Ascii,W表示宽字节
  • CreateProcess,CreateThread是创建进程线程
  • CreateRemoteThread是创建远程线程,是在本进程里创建一个其他进程的线程(一般实现一些动态链接库注入,API钩取之类的操作)

下完断点之后继续运行(f9)程序会暂停在断点处如图

暂停

注意上面的地址,这不是用户的地址空间,可以用快捷键Alt+f9运行到用户地址空间(需要程序能运行到返回)

从编写poc角度分析漏洞

待补充


评论
 上一篇
qemu-system启动命令 qemu-system启动命令
背景在调试iot系统的时候只运行一个服务软件会运行失败,这是需要用到系统模式,运行起来一个系统,这样程序运行的环境更充足,成功的概率也更大。 之前调试mips架构程序,用这个可以满足,现在改成arm的,启动的时候仅仅换磁盘镜像,内核这些东西
2020-12-08
下一篇 
windows漏洞复现环境搭建 windows漏洞复现环境搭建
进程查看工具process hacker 可以在看雪上下载 https://tool.pediy.com/index-detail-106.htm 动态调试工具ollydbg 吾爱破解的一个比较强大的工具(9年前的版本现在依然好用) 试了一
2020-12-07
  目录