虚拟机检测技术研究.pdf
- 文档编号:3176600
- 上传时间:2022-11-19
- 格式:PDF
- 页数:4
- 大小:1.71MB
虚拟机检测技术研究.pdf
《虚拟机检测技术研究.pdf》由会员分享,可在线阅读,更多相关《虚拟机检测技术研究.pdf(4页珍藏版)》请在冰豆网上搜索。
12009.12计算机安学术.技术虚拟机检测技术研究王宝林,杨明,张永辉(解放军理工大学指挥自动化学院,江苏南京210007)摘要:
虚拟机在反恶意软件研究领域的应用越来越普遍。
虚拟机检测技术对恶意软件的作者或反恶意软件的研究人员都具有重要的意义。
首先简述了虚拟机检测技术的意义,然后介绍了虚拟机检测技术的理论基础,接着描述了现有的虚拟机检测技术的基本思想,分析了其优缺点,最后在总结现有成果的基础上,指出了未来的研究重点和方向。
关键词:
虚拟机;虚拟环境;检测技术ResearchofDetectingTechnologyofVirtualMachineWANGBao-lin,YANGMing,ZHANGYong-hui(InstituteofCommandandAutomation,PLAUniversityofScienceandTechnology,Nanjing,Jiangsu210007,China)Abstract:
Virtualmachinesareappliedintheresearchfieldofanti-malwaremoreandmorenowadays.Thedetectingtechnologyofvirtualmachineismeaningfultoboththeauthorofmalwareandtheresearcherofanti-malware.Inthispaper,wefirstintroducethevalueofdetectingtechnologyofvirtualmachine,thendescribethetheorybasisofdetectingofvirtualmachine,afterthat,weexplaintheideasofexistingdetectingmethodsandanalyzeboththeadvantagesanddisadvantagesofthem.Finally,thefutureresearchdirectionsarepointedoutonthebasisofsummariesofcurrentstudy.Keywords:
VirutalMachine;VirtualEnvironment;DetectingTechnology1引言近年来,随着虚拟化技术的进一步发展,特别是VMware和Xen虚拟机在桌面应用中的广泛流行,使得人们逐渐意识到虚拟化技术能够带来的巨大好处,如降低硬件开销和管理成本,提高使用灵活性和安全性,增强可用性和可扩展性等。
因此,虚拟化技术在服务器整合、恶意软件分析等领域都有着广泛的应用。
虚拟化技术最重要的两个属性是隔离和资源控制。
通过隔离和资源控制属性,虚拟化技术能够允许在单一物理主机上运行多个虚拟机,各个虚拟机之间不会相互影响,每个虚拟机上都可以运行同构(或异构)的操作系统。
此外,虚拟机软件还提供快照、回放等功能。
因此,反恶意软件的研究人员能够以受控的方式来进行恶意软件的行为分析,从而更好地理解恶意软件的行为并开发出相应的移除工具。
使用虚拟机进行恶意软件分析还避免了每次分析完毕后重复安装实验环境的麻烦,只需利用快照功能将系统恢复到分析恶意软件前的状态,提高了工作效率。
但是,保护安全和破坏安全的斗争是不断升级的。
恶意软件的作者也希望使反恶意软件的研究人员对恶意软件的行为分析更加困难,从而造成较大的破坏。
因此,高级的恶意软件希望在执行前判断它们所处的运行环境,若是在虚拟机中执行,它们会调整自己的行为或者拒绝执行。
理论上,更高级的恶意软件(如VMBR:
VirtualMachineBasedRootkit)完全有可能使用虚拟机来运行,从而达到更高的隐蔽性。
Bluepill就是这样的例子。
这样的话,反恶意软件的研究人员也必须寻找检测虚拟环境的方法。
由此可见,虚拟环境检测技术不仅对于恶意软件的研究人员有着很大的价值,对反恶意软件的研究人员也有很重要的意义。
到目前为止,x86架构是最流行的处理器架构。
因此,本文主要以x86架构下的虚拟环境为例进行分析,剩余部分按照如下方式组织:
第2节描述了一些术语和虚拟环境检测的基本原理;第3节讨论了现有的虚拟环境检测方法;第4节是总结和展望。
2背景知识在介绍现有的虚拟机检测技术之前,我们首先描述了本文中使用的一些术语。
Popek和Goldberg将虚拟机(VM:
VirtualMachine)定义为“真实机器的一个有效的、隔离的复制品”1。
要实现虚拟机,必须插入一个中间层,这个中间层就是虚拟机监控器(VMM:
VirtualMachineMonitor)。
虚拟机监控器,又称为Hypervisor,是一个控制程序,用于提供虚拟机的抽象。
它和硬件进行通信,允许在单一物理主机上模拟出多个虚拟机,并提供虚拟机之间的隔离,每个虚拟机上可以独立的运行操作系统。
Popek和Goldberg认为,VMM应当具有以下三个属性1:
(1)等价性:
一个运行于VMM下的程序,其行为应与直接运行于本质上一样的物理机上时的行为完全一2算机安全2009.12学术.技术致。
其中“本质上一样”意味着,运行在VMM之上的应用程序应该和直接运行于真实物理主机上时表现出一致的效果,但可能出现两类异常:
资源可用性异常(RAE:
ResourcesAvailabilityException)和时间依赖异常(TDE:
TimingDependencyException)。
(2)资源控制:
VMM应该对系统资源有完全的控制能力。
(3)效率性:
机器指令中的绝大多数指令应该在没有VMM的干预下执行。
为了方便解释下面的术语,先介绍一下IA32的特权级层次。
IA32支持四级特权级:
环0、环1,环2,环3。
如图1所示。
其中环0(即通常说的内核态)用于操作系统内核服务。
环1、环2为设备驱动使用,环3(即通常所说的用户态)为普通应用程序使用。
在大多数操作系统实现中,环1和环2没有使用。
图1IA32架构的特权级层次Popek和Goldberg根据机器指令的行为对其进行如下分类1:
(1)特权级指令:
是指当处理器处于用户态时执行会自陷(Trap),而处于内核态不自陷的指令。
(2)敏感指令:
是指其执行会影响虚拟机监控器或虚拟机状态的指令。
(3)普通指令:
即非敏感非特权指令。
根据此分类,Popek和Goldberg指出,一台物理机能够被完全虚拟化的条件是所有敏感指令的集合是特权级指令的一个子集1。
而目前流行的x86平台,它包含17条敏感而非特权指令2,这些指令是失效静默的,不会产生自陷,因此,它是不可完全虚拟化的。
通过放宽对效率性的要求,许多按Popek和Goldberg对虚拟机监控器的定义应归类为不可虚拟的ISA也有自己的虚拟机监控器,如x86平台的VMware、Xen等等。
因为等价性中的资源可用性异常和时间依赖异常的存在,理论上允许检测虚拟机的可能。
由x86平台下的虚拟机的实现方式可知,因为x86平台下存在一些非敏感非特权指令,为了正确地进行虚拟化,必须对这些指令进行模拟。
这种模拟使得虚拟机和真实主机存在一些差异,利用这些差异就可以检测虚拟机的存在。
此外,这种模拟还会导致应用程序在虚拟机上执行比在真实主机上执行要慢,因此,可以通过相对性能的方法来检测它们。
另外,许多虚拟机和模拟器在实现中,存在一些特征字符串和缺陷,使得能够通过特征字符串和缺陷来检测到虚拟环境的存在。
3现有的虚拟环境检测技术虚拟机按照实现方式的不同,可以分为软件虚拟机、硬件辅助的虚拟机。
总的来说,虚拟机检测技术主要从两个方法来入手:
(1)虚拟环境和真实物理环境的本质差异;
(2)在虚拟环境和真实物理主机上的外在表现。
如何检测硬件辅助的虚拟机仍然是一个开放的问题,因此,我们下面主要分析现有的软件虚拟机检测技术。
为了方便说明,下面介绍的检测技术都是基于现有的比较流行的虚拟平台的。
3.1利用内存差异的检测方法这种方法最典型的代表使用IDT(InterruptDescriptorTable)或LDT(LocalDescriptorTable)的检测方法。
这种方法利用了虚拟机和真实主机中重要的操作系统的某些关键数据结构的不同位置来判断执行环境是否是虚拟机。
这类方法对VMware、VirtualPC都比较有效。
前面提到x86的ISA中存在17条敏感非特权指令,其中包括SIDT、SLDT和SGDT,它们可以在用户态使用。
使用它们可以获取IDT、LDT和GDT(GlobalDescriptorTable)的信息。
因为只有一个IDTR寄存器、一个GDTR寄存器和一个LDTR寄存器,但是有两类操作系统在运行:
虚拟机系统和真实主机系统。
为了能够正确地虚拟化,每个虚拟机都应该维持这几个描述表的“影子”拷贝,虚拟机监控器必须改变虚拟机中描述表的位置。
这样就会使虚拟机和真实主机产生一个不一致,使用这个不一致可以用来判断虚拟机的存在。
例如,使用IDT检测方法的主要思想是:
通过检测IDT的基地址是否超过某个特定值,来判断是否存在虚拟机。
比较有名的Redpill工具3和ScoobyDoo5就使用了该方法。
Redpill的作者Rutkowska注意到,在VMware的客户机系统中,IDT通常位于0xffXXXXXX处;而在VirtualPC的客户机系统中,IDT通常位于0xe8XXXXXX处。
而在真实的主机环境中,IDT的值通常在0x80ffffff(对Windows而言)和0xc0ffffff(对Linux而言)。
Redpill仅仅查看SIDT指令返回的第一个字节的代码,如果它大于0xd0,则判断处于虚拟机中,否则,在真实主机中。
Redpill的代码如下:
#includeintmain()unsignedcharm2+4,rpill=x0f32009.12计算机安学术.技术x01x0dx00x00x00x00xc3;*(unsigned*)&rpill3)=(unsigned)m;(void(*)()&rpill)();printf(idtbase:
%#xn,*(unsigned*)&m2);if(m50xd0)printf(InsideMatrix!
n,m5);elseprintf(NotinMatrix.n);return0;但是,IDT检测方法有一个缺点,它在有多个CPU的机器上误警率太高。
因为多个CPU的机器上,每个处理器有不同的IDT,IDT的基地址在不同时刻所取得的值并不相同。
为此,DannyQuist和ValSmith提出了使用LDT的检测方法4。
LDT检测方法和IDT的方法类似,但是它在具有多个CPU的环境时检测的表现非常好。
总的来说,这类方法简单有效,通用性强,虚拟机实现不能避免此类差异。
3.2利用相对性能的检测方法该方法通过选择一段经过精心设计的代码,通过比较该代码在真实物理主机和目标主机上运行的相对时间来判断是否存在虚拟机。
当然,为了进行这种比较,该方法依赖于先前获取的各种配置情况下的物理主机上代码的执行时间,同时,假定能够通过某些方法(如硬件配置探测技术)获取目标主机的配置,通过在目标主机上执行选择的代码获得需要的执行时间。
JasonFranklin等人就使用了这种思想,他们提出的方法不需要获得目标主机的精确配置,因此,JasonFranklin称他们所使用的方法为FuzzyBenchmake7方法。
实验证明,该方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟机 检测 技术研究