APP下载

基于VMware的反虚拟机环境检测技术研究

2016-05-14朱永强汤雄

软件导刊 2016年7期
关键词:虚拟机

朱永强 汤雄

摘要:VMware虚拟机因其良好的用户体验及便捷的功能,被广泛应用于云计算平台搭建、恶意代码分析等技术领域。因此,部分恶意代码专门增加了VMware环境检测功能,以发现自身是否运行在VMware虚拟环境。针对恶意代码在VMware环境下的虚拟环境检测技术,分析了VMware虚拟机环境的检测原理及优缺点,提出了一套VMware环境下的反虚拟环境检测方法,以欺骗恶意软件的VMware环境检测功能,提升基于VMware仿真的恶意代码分析准确性。

关键词关键词:VMware;虚拟机;虚拟机环境检测;虚拟机穿透

DOIDOI:10.11907/rjdk.161300

中图分类号:TP309文献标识码:A文章编号文章编号:16727800(2016)007017003

基金项目基金项目:科技部科技型中小企业创新基金项目(10C26215122841)

0引言

虚拟化技术是指通过分割计算机硬件资源(如CPU、内存、辅存等),使得一台物理机上可以运行多个操作系统环境,从而提供更灵活高效的硬件资源分配技术。该技术最早由IBM在20世纪60年代初实现。虚拟化技术发展到今天,出现了多种虚拟化平台,如XEN、KVM、VMware等。其中,VMware由于良好的性能及便捷的功能支持得到了广泛应用。

由于带有快照还原功能以及物理隔离功能,虚拟化技术对恶意代码分析人员是非常有用的工具,可以在保护本机不受侵害的情况下,对恶意代码的实际行为进行有效的监控,并且可以通过快照功能讯速恢复系统,因此,此技术的博弈也随之展开[1]。一些恶意代码编写人员在其恶意程序中加入虚拟环境检测功能,一旦程序发现自身处于虚拟环境中,则可能休眠或者改变行为策略,甚至破坏虚拟机环境[2]。因此,在利用虚拟机进行恶意代码分析的同时,了解恶意代码的虚拟环境检测技术并对其检测功能进行防范,是信息安全工作人员重要工作之一。

本文针对常用的虚拟化平台VMware,分析并总结了VMware平台下常用的虚拟环境检测技术原理及相应工具,在此基础上,提出了一套VMware环境下的反虚拟机环境检测策略,用以提高虚拟机环境下恶意代码分析的准确性,探讨了该领域未来的发展趋势。

1基于VMware的虚拟机环境检测技术

本节基于VMware平台,归纳并总结了VMware虚拟机环境下常用的虚拟环境检测技术原理[26],并介绍了相应工具。

1.1基于字符特征的VMware环境检测方法

由于VMware环境只是实现了对硬件的虚拟,并没有真正实现对硬件与操作系统的完整仿真。因此,VMware虚拟机的进程、文件系统、注册表中包含很多VMware的特殊标识,比如VMware虚拟机系统信息的制造商显示为VMware Inc.,而非真实的计算机制造商。在VMware虚拟机操作系统的注册表内,也有一些带有VMware特殊表示的键值,比如在虚拟操作系统WindowsXP中的注册表项中,包含有名称为_#VmwareVirtualPrinter的键,而真实的操作系统中并不存在此键。此外,据统计,VMware环境下有超过50个包含“VMware”和“vmx”的引用存在于文件系统中,有超过300 个包括“VMware”的引用存在于系统的注册表中。

针对这些差异,可以收集这一类出现在特别位置的“特征字符串”,形成针对VMware环境的指纹库,并通过字符串搜索与匹配的方式,实现对VMware虚拟机环境的检测。

但该方法存在以下缺陷:①这些特征字符串的分布不具有通用性,较难形成通用的、系统的检测理论;②暴力搜索方法不仅性能较低,还会造成较高的误报;③这种方法也可以通过Rootkit等技术[7]进行欺骗。

1.2基于虚拟硬件的VMware环境检测方法

VMware环境下虚拟出的硬件也往往包含有特殊特征,使其成为检测VMware环境的检测因素之一。VMware环境下,其网卡的Mac地址的前24位往往是00-0C-29、00-05-69或00-50-56 ,此外,VMware VGA 适配器、USB 控制器的类型、SCSI设备的类型往往都包含有VMware 特定的标记。概括来说,此方法一定程度上也属于基于特征字符串的检测方法。

Tobias Klein实现的工具DOO就是利用搜索虚拟环境下特殊的虚拟硬件标识来检测虚拟机环境。DOO工具在Linux环境下主要搜寻I0、port以及SCSI等相关目录下的“VMware”特征串,而在Windows下则重点搜索注册表中SCSI适配器和VMware硬件类号的键值。

1.3通过特殊指令特征检测VMware环境的方法

使用特殊指令SIDT、SLDT与SGDT等与返回值差异性的检测方法对比,其依据的原理为此类指令的返回值,在虚拟机环境与真实操作系统环境中有着较大差别。通过获取寄存器基值,观测它是否超过某一传统阈值,即可判断是否处于虚拟机环境。

