-
-
[原创]分析实战读书笔记13_虚拟机检测
-
发表于: 2021-3-18 14:09 6678
-
本章简单记录一下常见反虚拟机的技术手段,作为字典,方便查找
net start | findstr VM
通过cmd命令查看所有名字包含VM的服务
VMare的安装目录包含VMware字样,可以遍历文件夹检测VM痕迹。
通过遍历注册表可以查询包含VM字样的注册表项从而探测VM。
虚拟机镜像中的MAC地址常以00-0C-29
开头,如下图
VM镜像中的磁盘ID常包含VM字样
分析师们常拥有多个VM镜像以应对不同类型的样本,大多数镜像中的磁盘大小不会太大。而如今物理机的存储量都是巨大的。
通过搜索从0开始的整块物理内存
来查找VM字样,通常这种方法可以检测出上百处涉及VM的字符串。
VMware采用二进制翻译的方式来模拟指令的运行。大量的指令会产生内核态的陷阱指令或中断指令,VMware截获所有异常并处理它们,来模拟出物理机的效果。
在x86体系结构中,一些指令在获取硬件相关信息时不产生异常,这就导致VMware无法截获并进行模拟。为了避免性能损失,一些指令VMware并未将它们虚拟化,这就导致了同样的指令在实体机与虚拟机中会有不同的结果。如sidt,sgdt,sldt
sidt是用户态指令,并且不产生中断,虚拟机监视器探测不到sidt指令的执行,无法进行模拟执行。因此在虚拟机中执行sidt指令时会返回虚拟机的IDTR,Red Pill通过这种差异来监测虚拟机的运行。
实体机: sldt返回0
虚拟机: sldt返回非0
VMware会监视in指令的执行。触发条件:
本章简单介绍了一些反虚拟机技术,其中有些技术已经淘汰无人使用,有一些技术现在依然是很有效的检测手段。对于虚拟机的检测可以从各个方面入手,分析师们只能慢慢积累,将所见的反虚拟机手段记录下来。方便日后进行镜像的配置。
这个恶意代码使用了什么反虚拟机技术?
如果你有-一个商业版本IDA Pro,运行第17章中代码清单17-4所示的IDA Python脚本(提供如
findAntiVM.py),看它发现了什么?
每种反虚拟机技术成功执行后会发生什么?
针对你的虚拟机,这些反虚拟机技术中哪些技术会生效?
为什么每个反虚拟机的技术,会生效或失败?
怎么使这些反虚拟机技术无效,从而让恶意代码运行?
这个DLL导出了什么?
尝试使用rundll.32.exe 安装后,都发生了什么?
它创建了哪些文件,这些文件都包含什么内容?
它使用何种反虚拟机方法?
在恶意代码运行时,怎么强制安装它。
怎样可以永久禁用这些反虚拟机技术?
每个安装的导出函数是如何工作的?
mov eax,
0x564D5868
mov ebx,[esp
+
x]
mov ecx,
0xA
mov dx,
0x5668
in
eax,dx
mov eax,[esp
+
x]
cmp
eax,
0x564D5868
mov eax,
0x564D5868
mov ebx,[esp
+
x]
mov ecx,
0xA
mov dx,
0x5668
in
eax,dx
mov eax,[esp
+
x]
cmp
eax,
0x564D5868
str
技术 NoPill技术
str
技术 NoPill技术
执行
401000
处的退出
+
自删除
赞赏
- 利用OLLVM编译windows驱动 30403
- [求助]SetWindowLong、SetWindowLongPtr无效问题 6912
- [求助]大佬们求一份21H2镜像,最好是VM镜像,原版也可以 6970
- [原创]X86内核笔记_6_APC相关 22423
- [原创]X86内核笔记_5_句柄 15487