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




