样本信息



看上去是没有加壳
文件名: 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(制造蓝屏重启)
