微软公式编辑器(EQNEDT32)漏洞样本分析

CVE-2018-0798漏洞分析

公式编辑器存在多个漏洞CVE-2017-11882和CVE-2018-0802

 

该样本利用的漏洞为CVE-2018-0798

 

出现漏洞的函数为sub_443F6C(无随机基址),该函数内部并没有对参数 v12 的长度做限制

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

从而导致栈溢出

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

在OD里面比较直观,我们可以看到,在长度不限的情况下,我们是可以覆盖到上层函数的返回地址,这样我们便可以劫持到EIP,执行我们的shellcode

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

然而该样本并没有直接劫持EIP跳转到shellcode,而是用了下述的方法(该组织的shellcode也是相当有意思)

 

在上述中我们有看到 sub_443F6C 函数执行了两次,两次执行后,只是为了构造下面函数的参数

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

第4个参数的内容

 

CVE-2018-0798_微软公式编辑器漏洞分析
我们可以看到a4是第4个参数,因此我们可以控制memcpy源地址的内容

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

通过控制第二个和第三个参数,修改该区域指令为jmp短跳,并把想要复制的内容放进来

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

到这里已经淹没了返回地址,一个短小的ROP链,还是比较容易理解

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

继续执行便到了我们刚才复制过去的数据,因为公式编辑器并没有开启DEP,所以可以直接执行

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

这里是之前构造的代码,对eax进行计算从而跳转到shellcode。

CVE-2018-0798_微软公式编辑器漏洞分析

 

到这里有个疑问,为什么要计算出,0x45BD3C这个地址呢?

 

其实这是一个基址,这个地址里保存的值永远是 0x12F560

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

而对0x12F560+0x14=0x12F574 又进行取值,这里边保存就是我们的word程序传入的buffer了

 

取出来的值+固定的offset,就是真正的shellcode了

 

CVE-2018-0798_微软公式编辑器漏洞分析
CVE-2018-0798_微软公式编辑器漏洞分析

样本概况

样本为一个word类型的文档,打开后如下

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

运行该样本后,发现该样本创建了计划任务

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

用oletools工具对doc文档进行分析,内置4个ole对象
CVE-2018-0798_微软公式编辑器漏洞分析

 

id为0和1的,明显是与0xFC异或加密,解密后是一个PE文件

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

id为3的包含了漏洞利用的代码

 

CVE-2018-0798_微软公式编辑器漏洞分析

恶意代码分析之shellcode

之前的介绍中,已经调试到shellcode部分

 

该段shellcode首先会通过异或0xb9解密自身

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

通过PEB的方法,获取msvcrt.dll,kernel32.dll的基址

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

获取msvcrt模块的clearerr函数地址,并修改其地址属性

 

CVE-2018-0798_微软公式编辑器漏洞分析
进行inlineHook

 

CVE-2018-0798_微软公式编辑器漏洞分析
hook之后,可以传入,字符串从而获取API的地址,不是用普通的GetPorcAddress

 

而是调用了ntdll的 LdrGetProcedureAddress

 

CVE-2018-0798_微软公式编辑器漏洞分析
CVE-2018-0798_微软公式编辑器漏洞分析

 

然后读取临时目录下的8.t,并在内存中解密

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

因为当前是调试状态,他会通过GetModuleFileName获取当前模块名,并创建一个同名的线程

 

CVE-2018-0798_微软公式编辑器漏洞分析
傀儡进程技术,写入真正要执行的代码,就是释放的8.t,然后ResumeThread并结束自身

 

CVE-2018-0798_微软公式编辑器漏洞分析
CVE-2018-0798_微软公式编辑器漏洞分析

Loader

8.exe会在临时目录释放,两个文件,并创建计划任务

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

![1565779110142] CVE-2018-0798_微软公式编辑器漏洞分析

白名单程序分析

如图释放的exe为有签名的白名单文件,是一个白利用程序

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

wce.dll是被更改过的黑dll,该dll获取导出函数[email protected]并调用

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

该函数解密域名后会进行链接,nicetiss54.lflink.com

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

发送的数据为 GET请求 image/logo.png

 

CVE-2018-0798_微软公式编辑器漏洞分析

 

该图片应该是一个PE文件,会去执行他的导出函数

 

CVE-2018-0798_微软公式编辑器漏洞分析)
注:可以利用样本制作exp,这里不放exp,附上样本,有兴趣的可以自己编写。(授人鱼不如授人以渔)

相关文章:

  • 2021-08-10
  • 2022-12-23
  • 2021-04-05
  • 2022-01-01
  • 2021-07-16
  • 2021-11-27
  • 2021-11-29
  • 2021-10-29
猜你喜欢
  • 2021-11-19
  • 2022-02-05
  • 2021-05-02
  • 2021-07-23
  • 2021-05-24
  • 2022-12-23
  • 2021-05-14
相关资源
相似解决方案