虚拟技术是云计算的基础,而针对当前的虚拟化环境的安全检测。而虽然说虚拟化,其实当前虚拟技术的实现的一个基本共识就是运行在虚拟环境中的系统并不知道自己位于虚拟环境。那么对于红方来说,如何判断自己是在虚拟环境还是物理设备主机,对于制定针对性的安全方案尤为重要。除此之外,当前反病毒引擎的一个重要思想沙箱也是基于虚拟环境检查病毒行为。而相应的,病毒如何判断自己在虚拟环境还是真实设备也显得重要(可以调整自己的行为,规避查杀)。
##### 硬件虚拟化(VM)
##### 容器
这里主要分析VM,主要是qemu和Vmware。
Vmtect是多年前,针对Vmware
虚拟机的检测。但是时间比较长远了,很多场合不再适用。
Vmware为宿主机和虚拟机间提供了相互沟通的方式,使用IN
指令读取特定端口的数据进行通讯,但是IN
本身属于特权指令,在出于保护模式的宿主机直接运行时会触发EXCEPTION_PRIV_INSTUCTION
异常(除非权限运行),而虚拟机不会发生异常。
这一部分泉哥在看雪上有一篇很详细虚拟机检测技术剖析
虚拟的一些设备和真实物理主机设备信息有些差异,可以通过一些特殊指令获得相关信息。
dmidecode指令可以获取系统硬件相关的一些信息,原理是将DMI数据库信息解码,输出的信息包括BIOS、系统、主板、处理器、内存、缓存等。