干货分享-针对硬件虚拟化的虚拟机过程代码分页测量方法
来源:原创 时间:2018-02-26 浏览:0 次计算机操作系统的敏感数据、应用程序的破坏,甚至是对主机进程代码的修改,以掩盖它们的存在,严重威胁着关键业务的稳定性,而云虚拟化技术是云计算平台的核心技术之一。随着云计算平台信息的安全。【3】指出云服务提供商必须大量应用自己的安全服务,而云计算平台的安全性成为人们关注的焦点。因此,在虚拟机中,云环境中的关键业务需要长期稳定运行,度量用户进程代码的完整性,通过恶意计算来检测它是否发生了变化,并提供高质量的服务。安全性和可用性是确保服务质量的关键。
由国家标准协会和其他重要角色发布的“完全虚拟化安全指南”指出传统的基于主机的监控系统是由恶意软件托管的。安全威胁也适用于云计算环境中的虚拟机。很容易被绕过或攻击,如hooka141,等虚拟业务程序部署在虚拟机上,一方面,虚拟机操作系统的存储技术的发展不仅提高了资源的利用率,但也带来了一些缺陷,如代码的漏洞或不合理的内部配置的安全性研究。另一方面,商业项目有了新的想法:在参考文献[5-8],也有在虚拟体代码的安全漏洞。
指出,等等,如能偷独立,强大的控制和高特权级,等等。在虚拟机外部,虚拟机内省(VMI)9用于获取虚拟机的内部信息,该虚拟机可以监视虚拟机中的进程。解决遇到的问题在传统的基于主机的检测过程,完整性验证过程一般由两部分组成:测量部分负责采集信息系统内发送给验证部分,和验证的一部分,负责保存原有的基础价值。并与接收的测量信息进行比较,验证其完整性。
在云环境下虚拟机系统的测量方法中,根据测量部分的部署位置,可分为两类:(1)在虚拟机中部署测量部分,并将测量部分部署到虚拟机管理系统中。第一种方法通过捕获虚拟机内的进程行为获取系统信息并将其发送到验证部分。
这种方法可以获得丰富的虚拟机系统信息,但主要有以下几个方面的原因:1)依赖日标准虚拟机的版本,使得虚拟机内部的恶意软件攻击的脆弱性不够普遍,这就要求Hypervisor提供额外的保护措施。第二种方法是完成在虚拟机之外获取信息风险证书的过程,例如参考[12-14],其中Ivin 2通过Xen提供的EControl和Xenstore接口在虚拟机之外执行地址转换和内容定位。将虚拟机代码逐页复制到特权用户可访问的存储空间,以进行完整性验证。该方法不需要修改虚拟机,克服了在虚拟机中部署测量部分的缺点。但是它也面临着:VMM层和虚拟机之间语义鸿沟的挑战。
2)现代操作系统按需分配物理内存。在某种程度上,进程代码的一部分被加载到物理内存中。由于其物理地址空间不一定是连续的,因此很难在WMM层中获得完整的虚拟机进程代码。例如,VITDay需要确保虚拟机进程代码加载到内存中,当代码段非常大时,此实现将给上述问题带来严重的内存消耗。
提出了一种基于硬件虚拟化的虚拟机进程代码分页测量方法。将虚拟机寻呼测量系统KⅤM5作为虚拟机监控器,利用VMM层的虚拟路径行为作为测量过程的触发点,实现对运行过程的动态测量。在相对地址偏移法的基础上,对虚拟机中的进程语义进行重构,以解决不同版本虚拟机之间的语义差异,并提出了一种基于页面的度量方法来验证虚拟机外部进程代码段的完整性。验证VMM的完整性,不需要修理。
KVM是一个基于硬件辅助虚拟化的Linux内核模块.。它的实现需要Intel VT(Virtualization Technology)或AMD SVM(Secure VirtuMachine)技术的支持才能在根模式下运行。管理虚拟机内存和CPU,处理由异常或执行特权指令引起的VM退出事件。
同时,KVM采用MCS 2(虚拟机控制结构2)在主机与虚拟机切换时保存硬件上下文环境,并能指定引发ⅤM退出的事件,ⅤMPM是基于虚拟机中的系统事件。主动触发虚拟机进程代码片段的度量VMPMS@有三个模块:捕获模块、进程代码段。捕获模块负责捕获虚拟机进程,采用系统调用事件c获取虚拟机进程信息。例如,进程名称、开始地址和结束地址等。根据语义重构模块传递的过程信息,根据虚拟机的物理页面大小对进程代码段进行划分。度量已加载到物理内存中的代码页,根据基值库中的基值验证其完整性,将比较结果写入Person日志;对于尚未加载物理内存的代码页,暂时忽略其度量,直到在测量之前将其加载到物理内存中。
基值库保存虚拟机进程代码中每页的度量值,可以以文件、数据库等形式存在。日志用于记录度量模块的代码页度量信息和基值库中的基值信息。P2 VMPMS实现了2.1捕获模块捕获模块来捕获虚拟机中的系统事件。根据虚拟机寄存器和虚拟机引起的其他状态的变化,得到底层语义。系统事件是虚拟机系统中可能导致虚拟机退出的进程行为。
本文对虚拟机中进程的系统调用进行了截获。在X86架构下,当操作系统中的进程需要进行系统调用时,首先将系统调用号保存到EAX寄存器中。然后将用户状态转换为内核状态,并通过系统调用保存进程上下文。
以32位操作系统为例,当它使用sysenter指令执行系统调用,系统读取存储在msr_la32 sysenter EIP登记的系统调用入口函数的地址。据ⅤMPMS,系统调用拦截机制的基础上,msra32 sysenter EIP登记实施。启动虚拟机加载内核镜像后,vmpms初始化msr_ia32 sysenter EIP登记价值在VMM层非法地址。当原始地址被保存时,当虚拟机进程执行系统调用时,由于非法地址访问,将抛出页错误异常,并且VM退出将落入mm层以触发其处理流程。如果由于页错误的异常而退出,则它确定当前虚拟机的“企业界”寄存器的值是否是一个非法的初始化地址,如果是的话,虚拟机退出,因为系统调用被拦截,然后启动测量当前进程的进程。
在完成测量之后,系统调用入口函数的截取地址被加载到虚拟机。执行ⅤM进入恢复虚拟机系统调用正常执行流程。对于不需要处理的页面故障,将其注入到虚拟机中,按照原进程正常执行,避免了额外的性能损失。在KVM虚拟机平台的系统调用拦截原理。默认情况下,虚拟机内产生页故障异常是由虚拟机内核本身的处理,和VM退出陷阱不生成到公里,所以在MCS的Excel _ bitmaf场需要设置。
虚拟机的页面故障可以抛出v退出。英特尔正式定义页面错误。页面故障有五种:位异常、读写异常、模式异常,硬件错误控制单元将生成硬件错误代码,并在处理页面丢失异常之前将其压入内核状态堆栈。造成异常的原因是不同的,硬件错误代码是不同的。它存储在页错误错误代码字段中。
如果仅在PFEC硬件错误代码满足公式1的关系,pwgeault生成的虚拟机将导致我出口被设置apfec PFEC面膜= PFEC而maskback pfecmask设置)和页面错误代码页面错误代码匹配pfecec_两场比赛_比赛只有参考发生在虚拟机。异常产生的原因陷入Ⅴ毫米,过滤2。对于缺页异常2语义重构VMM位于虚拟机底部已获得在目标虚拟机的存储二进制数据的更高的权限。然而,两者之间存在语义鸿沟,而MM们也不知道这些数据的具体含义。语义重构模块利用捕获的虚拟机底层语义和内核数据结构获取高级语义。
[ 23 ] VMON将内核虚拟机的操作系统和硬件虚拟化技术的源代码。虚拟机过程的许多版本可重构的语义信息,但VMON是在访问虚拟机内核版本或内核源代码的情况下的限制使用。本文提出了一种基于相对地址偏移的语义重构方法,利用测试模块获得了进程描述符与其内部属性之间的相对地址偏移量。在虚拟机上的进程描述符的信息可以得到灵活和VMON改进方法。
在虚拟机的测试模块,因为进程描述符元素连续存储在内存中,相对地址偏移量元素之间保持不变,所以访问进程描述符地址之间的差异是其内在属性的相对地址偏移地址,这种方法只需要运行一次获得相关的偏移,是普遍的,可与各种虚拟机内核版本兼容。为了获得PID中的进程描述符属性,举例来说,编写任务状态段的原理。Linux操作系统为每个CPU(任务statesegment,TSS),(任务登记,TR任务登记)的保存地址。
操作系统的进程调度,内核将内核堆栈存储在csp0当前进程在TSS域指针。TR虚拟机登记价值,收购获得的TS,esp0,是当前进程的内核栈顶单元地址和客人的ESP线程和线程信息计算第一地址结构、任务字段指向的进程描述符;获取进程的描述符地址,结合偏移测试模块出发,通过公式(2)可以用PID地址的物理性质得到,访问地址和内容任务地址+偏移memaddr3分页操作系统动态测量的其他属性,使用页表来完成虚拟地址到物理地址的映射和转换过程。
在开放式分页机制中,操作系统通过“按需加载”的方法来对物理页进行物理内存的分配。在物理内存资源,操作系统的页面到磁盘的物理内容的书面部分,因此在运行一个滚动力矩的过程中,所有的代码页的过程并不全是载人在物理内存中,2在一个磁盘文件或内存交换虚拟化在国内和国外,也可能存在,客户端操作系统的虚拟机的用户看到的物理地址空间,为了正确地访问内存的客户端虚拟地址(虚拟地址,GVA)到主机物理T(主机物理地址,HPA),映射过程gva物理地址到客户端显示(客户机物理地址,GPA)转换表是由客户端页面完成,支持扩展页表(扩展PAG电子表,EPT)机制,GPA虚拟主机地址(主机虚拟machineh V)的线性映射是一对一的,苏所在页表来完成转换的HVA HPA,可见在虚拟机连续存储在内存中的地址映射到主机不一定是连续的。
如果在一个访问虚拟机的完整代码段的WMM层量需要在内存中,不在内存中获取。一个代码页,并以“放在一起”的方式,是非常复杂和庞大的内存消耗的基础上,本文提出的方法来衡量完整的分页过程中的虚拟机代码验证在mm层。
产生页面异常故障后重构KVM语义的当前运行的程序代码的起始地址和结束地址vmpms虚拟机系统调用拦截过程中,虚拟机的物理页大小的单位,将顺序代码段中的代码页按照度量操作。对于一个给定的KVM的代码页,首先确定它是否被加载到物理内存,如果使用SHA-1哈希算法测量的操作,并将测量图书馆价值的基页与基准值进行比较,并将结果写入一个日志文件;如果代码页中没有装入物理内存,这是错误的机器尚未执行的代码页的时间量,然后忽略的措施,再次被加载到内存的数量。V MPMS捕捉过程中系统调用的触发点测量过程中测量的时间和执行时间,实现KVM虚拟机代码的过程的动态测量。
基本值是进程在纯状态下获取的代码段页面的度量,并存储在基本值库中,比较虚拟机进程代码段的动态度量,验证其完整性。在本文中,我们使用的测试在第一次当虚拟机程序代码页被加载到内存中Ⅴ毫米层动态完整的基值图书馆建立的基础价值。使用的Ⅴ毫米层强大的隔离和高特权升级基础价值库的安全性分析,验证了采用3 vmpms衡量虚拟机进程的代码完整性。3基本值库的测试与分析。对目标进程和虚拟机操作系统的性能消耗进行了评估,并与现有的部分完整性度量方案进行了比较。
测试环境如下:主机操作系统是64位ubuntu-12.04,内核版本。The CPU version of the host is Intel Core i3-4160, the main frequency is 3.60 GHz, physical memory is 4 GB, and the hardware aided virtualization is supported. 虚拟机是一个32位centos6.5操作系统。Linux - 1功能测试函数测试的内核版本分为两个步骤:1)通过修改源代码来模拟正常的虚拟机进程代码段,以模拟对进程的攻击,并测量修改后的进程代码段。为了验证其完整性被打破vmpms可以用来衡量所有的虚拟机的流程。
为了说明,本文有一个版本的Apache服务器软件的作用在虚拟机中。它作为一种测量对象。Apache服务过程使用sysenter指令执行系统调用引起页故障异常陷入KVM KVM,然后得到它的名字和代码段的地址,为了解决虚拟机的过程是不连续的和动态交换出物理内存的问题,这是很难衡量的WMM层虚拟机过程完整的代码段。在本文中,寻呼度量验证透明,在VMM层实时运行进程的代码段在虚拟机的完整性。
此外,还实现了基于相对地址偏移的虚拟机进程信息获取方法。实验结果表明,本文实现ⅤMPMS可以有效地验证测量过程的代码被篡改的VMM层。在性能方面,性能损失所带来的vmpms对测量过程和虚拟机系统可以在范围内。同时,本文也存在一些不足:1)本文以系统调用行为更多的作为测量过程的触发点,利用测量时间机器和过程行为实现虚拟机过程的动态测量。
然而,这种方法会带来一定的性能损失。本文针对未涉及Windows的linux虚拟机操作系统进行了研究。下一步将减少而实现代码完整性验证vmpms引起的性能损失;进一步提高MPM通用性是不同的虚拟机操作系统。