公式编辑器CVE-2018-0798样本分析

  当前样本是一个RTF文档,内嵌一个公式编辑器对象,该对象利用Office编辑器漏洞CVE-2018-0798执行shellcode,对EQNEDT32.exe进行代码注入,执行恶意代码。
  使用rtfobj查看文档结构,可以看到携带了3个OLE对象,但是id为1的对象并未被使用。
  第二个是一个package对象,原路径为” C:\Users\n3o\AppData\Local\Microsoft\Windows\INetCache\Content.Word\wd32PrvSE.wmf”,实际是一个经过加密的exe文件,在漏洞触发后,被Shellcode解密并注入新起的EQNEDT32.exe进程中;
  第三个为公式编辑器对象,其中 {0002CE02-0000-0000-C000-000000000046}即为Equation Editor 3.0关联CLSID,该对象会触发CVE-2019-0798漏洞,从而执行Shellcode。
image
  在EQNEDT32.exe中CVE-2018-0798漏洞函数sub_443E34处下断点,打开RTF文档,程序将中断于断点。
  在sub_443E34中,会对公式编辑器对象进行处理。其中sub_416352用于获取控制数据,之后在sub_443F6C函数中会进行数据复制操作,而之前获取的偏移0x1E、0x1F处的字节将被用于控制数据复制的长度。
image
  sub_443F6C中,参数a1即为控制长度的字节,计算值”(2*a1+9)>>3”,结果作为复制数据的长度值,该函数被连续调用两次,完成目标的覆盖。
image

  覆盖前的栈:
image

  覆盖后的栈:
image

  接着调用sub_4428F0,利用之前覆盖的数据,构建一个Trampoline Shellcode片段,用于跳转执行RTF本身携带的Shellcode。
image

  在sub_43A78F中控制程序再次调用漏洞函数sub_443E34,最终覆盖函数sub_443E34的返回地址。通过构造并覆盖成功的ROP链跳转到Trampoline Shellcode处,最终成功跳转并执行自身携带的Shellcode。
image

  Shellcode进行异或自解密,并继续执行解密后的代码。
image

  读取被释放到目录下的package对象wd32PrvSE.wmf,进行异或解密,得到一个EXE文件。
image

  使用Process Hollowing技术将解密后的EXE隐藏于EQNEDT32.exe进程中执行。
image

image

image

  解密出的EXE将会复制自身的执行文件(即EQNEDT32.exe)到目录,并以当前时间创建文件名。接着访问URL:https://internetcasinoweblog.com/wp-admin/js/xfn/joel.exe(已失效),下载资源,写入下被创建的时间命名的文件,最终执行程序。

  如果下载失败,执行的将是一开始复制过来的EQNEDT32.exe,只是名字被更改。
image

posted @ 2021-09-13 22:27  Bl0od  阅读(68)  评论(0编辑  收藏  举报