Night Sky为例

查壳可以看到是vmp的壳,根据网上其他的文章可以确定是3.x版本貌似是3.5。根据其他文章介绍虽然加密,但是貌似只对IAT进行了vm,所以可以用该工具模拟出IAT。

在这里插入图片描述
使用沙箱定位到代码段调用的API,这里选择MoveFileEx。因为当勒索软件涉及到对文件操作时证明被vmp保护的代码段已经被解密加载到.txt节中,此时是比较好的解密点。

Automated Malware Analysis Report for update.exe - Generated by Joe Sandbox在这里插入图片描述
运行到OEP后选择MoveFileExW API在这里插入图片描述
来到API函数入口设置硬件端点,硬件断点是为了防止软件断点会影响壳的执行流程在这里插入图片描述
执行后中断在我们设置的硬件端点下。在这里插入图片描述
返回到用户态代码,可以看到call xxxxx int3。这是被vmp3.x保护的导入函数虚拟化特征,该函数会进行一系列运算,最后解析出API并调用

在这里插入图片描述
根据其他报告提示该样本的OPE特征为微软VS特征。接下来随意用VS编译一个helloword的64位程序并用IDA观察入口特征在这里插入图片描述
首先找到export选项卡,来到OEP处在这里插入图片描述
在VS编译器中会生成一段安全cookie的hash,该hash值不变可以作为特征串查找OEP附近的代码在这里插入图片描述
回到中断的内存中,点击内存布局中查看在这里插入图片描述
可以看到已经解密代码到.text节中,而不是存在下面的附加节中。在这里插入图片描述
我们只需要在.text节中搜索cookie特征值即可,邮件内存窗口中转到在这里插入图片描述
右键–>特征搜索在这里插入图片描述
搜索后只有一处特征值,该值就是VS编译器OEP附近的设置安全cookie处。如果有多个该技巧可能并不适用在这里插入图片描述
对比后为VS编译器设置安全Cookie的函数在这里插入图片描述
删除其他断点,在安全cookie函数入口处设置硬件断点在这里插入图片描述
重新运行程序中断在函数序言中,此时与真正的OEP很接近了在这里插入图片描述
查看调用栈跟随到调用地址在这里插入图片描述
可以看到来到一块位置代码内容中在这里插入图片描述
内存布局转到,可以发现已经不在.text中,证明OEP已经被vmp保护了。所以我们不能直接dump出干净的OEP,可能需要后续手动修复在这里插入图片描述
使用vmpdump对解密后的程序进行dump
VMPDump.exe 8852 “” -disable-reloc
注意,dump进程名不能过长,否则会失败在这里插入图片描述
接下来将dump程序拖入IDA,可以看到此时入口点仍为VMP壳节代码中,需要我们自己手动搜索特征修复在这里插入图片描述
搜索cookie的hash值在这里插入图片描述
选择text代码节,这是我们dump出来的解密代码部分在这里插入图片描述
将函数名和函数类型改为初始化cookie在这里插入图片描述
同理,我们搜索__scrt_common_main_seh函数的特征,由于该函数没有常量,我们只能取函数部分字节码做特征搜索
在这里插入图片描述
同理需要继续向下定位到main函数在这里插入图片描述
在重命名完成后,需要我们手动修改入口点的OEP。对比正常的VS编译程序修改入口点代码
在这里插入图片描述
修改后如下
在这里插入图片描述
接下来需要计算跳转的相对偏移,call指令的下一条指令地址-安全cookie初始化函数的地址。又因为vmp壳的代码节在.text的下方,所以相对跳转的值应该取负值,这样就可以从.2fU1节向上跳转到.text节中
在这里插入图片描述
计算出该值还需要加1字节在这里插入图片描述
修改相对跳转,在这里插入图片描述
回到入口点可以发现修改成功在这里插入图片描述
同理可以修改main_seh在这里插入图片描述
在这里插入图片描述
最后patch程序即可在这里插入图片描述
重新调试即可
在这里插入图片描述

脱壳后的main函数在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值