恶意代码分析实战Lab0301
先查壳
看到PEncrypt 3.1 Final -> junkcode的壳,没见过。上次下载的万能脱壳机脱不下来这个
于是网上先找了一波脱壳教程
https://bbs.pediy.com/thread-90089.htm
找到了这个脱壳的案例和教程,链接底下也有demo下载可供调试(学会了这个用这种方式还是脱不下来这个题的)
最后想到了内存DUMP的办法,即使我不能把这个恶意代码脱壳,但是可以找到类似OEP的地方,它已经在内存中解码释放完毕了(一定要在虚拟机的快照里做),然后用IDA静态分析这个exe即可。动态分析跑不起来,IAT表对不上
记录一下F8大法
在40020D的地方要F7,可以是一个call(程序把它理解成了一个函数调用,会进去到400400)
F8大法的原则是一路向下不回头,看到往下的jmp执行就好
这里有两个jnz都是成功的往回跳转,所以我们直接F4到4011F9的pop edi
1228的这里call1236,即使很奇怪,但是因为是往下跳转的我们也得去执行,注意用call执行这种往下的小跳转,都是要F7的,不然程序就跑起来了(这样程序就直接释放了,我们再F12暂停程序的话,很遗憾,恶意代码的所有恶意行为已经完成)。即使在OD的自动反编译中只有401235和401237。
这里要注意多看一点,40141D是jmp 4013FE是往上跳要略过,而40141F是调用401424是往下执行要F7,所以可以直接在401424的pop esi这儿F4
这种往上跳不能执行,在401450的jnz上F4
同理
注意到这里有个CreateMutexA的函数调用
所以,可惜的是我们之后在找到OEP时,这个程序的恶意功能已经完成了。我们dump下来的文件也仅仅是个不可执行的内存中的二进制文件。
在CreateMutex附近,看到了WinVMX32这个字符串
看到这个400437,很有可能是个跨段跳转,跳到我们的OEP的位置
所以在这里使用Ollydump脱壳吧~可以弄下来DUMP文件
可惜的是无法完全反编译,只能通过特征字符串来猜测
那么再根据书中的几个工具对该文件进行分析
首先是用strings,通过查看特征字符串的方式(不需要脱壳,用strings.exe)
可以猜测有如下功能:
CONNECT ~~~:说明会通过HTTP协议连接远程登陆www.practical~~这个网页,可能是个恶意网站
SOFTWARE ~~~:会写入本地注册表
WinVMX32 ~~~:通过CreateMutex做事情
vmx32to64.exe:恶意代码执行后,在本地某system目录下种下的后门二进制文件
然后利用regshot注册表的对比进行分析
在前后注册表的对比之中,有很多我们已经在strings中找到的变化,还有些是不一样的
比如{5BD443CB-CA6A-4878-8E46-4035252949FC}这种,叫做CLSID。
CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的ID代码,用于对其身份的标示和与其他对象进行区分。
这个网址可以查询CLSID代表什么应用程序开设的什么服务,有些是计算机必备的,有些事恶意代码常驻开设的后门
举例来说
再结合使用我的电脑的搜索功能,找一找vmx32to64.exe放在了哪里
放在了system32文件夹里,说明这个恶意代码有对系统文件夹读取和写入的权限了
CONNECT %s:%i HTTP/1.0
这个上网查询一下,找到了如下对应的特征字符串
说明这个是HTTP协议访问网页的一种格式,%s代表网站地址URL,在这里也就是www.prac~~~那个,%i代表端口
所以这个恶意代码的功能基本分析完毕:
A:写注册表
B:开启多线程
C:在system32目录下写文件
D:因为是加了壳的二进制文件,不方便用IDA静态分析
以上是根据特征来进行的猜测,找到很多好的分析报告,搭建了服务器对程序恶意功能进行了更全面的分析测试
http://blog.csdn.net/isinstance/article/details/77679894
http://www.brettlischalk.com/posts/practical-malware-analysis-lab-3-1
https://samsclass.info/126/proj/p4-lab3-1.htm
https://debug.fail/2015/10/practical-malware-analysis-lab-walkthrough-3-1/