一种硬件辅助虚拟化环境核心检测方法及系统技术方案

技术编号:32883272 阅读:21 留言:0更新日期:2022-04-02 12:17
本发明专利技术涉及一种硬件辅助虚拟化环境核心检测方法及系统,其方法包括:S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同的返回值,根据返回值,从而判断虚拟化环境是否存在;S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据Cache组的驱逐情况,从而判断虚拟化环境是否存在。断虚拟化环境是否存在。断虚拟化环境是否存在。

【技术实现步骤摘要】
一种硬件辅助虚拟化环境核心检测方法及系统


[0001]本专利技术涉及信息安全
,具体涉及一种硬件辅助虚拟化环境核心检测方法及系统。

技术介绍

[0002]软件分析技术包括静态分析和动态分析。静态分析通过对可执行程序进行反编译等操作从而获取待分析软件的反汇编代码,通过分析反汇编代码进一步分析软件逻辑和特定行为。静态分析不需要实际地运行程序,因此是一种非常方便快捷的软件分析方法,但是对于加固软件的分析比较难以处理,同时有些运行流程静态分析无法解析。动态分析则通常借助于虚拟化技术在隔离环境中实际地运行程序,通过不同的输入得到不同的执行路径,分析运行分支和结果来解构软件的执行逻辑。通过不断地调整输入,可以比较完整地了解待分析软件的内部执行逻辑,但是高级的软件会在发现被动态分析时刻意隐藏自身行为,从而对分析结果产生误导。许多软件为了防止被破解或分析,都会进行不同程度的混淆或加固,并且通常需要对运行环境进行检测,以便规避动态分析,及时隐藏自身行为或终止运行。因此,如何判断程序是否运行在用户虚拟机内还是本地裸机OS环境中,成为一个亟待解决的问题。

技术实现思路

[0003]为了解决上述技术问题,本专利技术提供一种硬件辅助虚拟化环境核心检测方法及系统。
[0004]本专利技术技术解决方案为:一种硬件辅助虚拟化环境核心检测方法,包括:
[0005]步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VM Exit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;
[0006]步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在;
[0007]步骤S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;
[0008]步骤S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据所述Cache组的驱逐情况,从而判断虚拟化环境是否存在。
[0009]本专利技术与现有技术相比,具有以下优点:
[0010]1、由于传统虚拟化检测主要基于Hypervisor实现时在虚拟机上呈现的一些指纹痕迹,但是这些指纹容易被Hypervisor更新移除;而且现在主流的Hypervisor实现几乎都建立在硬件辅助虚拟化加速之上,隔离性更强且虚拟化指纹更少。为了解决该问题,本专利技术公开了一种硬件辅助虚拟化环境核心检测方法,建立在硬件辅助虚拟化扩展和微架构特征
基础之上,不依赖于Hypervisor本身痕迹,因此不容易规避或移除。
[0011]2、本专利技术可以根据用户程序所能拥有的不同权限选择不同的模块,适用性更广,可扩展性更高。
[0012]3、本专利技术利用基于PP技术的虚拟化检测,只依赖于虚拟环境SLAT的性质,因此不仅适用于硬件辅助的全虚拟化环境,同时还适用于半虚拟化或沙箱环境。
附图说明
[0013]图1为本专利技术实施例中一种硬件辅助虚拟化环境核心检测方法的流程图;
[0014]图2为本专利技术实施例中CD位在置位前后访存示意图;
[0015]图3为本专利技术实施例中L2C驱逐检测示意图;
[0016]图4为本专利技术实施例中一种硬件辅助虚拟化环境核心检测系统的结构框图。
具体实施方式
[0017]本专利技术提供了一种硬件辅助虚拟化环境核心检测方法,具有更广的适用性和扩展性,同时由于基于底层的硬件辅助虚拟化扩展和微架构特征,因此具有更好的检测稳定性。
[0018]为了使本专利技术的目的、技术方案及优点更加清楚,以下通过具体实施,并结合附图,对本专利技术进一步详细说明。
[0019]为了更好地理解下述实施例,对所用技术以及部分名词缩写的解释如下:
[0020]系统虚拟化技术在云环境和本地环境中广泛使用,不但极大地提高资源的利用率,也提供了一个和宿主机系统隔离的虚拟化运行环境。典型的虚拟机管理器开源的如KVM,Xen等,商业闭源的如HyperV,VMware Workstation等,虚拟机管理器也叫作Hypervisor。由于硬件辅助虚拟化机制提供对虚拟化的硬件支持,基于硬件辅助的全虚拟化技术提供更好的安全隔离防护和更高的性能。Intel VT

x,AMD

V和ARM Virtualization等都提供硬件辅助虚拟化的支持。
[0021]基于CPU Cache侧信道计时攻击是侧信道攻击领域广泛利用的一种攻击形式,攻击者通过计时受害者程序访问特定区域内存映射的共享Cache的访问时长,利用访问时长的差异,间接地推断出受害者的内存访问模式,从而获取受害者的机密代码或数据。PP是一种典型的进行Cache侧信道的攻击技术,主要分为三步:攻击者构建驱逐集,访问驱逐集中的对应的内存以填充特定的一个或多个Cache组;然后等待预定的时间,以便受害者访问映射到相同Cache组的内存;攻击者再次读取自己填充的Cache组对应的内存,测量并分析读取Cache组对应内存的访问时间。
[0022][0023]实施例一
[0024]如图1所示,本专利技术实施例提供的一种硬件辅助虚拟化环境核心检测方法,包括下述步骤:
[0025]步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VM Exit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;
[0026]步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据返回值,从而判断虚拟化环境是否存在;
[0027]步骤S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;
[0028]步骤S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据Cache组的驱逐情况,从而判断虚拟化环境是否存在。
[0029]本方法实施例中综合利用处理器的硬件辅助虚拟化机制和微架构特征,考虑检测程序可拥有的权限,根据不同的权限提供不同的检测方式,并且可以方便地进行集成。当检测程序只拥有普通权限时,基于VMCALL虚拟化扩展指令主动地进行VM Exit,向Hypervisor中Hypercall处理函数发送调用,从而获得调用结果。当检测程序可申请特权权限时,可以根据实际情况调用VMCALL特权级检测,CR0特权级检测和L2C特权级检测,从而获得调用结果。通过分析调用结果,从而确定检测程序运行在用户虚拟机内还本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种硬件辅助虚拟化环境核心检测方法,其特征在于,包括:步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在;步骤S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;步骤S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据所述Cache组的驱逐情况,从而判断虚拟化环境是否存在。2.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在,具体包括:当检测程序拥有普通权限对VMCALL操作时,在本地环境中主动地调用VMCALL会引发硬件异常,从而导致程序出错;而在虚拟化环境中调用VMCALL时可以顺利执行,并且经过VMExit陷入到Hypervisor之后可获得默认返回值,根据所述默认返回值,从而判断虚拟化环境是否存在。3.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递不同参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在,具体包括:当检测程序拥有特权权限对VMCALL操作时,在调用VMCALL指令时在虚拟寄存器上附上特定的参数值,根据不同的所述参数值调用不同的Hypercall处理函数,并得到不同的返回值;当所述检测程序运行在本地环境时,由于指令的不兼容会导致错误,无法获得返回值;根据所述返回值,从而判断虚拟化环境是否存在。4.根据...

【专利技术属性】
技术研发人员:王鹤郑超任军帅杨倩王建凯陶小结
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1