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


      当前样本是一个RTF文档,内嵌一个公式编辑器对象,该对象利用Office编辑器漏洞CVE-2018-0798执行shellcode,对EQNEDT32.exe进行代码注入,执行恶意代码。
      使用rtfobj查看文档结构,可以看到携带了3个OLE对象,但是id为1的对象并未被使用。
      第二个是一个package对象,原路径为” C:Users 3oAppDataLocalMicrosoftWindowsINetCacheContent.Wordwd32PrvSE.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

  • 相关阅读:
    渗透利器-kali工具 (第二章-4) 信息收集之目录扫描
    渗透利器-kali工具 (第二章-3) 信息收集之子域名扫描 -Sublist3
    渗透利器-kali工具 (第二章-2) 信息收集之端口扫描-NMAP
    渗透利器-kali工具 (第二章-1) 渗透测试流程以及信息收集总纲
    (4)top详解 (每周一个linux命令系列)
    (3)lscpu详解 (每周一个linux命令系列)
    (2)free详解 (每周一个linux命令系列)
    每周一个linux命令之---uptime详解
    使用python制作时间戳转换工具
    PSR规范0-4整理
  • 原文地址:https://www.cnblogs.com/zUotTe0/p/15265221.html
Copyright © 2020-2023  润新知