病毒名:GhostPetya
病毒信息:Win32 EXE
病毒MD5:C8AD4F6EFD75D5693A0C6D67C82906FE
这是主函数入口,看到如下红框,调用的函数的地址都是动态生成的,只能使用OD进行调试了。
一路单步步过,没做什么操作,一开始我调试时老是跑飞,不知道病毒心代码的入口在哪,最后,才发现下图红框EnumWindowStationsW函数处是入口。EnumWindowStationsW的作用是为窗口注册触发一个回调函数,这里的回调函数是0x4364AC。
我们如果直接在IDA中反汇编0x4364AC处的代码,会发现是乱码,这是由于这段代码是经过加密的。解密操作在EnumWindowStationsW上面的两个函数,先使用VirtualProtect将0x43163C开始的一片内存的属性改为RWX,然后对0x43163C处的数据进行解密。
解密算法如下。
解密后的0x4364AC函数如下,先是动态获取要调用的函数地址,然后创建一个子进程,为后续注入恶意代码作准备。
进程注入方式是基于Windows事务(Transaction)的Process-Doppelganging注入技术。
注入的恶意代码为一个PE文件,这段代码也是经过解密才可视的。
这是注入后的效果图,新的子进程update3.exe的0x40000处是注入的恶意代码,内存属性为WCX,查看字符串,可以发现有勒索提示信息。
最后通过修改EIP的方式来运行该注入的PE文件。
只要我一运行ZwResumeThread函数,那个恶意PE的代码就会开始运行。
恶意PE运行后,我的主机突然关机了。
重新开机后,系统进不了,而是提示在修复系统,其实是病毒在篡改MBR数据。
完毕后弹出一个骷髅头的提示框。
索要0.1个比特币。
我把那个恶意PE的代码dump下来了,结构很简单清晰,调用CreateFileA打开前3磁盘以及U盘的文件句柄。
然后向这几个磁盘的引导区写入恶意代码,以达到劫持MBR的目的。
篡改完毕后,立即重启电脑,使电脑执行骷髅头代码。