PC端恶意代码的混淆与加壳对抗( 四 )


文章插图
 
这里针对PEB , 还是之前的方法
针对tls , 把exit换成nop

PC端恶意代码的混淆与加壳对抗

文章插图
 
针对OutputDebugStringA,也是用nop填充add.
PC端恶意代码的混淆与加壳对抗

文章插图
 
但是不知道为啥我这里的密码得到是bzrr,书上是byrr.
PC端恶意代码的混淆与加壳对抗

文章插图
 
Lab16-3
运行 , 会直接退出 。跟之前分析过的一个样本是一样的
PC端恶意代码的混淆与加壳对抗

文章插图
 
用od动态调试,我这边直接就出了最后的答案 。
找到比较名字的地方 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
但还是跟着步骤走一遍 , 找到4011E0
PC端恶意代码的混淆与加壳对抗

文章插图
 
进入查看 , 可以看到QueryPerformanceCounter,通过两次时间差 , 判断有无调试 。
通过设置2来作为有调试的标准 , 因此这里设置为nop
PC端恶意代码的混淆与加壳对抗

文章插图
 
查看其中的异常处理
PC端恶意代码的混淆与加壳对抗

文章插图
 
因为前面的xor语句 , 这里ecx被设置为0 , 所以这里会产生异常 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
接着看下面 , 这里通过GetTickCount , 对时间进行判断 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
这里的401000也是异常处理 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
继续往下看 , 可以看到rdstc,也是通过异常处理 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
Lab17:反虚拟化
当镜像安装了vmware Tools,进程中就会出现VMwareService.exe、VMwareTray.exe和VMware.exe
通过搜索注册表中安装的服务
或者.NET stat | findstr Vmware
“航天课堂”第一课内容非常精彩 。接下来我们会以更简单明了的方式向小朋友讲解相关知识 。敬请期待第二节航天课堂 。
以00:0C:29开始的MAC地址与VMware相对应
Red Pill反虚拟机技术
通过运行sidt指令获取IDTR寄存器的值 。虚拟机监视器必须重新定位Guest系统的IDTR,来避免与host系统的IDTR冲突 。因为在虚拟机中运行sidt指令时 , 虚拟机监视器不会得到通知 , 所以会返回虚拟机的IDTR , Red Pill通过测试这种差异来探测VMware的使用
查询I/O通信端口
VMware使用虚拟化I/O端口完成宿主系统与虚拟机之间的通信 , 以便支持诸如复制和粘贴功能 。这个端口可以被查询
这种技术成功的关键在于x86体系结构中的in指令 , 它从一个源操作数指定的端口复制数据到目的操作数指导的内存地址


推荐阅读