首页
社区
课程
招聘
[原创]CVE-2017-11882恶意样本调试分析
2019-6-10 21:02 8448

[原创]CVE-2017-11882恶意样本调试分析

2019-6-10 21:02
8448

最近无聊,就在Malware-Traffic-Analysis上找了一个传播Lokibot的恶意邮件


其中的purchase order.PNG是一个链接,点击将会下载一个rtf漏洞利用文档,根据VT结果。使用了CVE-2017-11882公式漏洞。通过rtfobj稍微查看了一下也证实了这一点。


该漏洞利用文档使用了简单的rtf混淆,如下。


使用rtfdump.py对列出该rtf中的所有控制字。


这里有好几个控制字,如第二个\object以及第8个\bin。对\bin进行dump分析,可以看到这个就是公式漏洞的数据。


这里我们手动提取出\bin的数据并且编写一个脚本转换。


对提取出的文件使用010editor进行分析。为了方便分析,这里我编写了一个010editor的temple文件。


运行模板之后,得到如下的文件分析结果。


对该样本使用windbg调试,通过gflags添加注册表,当EQNEDT32.exe执行的时候,windbg附加。我们知道cve-2017-11882的触发地址在41160F当中。所以我们在触发漏洞执行链调用4115A7之前下断点,可以看到eax指向的就是我们的shellcode部分。



我们可以看到漏洞触发前的数据。


触发之后,成功将返回地址修改为了0x44F825,并且对应的shellcode也写进去了。


接下来就是对该样本的恶意行为的分析了。我们先看第一阶段的shellcode代码。

第一部分shellcode是为了更好的控制流程,跳出shellcode字节限制。主要使用GlobalLock来获取MTFHerder来进行绕过。



其他的也没有什么了,动态解密数据,得到恶意url以及对应的恶意文件路径等。


解密算法就是一个异或算法如下。


该样本就是一个下载器,下载hxxp://modestworld.top/eaid/eaid.exe到%APPDATA%\eaidproj78364.exe并且执行。


但是该文件已经不存在了,根据该恶意域名,我们看到上面布置了其他的恶意文件如下。


稍微查了一下文件类型之类的,全都是delphi文件,原谅我不想分析delphi了。

本文记录主要是对被混淆了的rtf样本如何分析,并且也顺便温习了11882以及0802这两个洞。昨天看红雨滴团队说啥用了自己写的shellcode提取工具。自己也想写一个,有时间再搞吧。IOC懒得搞了。

注:样本密码为infected.


ref:

https://blog.talosintelligence.com/2018/10/old-dog-new-tricks-analysing-new-rtf_15.html

https://www.anquanke.com/post/id/87311

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-oleds/3c695db0-943f-48a0-b134-939af3b3a4ca

http://rtf2latex2e.sourceforge.net/MTEF3.html#Header

https://www.anquanke.com/post/id/179908


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
petersonhz 2019-6-10 21:45
2
0
看来用delphi写病毒不错啊,大家都不愿意深入分析它了
雪    币: 2107
活跃值: (1429)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
binlmmhc 2019-7-24 14:06
3
0
mb_ckbeqxfo 楼主我想咨询一个问题
啥子问题
雪    币: 208
活跃值: (3390)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
大河向东流哇 2022-2-25 14:57
4
0
大佬,我想问下文章中提到的“提取出\bin的数据并且编写一个脚本转换”是为什么啊 为什么需要脚本转换啊 转换成了什么啊  那个脚本有点没看懂
雪    币: 2107
活跃值: (1429)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
binlmmhc 2022-2-28 17:44
5
0
大河向东流哇 大佬,我想问下文章中提到的“提取出\bin的数据并且编写一个脚本转换”是为什么啊 为什么需要脚本转换啊 转换成了什么啊 那个脚本有点没看懂
\bin是第八个控制字的数据,转换是把他转换为16进制数据,我写脚本比较麻烦,你可以使用cyberchef的tohex直接转换就可以了
雪    币: 208
活跃值: (3390)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
大河向东流哇 2022-3-2 15:45
6
0
binlmmhc \bin是第八个控制字的数据,转换是把他转换为16进制数据,我写脚本比较麻烦,你可以使用cyberchef的tohex直接转换就可以了
嗷嗷 soga 谢谢大佬  
游客
登录 | 注册 方可回帖
返回