公式编辑器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。
在EQNEDT32.exe中CVE-2018-0798漏洞函数sub_443E34处下断点,打开RTF文档,程序将中断于断点。
在sub_443E34中,会对公式编辑器对象进行处理。其中sub_416352用于获取控制数据,之后在sub_443F6C函数中会进行数据复制操作,而之前获取的偏移0x1E、0x1F处的字节将被用于控制数据复制的长度。
sub_443F6C中,参数a1即为控制长度的字节,计算值”(2*a1+9)>>3”,结果作为复制数据的长度值,该函数被连续调用两次,完成目标的覆盖。
覆盖前的栈:
覆盖后的栈:
接着调用sub_4428F0,利用之前覆盖的数据,构建一个Trampoline Shellcode片段,用于跳转执行RTF本身携带的Shellcode。
在sub_43A78F中控制程序再次调用漏洞函数sub_443E34,最终覆盖函数sub_443E34的返回地址。通过构造并覆盖成功的ROP链跳转到Trampoline Shellcode处,最终成功跳转并执行自身携带的Shellcode。
Shellcode进行异或自解密,并继续执行解密后的代码。
读取被释放到
使用Process Hollowing技术将解密后的EXE隐藏于EQNEDT32.exe进程中执行。
解密出的EXE将会复制自身的执行文件(即EQNEDT32.exe)到
如果下载失败,执行的将是一开始复制过来的EQNEDT32.exe,只是名字被更改。
本文来自博客园,作者:Bl0od
转载请注明原文链接:https://www.cnblogs.com/zUotTe0/p/15265221.html