运行1701的py代码,结果如下:
Number of potential Anti-VM instructions: 1
Anti-VM: 100061db
点进去三个引用的地方,发现判断条件都是一样的
拿InstallSB举例
看到提示字符串,说明10003592函数是printf~
在cmd运行:rundll32 Lab17-02.dll,InstallRT
生成了xinstall.log,内容为:
[08/07/18 11:41:32]
Found Virtual Machine,Install Cancel.
且程序将自身删除(可见unk_1008E5F0是当前时间戳)
说明虚拟机被成功检测,需要找到相关地方patch一下的
然后看到另外一个判断函数
这个指令也很奇怪ba
可见也会是某种检测,应该让其返回 0
patch完这两个检测:mov al,0
然后运行起来:
运行IE浏览器,再次加载dll
啊
啊
啊
啊
问题1:DLL导出了什么
问题2:rundll32安装后,发生了什么
程序自身被删除了
问题3:创建了哪些文件
xinstall.log
问题4:反虚拟机方法
有两个函数采用了不同的两种方法
32位机器里eax为返回值,把赋值语句改成mov al, 0即可绕过
书中答案:使用x86指令in,用magic值VX和动作0xA查询VMware后门I/O通信端口(查询成功返回了1)
问题5:在恶意代码运行时,如何强制安装
指令patch
问题6:怎么永久禁用这些反虚拟机技术
A:[This is DVM]5修改为[This is DVM]0
B:用NOP替换检查指令
C:修改返回值
问题7:每个安装的导出函数是如何工作的
剩下的分析均来自书中wp:
InstallRT:通过带有被注入进程可选参数的DLL注入来执行安装
InstallSA:通过服务安装来执行安装
InstallSB:通过服务安装来执行安装,如果覆盖的服务正在运行,那么使用DLL注入来安装
这个恶意代码拥有相当多功能的后门,包括击键记录、截获音频和视频、传输文件、执行***、提取系统信息、使用逆向命令shell、DLL注入、下载和启动命令等等
https://jmprsp.wordpress.com/2016/04/20/practical-malware-analysis-anti-vm-lab-17-02/