样本信息

看上去是没有加壳

文件名: petya virus.exe

大小: 230912 bytes

修改时间: 2017年7月2日, 16:54:38

MD5: AF2379CC4D607A45AC44D62135FB7015

SHA1: 39B6D40906C7F7F080E6BEFA93324DDDADCBD9FA

CRC32: 488C77E7

测试环境及工具

Windows 7 x64

OD

PEID

逆向分析

一开始我是拖到IDA中分析的,但是啥都看不到

使用OD单步分析

F7进入

继续单步,就看到获取一堆函数

继续单步

F7进入

F7进入

进入0x0041A8DA一堆循环,一直单步

获取到VirtualAlloc、GetprocAddress

申请空间

0x003E000

写入dll

一开始以为只是填充400个字节(DOS头、NT头、区段表),后来才发现是在释放一个dll文件

从申请到的空间0x003E000开始

再往后走发现,0x003E1000开始填充,填充83FF个字节

从0x003EA000开始,循环填充BFF次,每次1字节

0x003EB000开始填充1FF个字节

0x003EE000,填充3FF字节

0x003EF000,填充21FF

EDX = 0x3D1200 PE文件的结束,将其复制出来,使用PEID打开,

获取函数

循环获取函数,

003EA8E2 SetFilePointer..gSetFilePointerEx..%WriteFile.?

003EA922 ReadFile..oGetSystemDirectoryA.?DeviceIoControl.R.CloseHandle.

003EA962 ?GetCurrentProcess.GetLastError..EGetProcAddress..GetModul

003EA9A2 eHandleA..?HeapAlloc.?HeapFree..JGetProcessHeap..KERNEL32.dll

003EA9E2 ..?CryptReleaseContext.?CryptAcquireContextA..?CryptGenRandom

003EAA22 ..?OpenProcessToken..?LookupPrivilegeValueA.­.AdjustTokenPrivi

003EAA62 leges.ADVAPI32.dll

先获取Kernel32 在获取函数,然后获取ADVAPI32在获取其中LookupPrivilegeValueA.­.AdjustTokenPrivileges

修复重定位

修复的是填充dll文件

跳转,被释放PE文件的代码段

继续往下单步到call esi 时,跳转到之前填充的代码

遍历区段

密钥

继续单步

保存网址和一串字符串

加密磁盘

读取磁盘数据,将加密后数据写入到磁盘,且循环22次每次512字节

写入数据

勒索界面

将这0x2000个字节复制出来(已保存到文件”Petya.exe勒索界面.bin”中)查看

网址

再次写入0x37

写入MBR

提权重启

提升权限,调用ZwRaiseHardError函数进行强制重启*

调用ZwRaiseHardError(制造蓝屏重启)