以SIDT指令为例,此指令用来获取中断描述表(Interrupt Descriptor Table)的位置,IDT在VMware环境的寄宿系统中一般位于在附近,而在实际操作系统中,一般位于附近,对比这种差异性,即可判断程序是否运行在VMware虚拟机中。

该方法的缺陷:①SIDT在多处理器环境下容易误报,相比较之下,SLDT在多处理器环境下的效果要好些;②VMware环境下开启禁止加速模式后,VMware虚拟机会对ring3 层指令进行二进制翻译,因此在此模式下对此类指令进行干预会使检测方法失效。

1.4通过VMware穿透信道检测VMware环境的方法

为了保证虚拟机系统的性能与易用性,往往会牺牲一些虚拟机环境对Guest OS的透明性,比如VMware提供的 communication channel功能,此功能用来实现主机与客操作系统之间的穿透与通信,以提供VMware对GUI性能的优化,主操作系统与客操作系统之间的剪切板、文件拖动等功能,为VMware虚拟机环境识别提供了可能。

VMware 通过拦截I/O 的IN 指令来实现虚拟机穿透功能。由于IN 指令属于特权指令,因此当运行在ring3 上的操作系统执行IN 指令时,系统会产生一个异常,而运行在虚拟机中的客操作系统则不会产生。如果程序运行在VMware 之外,则会抛出一个处理器错误,利用此原理,即可检测程序是否运行在VMware虚拟机环境中。

该方法缺陷为:使用的通信信道是VMware的高级功能,并不是必需功能,因此关闭此功能后,这种检测方法将失效,而此功能关闭本身却不会对VMware虚拟机的使用产生过大影响。

2基于VMware环境的反虚拟机检测

根据前文对VMware虚拟机环境检测技术的分析,总结了一组VMware环境下的反虚拟机环境检测方法[26],以防止恶意代码对虚拟机环境的有效检测。

2.1反特征字符串检测VMware环境方法

反特征字符串检测VMware环境方法主要是获取操作系统特定位置的参数值,再通过对这些参数值进行特征串匹配来完成虚拟机环境的检测。通过以下手段根据具体应用情况进行反虚拟环境检测:①利用Rootkit技术隐藏这些特征字符串痕迹,使其不被发现;②通过Hook 技术钩挂系统文件、进程、注册表、服务等的查询函数也可以有效躲避此种检测方法。

2.2反虚拟硬件检测VMware环境

VMware环境下,虚拟硬件的各类参数可以便捷地通过配置文件重新设定修改,因此对基于虚拟硬件特征的虚拟环境检测可通过以下方式进行反检测:①通过修改VMware配置文件,修改虚拟硬件配置参数,如MAC地址;②修改敏感部位的注册表键值,将带有VMware标识的键值抹去或者修改。

基于SIDT、SGDT、SLDT等特殊指令对VMware环境进行检测的防范措施有:

(1)在VMware环境下开启禁止加速模式,再通过代码对此类指令的返回值进行干预。

(2)通过Hook技术对SIDT、SGDT、SLDT等指令挂钩,一旦发现可疑程序调用这些指令,则自动将相应的寄存器和内存地址修改为真实操作系统的合理地址,以达到欺骗虚拟检测程序的目的。

2.4反穿透信道检测VMware环境

通过修改VMware虚拟机相应的配置文件,可以禁止虚拟机与物理机之间的穿透指令,以预防针对VMware穿透指令的检测。

关闭VMware穿透信道的配置选项如下[3]:

设置了这些参数会关闭VMware 相应的一些功能, 但这些功能在进行恶意程序分析与仿真时并不是必须功能,一般不会对恶意代码的分析与研究工作造成影响。

3结语

本文针对VMware虚拟机环境,分析了该环境下常见的虚拟机环境检测技术及对应的检测工具,并在分析各种检测技术原理与缺点的基础上,提出了一组VMware下反虚拟机环境检测方法,以提高利用VMware虚拟机进行恶意程序仿真时的准确率。由于虚拟机环境可检测的根本原因是虚拟化系统本身为提升性能与效率,造成虚拟化系统对客操作系统的不透明性。因此,该技术领域除了虚拟机环境检测与反检测的技术博弈外,如何加强虚拟机环境本身的安全架构,降低虚拟化系统本身的不透明,也是该领域的一个重要研究方向。

参考文献:

[1]卢勇.反病毒虚拟机的研究与实现[D].成都:电子科技大学,2007.

[2]PETER FERRIE.Attacks on more virtual machine emulators[J].Symantec Advanced Threat Research,2007(4):126129.

[3]杨峰,姜辉,诸葛建伟,等.虚拟机环境检测方法研究综述[J].小型微型计算机系统,2012,33(8):18301835.

[4]马晨,周城,赵丽华.VMware虚拟机检测技术研究 [J].电脑知识与技术,2011, 7(11):27002702.

[5]王宝林,杨明,张永辉.虚拟机检测技术研究[J].计算机安全,2009(12):13.

猜你喜欢

虚拟机
虚拟机技术在计算机组装课堂中的应用
虚拟机服务器在教学实践中的探索研究
浅谈计算机系统虚拟化网络设置方案
任务驱动教学法在《网络应用服务管理》教学中的应用
虚拟机局域网组建技术应用初探