一种基于硬件虚拟化的模块化计算机取证系统及其方法转让专利

申请号 : CN201410202898.0

文献号 : CN104021063B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 伏晓程盈心骆斌杨瑞阮豪

申请人 : 南京大学

摘要 :

一种基于硬件虚拟化的计算机模块化实时取证系统及其方法,包括初始化驱动、系统控制中心、系统支持模块组和取证功能模块组;本方法基于硬件虚拟化技术,在操作系统运行时通过初始化驱动搭建轻量化虚拟机,并在系统控制中心提供硬件虚拟化平台的支持和所有子模块的管理;系统支持模块组为取证模块组提供所有基础功能的支持;本方法规范了取证功能模块组的接口,支持模块的复用和扩展,使取证工具能够关注核心功能,减少大量重复工作;本发明不修改目标操作系统的任何代码,性能损耗低,内存占用少,建立了一个安全可信的实时取证基础平台,为各类基于虚拟化的取证工具的实现提供了便利。

权利要求 :

1.一种基于硬件虚拟化的模块化计算机取证系统的取证方法,其特征在于:包括初始化驱动、系统控制中心、系统支持模块组和取证功能模块组;取证系统为各取证工具的实现提供便利,各取证工具即为取证功能模块组的各模块,由系统控制中心统一管理,其中,取证系统的基础支持功能可以通过增加系统支持模块或修改现有的系统支持模块实现扩展;

所述初始化驱动用于在运行的操作系统中部署和卸载取证平台,并在初始化过程完成后将控制权交给系统控制中心;

所述系统控制中心提供硬件虚拟化平台支持,控制初始化过程和卸载过程,以及对硬件虚拟化平台截获的目标操作系统的事件进行预处理、并提供给取证功能模块组;

所述系统支持模块组基于系统控制中心实现系统的基础功能,包括为SMP系统提供多核间的信号传播功能的信号模块、外部控制模块、监视目标操作系统的内存行为的内存虚拟化模块、和实时获得操作系统中的重要证据的虚拟机内省模块;

所述取证功能模块组由若干个取证模块组成,为所需监视的事件提供事件响应接口来跟踪系统状态和收集证据,并在取证平台的支持下完成初始化、卸载和外部控制;

具体步骤如下:

步骤一、启动阶段,初始化驱动向目标操作系统请求分配内存,逐CPU开启虚拟机模式,配置硬件相关的虚拟机控制数据结构,即复制当前操作系统的各寄存器和运行状态配置到虚拟机中;原CPU控制权限转由系统控制中心接管;

步骤二、运行阶段,支持硬件虚拟化的硬件平台根据系统控制中心的配置自动截获虚拟机中产生的硬件事件,即控制流陷入虚拟机监视器;事件由系统控制中心预处理后,继续被分派给对应注册的取证功能模块处理,最后再返回客户虚拟机;

对于硬件事件,所述系统控制中心预处理的具体步骤如下:

系统中各模块通过系统控制中心配置硬件虚拟化的硬件数据结构,保证只有取证平台关心的事件才会触发虚拟机的陷入;

(1)当目标操作系统的控制流陷入到虚拟机监视器时,系统控制中心首先将硬件事件注册成逻辑事件;

(2)系统控制中心首先判断步骤(1)中所述逻辑事件是否为虚拟机异常及错误事件,若是,则强制关闭发生错误的功能,如果强制关闭的功能无法恢复,则向串口报告错误信息;若不是,则进入步骤(3);

(3)系统控制中心将逻辑事件分发到对应注册的取证功能模块的事件响应处理接口中处理;

其中,由硬件事件注册后的外部控制事件,预处理的具体步骤如下:系统控制中心将外部控制事件分发到外部控制模块,外部控制模块解密外部控制事件中的控制信息,若符合定义好的格式,则转发到对应注册的取证功能模块的控制接口中处理;若不符合定义好的格式,则丢弃,不产生任何行为;

所述取证功能模块处理,具体为:调用内存虚拟化模块接口监视目标操作系统的内存行为,调用信号模块将控制信息传播给其他CPU,使用虚拟机自省模块实时获得操作系统中的重要证据,或者调用其他取证模块提供的接口获得对应功能;

步骤三、卸载阶段,初始化驱动通知系统控制中心卸载,系统控制中心先卸载取证功能模块、再卸载系统支持模块组,然后将CPU控制权限交还目标操作系统,最后初始化驱动归还步骤一中分配的内存,并完成卸载。

2.根据权利要求1所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述步骤一启动阶段的具体步骤如下:(1)初始化驱动向操作系统请求分配内存,被分配的内存在整个取证平台生命周期中不归还;

(2)系统控制中心初始化内存管理系统,同时记录所有内存分配情况,搭建虚拟主机的页表结构,建立从主机线性地址到物理地址的映射;

(3)系统控制中心先调用系统支持模块组中各模块的初始化接口对各模块进行初始化,再调用取证功能模块组中各模块的初始化接口对各模块进行初始化;

(4)初始化驱动逐CPU检查硬件平台对硬件虚拟化的支持情况并保存,开启虚拟机模式,配置硬件相关的虚拟机控制数据结构,并将正在运行的操作系统状态复制入虚拟机中;

(5)原CPU控制权限转由系统控制中心接管,即在虚拟机控制数据结构中设置虚拟主机的指令指针寄存器、段寄存器、标志寄存器和描述符表,然后恢复目标操作系统的运行;

(6)判断是否完成所有CPU的虚拟化,如果是,则进入步骤(7);否则返回步骤(4),继续虚拟化下一个CPU;

(7)当所有CPU完成虚拟化后,启动阶段结束。

3.根据权利要求1所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述将硬件事件注册成逻辑事件,具体为:读写控制寄存器事件中的写入CR3寄存器被注册成为程序上下文切换事件,CPUID指令执行事件被注册成为外部控制事件,内存权限事件中的写内存权限违反事件被注册成内存页改动事件。

4.根据权利要求1所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述信号模块将控制信息传播给其他CPU,具体运行步骤如下:(1)调用信号模块接口向其它CPU发送信号;

(2)信号模块记录当前信号值,并向其他CPU发送中断;

(3)其他CPU收到中断后,读取信号值,进行对应的处理,并返回是否成功;

(4)信号模块收集权利要求4中步骤(3)中中断的处理结果,返回给权利要求4中步骤(1)的调用者。

5.根据权利要求1所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述内存虚拟化模块接口监视目标操作系统的内存行为,包含3种不同的运行模式,对应不同的控制模式,具体包含:模式1:关闭模式,即不使用内存虚拟化;

模式2:单一运行模式,即所有核共用一套二级页表,虚拟化模块统一控制内存读写执行权限和从虚拟物理地址到真实物理地址的转换;

模式3:精细运行模式,每个CPU使用独立的二级页表,虚拟化模块分别控制各个CPU核心的读写执行权限和从虚拟物理地址到真实物理地址的转换;

其中,内存虚拟化页表结构是对客户物理内存到真实物理内存的映射,通过解析PCI寄存器获得完整的物理内存布局;在运行时,若内存虚拟化模块由于配置错误产生异常,运行模式自动切换成模式1;

运行模式切换步骤如下:

(1)调用内存虚拟化模块设置内存运行模式;

(2)内存虚拟化模块调用信号模块将内存模式修改信号发送给所有CPU;

(3)当CPU收到信号后,内存虚拟化模块检查设置于当前CPU的运行模式值,然后更新当前CPU的二级地址转换页表;

(4)当所有CPU都成功更新页表后,模式切换设置返回成功;

控制虚拟物理地址到真实物理地址的转换和内存读写执行权限的具体步骤如下:(1)调用内存虚拟化模块指定目标地址的内存读写执行权限或者修改目标地址的物理地址映射;若处于运行模式3,还需要指定目标CPU。

(2)修改对应的页表结构;若是内存读写执行权限修改,则修改目标地址对应页表项的读权限、写权限或执行权限;若是映射修改,则修改目标地址对应页表项的物理地址引用;

(3)调用信号模块向目标CPU发送刷新TLB和页表结构缓存;

(4)当缓存成功刷新后,返回成功。

6.根据权利要求1所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述虚拟机自省模块实时获得的操作系统中的重要证据包括:在事件发生时记录当前操作系统的运行状态,以及当前正在运行的进程行为;具体是:当前硬件正在运行的任务状态段的详细情况、当前运行的代码、当前的堆栈结构和当前进程的详细情况;并辅助取证模块组实时获得操作系统中的数据结构副本作为证据。

7.根据权利要求6所述的一种基于硬件虚拟化的模块化计算机取证方法,其特征在于:所述虚拟机自省模块中的辅助取证模块组实时获得操作系统内的证据,包括操作系统中的静态内容和动态数据结构;所述辅助取证模块组辅助的内容包括操作系统虚拟地址的翻译以及跨内存页数据结构的组装;目标数据结构的获取逻辑由对应的取证功能模块完成,具体运行步骤如下:(1)通过操作系统内核中的静态符号获得根静态数据结构的地址,地址的来源是导出符号表或者使用目标操作系统的驱动编译器;

(2)虚拟机自审模块在虚拟机监视器中直接访问静态数据结构,若是目标数据结构,则将其副本返回给调用的取证模块,若否,取证模块选择该静态数据结构指向的下一个数据结构交给自省模块处理;

(3)自省模块将操作系统虚拟地址交给软件MMU转换,通过该虚拟地址和对应的CR3值,软件MMU使用客户操作系统的页表结构从对应的PTE中获得物理地址;

(4)根据权利要求7中步骤(3)中所述物理地址和符号表中描述的数据结构的大小,对象组装器可以判断出该数据结构是否跨越了页边界,若跨越页边界,则对象组装器自动计算下一个内存页的操作系统虚拟地址,并返回权利要求7中步骤(3);若没有跨越页边界,则对象组装器直接读取物理内存内容,将之前所获得的内存内容组装成数据结构的副本,并进入权利要求7中步骤(5);

(5)若权利要求7中步骤(4)中获得的数据结构的副本不是最终数据结构,则返回步骤(3),继续解析取证模块要求的下一个数据结构;若获得的数据结构的副本是最终数据结构,则将该最终数据结构返回给取证模块。

说明书 :

一种基于硬件虚拟化的模块化计算机取证系统及其方法

技术领域

[0001] 本发明涉及的是一种计算机取证领域的方法,尤其是一种基于硬件虚拟化的计算机模块化实时取证系统及其方法。

背景技术

[0002] 计算机取证的目的是将犯罪者留在计算机的痕迹作为有效证据提供给法庭,打击计算机和网络犯罪。其中一个难点问题是在发生计算机入侵时,如何第一时间获取入侵证据,找到犯罪程序或犯罪者。当前的取证方法主要是基于先获取再分析的方式,即先获取内存镜像,再从镜像信息中重建入侵事件,设法取得证据。这种方法的缺陷之一是内存获取需要大量时间和空间,为保证内存快照的一致性还需停止目标机器的运行,即产生较长的停机时间影响重要机器的正常运行。分析阶段要处理一份完整的内存镜像,也是非常复杂的。另外,由于内存的易失性,无法保证镜像中恰好包含入侵证据,镜像获取和分析的耗时性又导致频繁的基于镜像的证据获取方法难以实施。基于上述原因,当前多数在内核中发生的入侵行为是无法被重建的。
[0003] 硬件虚拟化技术首次在IBM System/370中提出,它的特性保证了运行环境的一致性,即计算机软件在硬件虚拟机下的行为和在机器上直接运行保持一致;保证了VMM能够完全控制虚拟机的资源,包括内存、寄存器、I/O、中断和指令的执行;并保证了高效性,即普通指令的运行不受VMM干扰,能够全速运行。目前在x86架构下支持硬件虚拟化的技术有INTEL的Intel VT-x(2005)和AMD的AMD-V(2006),都已经广泛运用在各类个人电脑和服务器中。大多数商用虚拟化软件如Linux KVM、Microsoft Hyper-V、Xen、VMware等都已支持了该项技术。
[0004] 轻量化虚拟机技术利用了硬件虚拟化提供的便利,可以使用少量代码即可实现一个完整的虚拟化平台。由于轻量化虚拟机精简的代码量,完整性检查可以更加迅速和完全的进行,这保证了虚拟机监视器的安全性。ST King在2006IEEE S&P会议上提出了在运行的操作系统下动态部署一个轻量化虚拟机的方法,证明了轻量化虚拟机具有能够在运行时部署的灵活性和对目标系统的透明性。

发明内容

[0005] 本发明针对现有技术的不足,旨在提供一种基于硬件虚拟化的计算机模块化实时取证系统及其方法,实现了一个轻量化的虚拟机监视器,使取证工具可以直接利用硬件虚拟化技术带来的便利和灵活性,在入侵事件发生时,提供工具进行迅速分析和获取实时证据。本方法能够在支持硬件虚拟化技术的平台上部署,在操作系统运行时构建,而无需停止或重启目标操作系统,无需修改任何操作系统内核代码,具有很高的透明性。本方法利用硬件虚拟机技术,使用信号处理功能、接收外部控制命令、控制客户虚拟机内存和数字证据获取功能,并能够忽略无关的虚拟机管理逻辑,复用已有的取证模块功能,实现重要实时证据的获取。
[0006] 本发明的技术方案是:一种基于硬件虚拟化的模块化计算机取证系统,包括初始化驱动、系统控制中心、系统支持模块组和取证功能模块组;取证系统为各取证工具的实现提供便利,各取证工具即为取证功能模块组的各模块,由系统控制中心统一管理,其中,取证系统的基础支持功能可以通过增加系统支持模块或修改现有的系统支持模块实现扩展。
[0007] 所述初始化驱动用于在运行的操作系统中部署和卸载取证平台,并在初始化过程完成后将控制权交给系统控制中心;
[0008] 所述系统控制中心提供硬件虚拟化平台支持,控制初始化过程和卸载过程,以及对硬件虚拟化平台截获的目标操作系统的事件进行预处理、并提供给取证功能模块组;
[0009] 所述系统支持模块组基于系统控制中心实现系统的基础功能,包括为SMP系统提供多核间的信号传播功能的信号模块、外部控制模块、监视目标操作系统的内存行为的内存虚拟化模块、和实时获得操作系统中的重要证据的虚拟机内省模块;
[0010] 所述取证功能模块组由若干个取证模块组成,为所需监视的事件提供事件响应接口来跟踪系统状态和收集证据,并在取证平台的支持下完成初始化、卸载和外部控制。
[0011] 进一步的,所述系统支持模块组和取证功能模块组中每个模块需要实现或部分实现4组接口,分别是初始化接口、事件响应接口、控制接口、和卸载接口;所述4组接口由系统控制中心统一管理,具体管理方法如下:
[0012] (1)系统控制中心管理各模块的初始化接口,控制各模块的初始化顺序,即初始化驱动时,先初始化系统控制中心、再初始化系统支持模块组、最后初始化取证功能模块,控制初始化的单线程性;
[0013] (2)系统控制中心管理各模块的控制接口,将控制接口注册到外部控制模块中,接受外部控制模块的控制;
[0014] (3)系统控制中心管理各模块的事件响应接口,将事件响应接口注册到各目标操作系统的事件处理函数中;
[0015] (4)系统控制中心管理各模块的卸载接口,控制各模块的卸载顺序,即卸载时,先卸载取证功能模块、再卸载系统支持模块组、最后系统控制中心将CPU控制权限交还目标操作系统。
[0016] 本发明还提供一种基于硬件虚拟化的模块化计算机取证方法,具体步骤如下:
[0017] 步骤一、启动阶段,初始化驱动向目标操作系统请求分配内存,逐CPU开启虚拟机模式,配置硬件相关的虚拟机控制数据结构,即复制当前操作系统的各寄存器和运行状态配置到虚拟机中;原CPU控制权限转由系统控制中心接管;
[0018] 步骤二、运行阶段,支持硬件虚拟化的硬件平台根据系统控制中心的配置自动截获虚拟机中产生的硬件事件,即控制流陷入虚拟机监视器;事件由系统控制中心预处理后,继续被分派给对应注册的取证功能模块处理,最后再返回客户虚拟机;
[0019] 对于硬件事件,所述系统控制中心预处理的具体步骤如下:
[0020] 系统中各模块通过系统控制中心配置硬件虚拟化的硬件数据结构,保证只有取证平台关心的事件才会触发虚拟机的陷入;
[0021] (1)当目标操作系统的控制流陷入到虚拟机监视器时,系统控制中心首先将硬件事件注册成逻辑事件;
[0022] (2)系统控制中心首先判断步骤(1)中所述逻辑事件是否为虚拟机异常及错误事件,若是,则强制关闭发生错误的功能,如果强制关闭的功能无法恢复,则向串口报告错误信息;若不是,则进入步骤(3);
[0023] (3)系统控制中心将逻辑事件分发到对应注册的取证功能模块的事件响应处理接口中处理;
[0024] 对于外部控制事件,所述系统控制中心预处理的具体步骤如下:系统控制中心将外部控制事件分发到外部控制模块,外部控制模块解密外部控制事件中的控制信息,若符合定义好的格式,则转发到对应注册的取证功能模块的控制接口中处理;若不符合定义好的格式,则丢弃,不产生任何行为;
[0025] 所述取证功能模块处理,具体为:调用内存虚拟化模块接口监视目标操作系统的内存行为,调用信号模块将控制信息传播给其他CPU,使用虚拟机自省模块实时获得操作系统中的重要证据,或者调用其他取证模块提供的接口获得对应功能;
[0026] 步骤三、卸载阶段,初始化驱动通知系统控制中心卸载,系统控制中心先卸载取证功能模块、再卸载系统支持模块组,然后将CPU控制权限交还目标操作系统,最后初始化驱动归还步骤一中分配的内存,并完成卸载。
[0027] 进一步的,所述步骤一启动阶段的具体步骤如下:
[0028] (1)初始化驱动向操作系统请求分配内存,被分配的内存在整个取证平台生命周期中不归还;
[0029] (2)系统控制中心初始化内存管理系统,同时记录所有内存分配情况,搭建虚拟主机的页表结构,建立从主机线性地址到物理地址的映射;
[0030] (3)系统控制中心先调用系统支持模块组中各模块的初始化接口对各模块进行初始化,再调用取证功能模块组中各模块的初始化接口对各模块进行初始化;
[0031] (4)初始化驱动逐CPU检查硬件平台对硬件虚拟化的支持情况并保存,开启虚拟机模式,配置硬件相关的虚拟机控制数据结构,并将正在运行的操作系统状态复制入虚拟机中;
[0032] (5)原CPU控制权限转由系统控制中心接管,即在虚拟机控制数据结构中设置虚拟主机的指令指针寄存器、段寄存器、标志寄存器和描述符表,然后恢复目标操作系统的运行;
[0033] (6)判断是否完成所有CPU的虚拟化,如果是,则进入步骤(7);否则返回步骤(4),继续虚拟化下一个CPU;
[0034] (7)当所有CPU完成虚拟化后,启动阶段结束。
[0035] 进一步的,所述将硬件事件注册成逻辑事件,具体为:读写控制寄存器事件中的写入CR3寄存器被注册成为程序上下文切换事件,CPUID指令执行事件被注册成为外部控制事件,内存权限事件中的写内存权限违反事件被注册成内存页改动事件。
[0036] 进一步的,所述信号模块将控制信息传播给其他CPU,具体运行步骤如下:
[0037] (1)调用信号模块接口向其它CPU发送信号;
[0038] (2)信号模块记录当前信号值,并向其他CPU发送中断;
[0039] (3)其他CPU收到中断后,读取信号值,进行对应的处理,并返回是否成功;
[0040] (4)信号模块收集步骤(3)中中断的处理结果,返回给步骤(1)的调用者。
[0041] 进一步的,所述内存虚拟化模块接口监视目标操作系统的内存行为,包含3种不同的运行模式,对应不同的控制模式,具体包含:
[0042] 模式1:关闭模式,即不使用内存虚拟化;
[0043] 模式2:单一运行模式,即所有核共用一套二级页表,虚拟化模块统一控制内存读写执行权限和从虚拟物理地址到真实物理地址的转换;
[0044] 模式3:精细运行模式,每个CPU使用独立的二级页表,虚拟化模块分别控制各个CPU核心的读写执行权限和从虚拟物理地址到真实物理地址的转换;
[0045] 其中,内存虚拟化页表结构是对客户物理内存到真实物理内存的映射,通过解析PCI寄存器获得完整的物理内存布局;在运行时,若内存虚拟化模块由于配置错误产生异常,运行模式自动切换成模式1;
[0046] 运行模式切换步骤如下:
[0047] (1)调用内存虚拟化模块设置内存运行模式;
[0048] (2)内存虚拟化模块调用信号模块将内存模式修改信号发送给所有CPU;
[0049] (3)当CPU收到信号后,内存虚拟化模块检查设置于当前CPU的运行模式值,然后更新当前CPU的二级地址转换页表;
[0050] (4)当所有CPU都成功更新页表后,模式切换设置返回成功;
[0051] 控制虚拟物理地址到真实物理地址的转换和内存读写执行权限的具体步骤如下:
[0052] (1)调用内存虚拟化模块指定目标地址的内存读写执行权限或者修改目标地址的物理地址映射;若处于运行模式3,还需要指定目标CPU。
[0053] (2)修改对应的页表结构;若是内存读写执行权限修改,则修改目标地址对应页表项的读权限、写权限或执行权限;若是映射修改,则修改目标地址对应页表项的物理地址引用;
[0054] (3)调用信号模块向目标CPU发送刷新TLB和页表结构缓存;
[0055] (4)当步骤(3)中缓存成功刷新后,返回成功。
[0056] 进一步的,所述虚拟机自省模块实时获得的操作系统中的重要证据包括:在事件发生时记录当前操作系统的运行状态,以及当前正在运行的进程行为;具体是:当前硬件正在运行的任务状态段的详细情况、当前运行的代码、当前的堆栈结构和当前进程的详细情况;并辅助取证模块组实时获得操作系统中的数据结构副本作为证据。
[0057] 进一步的,所述虚拟机自省模块中的辅助取证模块组实时获得操作系统内的证据,包括操作系统中的静态内容和动态数据结构;所述辅助取证模块组辅助的内容包括操作系统虚拟地址的翻译以及跨内存页数据结构的组装;目标数据结构的获取逻辑由对应的取证功能模块完成,具体运行步骤如下:
[0058] (1)通过操作系统内核中的静态符号获得根静态数据结构的地址,地址的来源是导出符号表或者使用目标操作系统的驱动编译器;
[0059] (2)虚拟机自审模块在虚拟机监视器中直接访问静态数据结构,若是目标数据结构,则将其副本返回给调用的取证模块,若否,取证模块选择该静态数据结构指向的下一个数据结构交给自省模块处理;
[0060] (3)自省模块将操作系统虚拟地址交给软件MMU转换,通过该虚拟地址和对应的CR3值,软件MMU使用客户操作系统的页表结构从对应的PTE中获得物理地址;
[0061] (4)根据步骤(3)中所述物理地址和符号表中描述的数据结构的大小,对象组装器可以判断出该数据结构是否跨越了页边界,若跨越页边界,则对象组装器自动计算下一个内存页的操作系统虚拟地址,并返回步骤(3);若没有跨越页边界,则对象组装器直接读取物理内存内容,将之前所获得的内存内容组装成数据结构的副本,并进入步骤(5);
[0062] (5)若步骤(4)中获得的数据结构的副本不是最终数据结构,则返回步骤(3),继续解析取证模块要求的下一个数据结构;若获得的数据结构的副本是最终数据结构,则将该最终数据结构返回给取证模块。
[0063] 本发明有益效果为:
[0064] (1)本方法使用虚拟化技术克服了当前事后取证方法的缺陷,即不是根据事后的内存镜像去重建证据,而直接在目标机器中监视并截获硬件配置的事件,交给取证模块分析,获取真实的实时证据,最大程度上防止证据在事后丢失或篡改,保证了获取的证据的可信度。
[0065] (2)本发明直接针对数据结构的证据获取大大减少了数据获取量,使取证工具能够基于入侵事件短时间多次获取证据,在host模式中停止目标操作系统的运行保证证据的一致性。
[0066] (3)本方法还克服了虚拟化技术本身的灵活性缺陷,不事先搭建虚拟化平台,而是基于硬件虚拟化技术即时搭建轻量级虚拟机获取最高权限,并将操作系统移入虚拟机中进行监视。使用模块化的设计为取证工具的实现减少了大量的重复开发工作。其模块封装了内部数据,只暴露接口,大大简化了方法的改进的难度,使模块能够被复用。
[0067] (4)本发明虚拟机自省模块能够在虚拟机监视器中获取操作系统中的动态数据结构和静态数据结构,但不修改目标操作系统的运行状态,由于不修改操作系统源代码,不虚拟化额外的硬件设备以及使用了内存虚拟化模块,可以保证本平台对于目标操作系统的透明性,即保障了硬件环境和软件环境的前后一致性,从而保证了收集证据的可信度和准确性。

附图说明

[0068] 图1为取证平台生命周期示意图;
[0069] 图2为取证平台结构示意图;
[0070] 图3为模块结构示意图;
[0071] 图4为取证平台虚拟内存布局示意图;
[0072] 图5为内省模块流程图。

具体实施方式

[0073] 下面结合附图对本发明做进一步的说明。
[0074] 本方法详细运作流程如图1-图5所示。
[0075] 图1所示的为本方法的三个生命周期,包括启动阶段、运行阶段和卸载阶段。初始化驱动用于在运行的操作系统中部署和卸载取证平台。
[0076] 本实施例采用了Intel VT技术,启动时通过初始化驱动获得操作系统的内核权限,调用内存分配函数为虚拟机的运行分配足够空间,配置VMCS结构体来设置整个虚拟机。然后将当前操作系统运行状态复制到Guest-State Area中,并在Host-State Area中配置取证平台的事件处理函数,各描述符表,堆栈和寄存器。最后,控制中心将控制流转入各模块的初始化过程中。这样,在之后的VMLAUNCH指令启动时,整个平台已经完成部署,CPU会自动在虚拟机模式中继续运行原有的操作系统。虚拟机运行时,若有事件触发VM exit,CPU会产生VMexits并进入root模式运行。此时,操作系统将保持在事件被触发时的状态,取证平台的事件处理函数将被调用,各系统模块会响应对应的事件并在目标操作系统中收集重要证据。处理完相应事件后,取证平台调用VMRESUME恢复目标操作系统的运行,整个过程对操作系统透明,即操作系统本身并不知道在虚拟机中运行这一事实。
[0077] 在平台卸载时,虚拟机监视器首先通知各模块进行卸载。基本卸载过程完成后,监视器将在内存中动态生成汇编指令,用于在关闭虚拟机功能后恢复操作系统,模拟函数的返回行为,返回到正常运行状态。成功关闭虚拟机后,初始化驱动将完成通常的驱动卸载程序,释放所有已分配的内存,最后完成在操作系统中的卸载过程。
[0078] 通过以上步骤,本取证平台可以在支持硬件虚拟化技术的硬件平台上,在目标操作系统运行时获取高级别权限,在不终止操作系统运行的条件下将其移植入虚拟机中进行监视和取证。
[0079] 图2所示的为运行阶段取证平台的系统结构示意图。其中初始化驱动在该阶段只用于占用操作系统内存,防止在用于配置虚拟机的内存被归还后,用于其他用途而引起系统崩溃。其中,系统控制中心提供最基本的硬件虚拟化平台支持、初始化过程控制和卸载过程的控制,以及基础的事件处理,本实施例将硬件虚拟化平台中的各事件处理成为逻辑事件,再提供给各模块,如读写控制寄存器事件中的写入CR3寄存器被注册成为程序上下文切换事件,CPUID指令执行事件被注册成为外部控制事件,内存权限事件中的写内存权限违反事件被注册成内存页改动事件等。系统支持模块组基于系统控制中心实现了系统的基础功能,包括内存虚拟化,外部控制,虚拟机内省和为SMP系统提供多核间的信号传播功能。系统支持模块组可以继续增加额外的模块来提供更丰富的功能。系统控制中心和系统支持模块组为取证功能模块组提供支持,简化取证功能模块的实现,包括为其提供跨平台支持,使取证模块关注核心功能的开发。
[0080] 图3所示的为模块结构设计示意图。所有模块只对外暴露4组接口:初始化接口提供给初始化过程,这样在初始化驱动部署取证平台时,会调用此接口进行模块内部的初始化,包括相关的硬件虚拟化平台设置、内存分配、模块数据结构初始化和模块状态初始化,取证平台本身无需知道其内部细节;卸载接口为安全卸载该模块提供支持,并在模块或者系统发生错误时可以调用该接口自动关闭功能;取证模块可以为监视的事件注册事件处理函数,在重要事件发生时,模块可以对目标操作系统产生响应,跟踪系统状态和收集重要证据;取证模块通过外部控制接口接受管理员控制,包括模式切换,详细设置和功能开关等。
[0081] 图4所示的为本方法内存空间的布局情况和各系统支持模块的实施方式。本方法将在初始化阶段记录所有在操作系统中分配的内存空间,在进入运行阶段时,内存虚拟化模块将开启单一模式,并将取证平台的内存区域对目标操作系统隐藏,通过硬件保护使得相关内存只有在host模式才能被访问,防止关键内存被恶意程序篡改,保证了平台的安全性和透明性,继而保证获得的证据的可信度。
[0082] 本实施例使用了INTEL的EPT技术实现了内存虚拟化模块,提供给取证平台和取证功能模块组控制虚拟机内存权限和第二级地址翻译的功能。内存虚拟化模块在初始化阶段为具有N个CPU的处理器分配N+1个第二级页表,这样就可以在运行阶段提供3种不同的运行模式:
[0083] 关闭模式完全关闭了内存虚拟化功能,不提供从客户物理地址到真实物理地址的转换;
[0084] 单一模式提供了一张全局页表,对该页表的改动将应用到所有CPU上,同时,通过信号模块将更新传递到所有CPU中,从而在刷新TLB缓存后,相关改动可以被其它CPU应用;
[0085] 精细模式为每个CPU都提供了一张独立的页表,这样,取证平台可以修改某一个CPU上虚拟机的地址转换和内存权限,而不至于影响到其余的核,目标CPU将收到信号刷新TLB缓存以应用更新。在有错误发生时,内存虚拟化模块将自动转为关闭模式。
[0086] 虚拟机内省模块由对象组装器和软件MMU组成,通过遍历操作系统内核页表,取证平台在高地址范围保持和目标操作系统相同的内存映射结构,并通过操作系统驱动编译器编译的内省逻辑对目标操作系统的进行内省,用于获取在计算机取证中的证据。为了使取证模块能够直接使用物理地址访问内存,虚拟机内省模块在初始化阶段在主机虚拟地址低地址范围对物理内存进行映射,通过查询PCI寄存器可以获得可信的物理地址范围。
[0087] 信号模块使用信号图标记信号,并通过IPI中断告知其余CPU接收信号,CPU在收到通知后,检查当前核的信号图,完成相关任务,返回成功。
[0088] 虚拟机内省模块通过图5所示的步骤完成对目标操作系统关键数据结构的获取:
[0089] 步骤一:通过自定义的逻辑获得任何在操作系统中数据结构的虚拟地址和其对应进程的CR3寄存器值。
[0090] 步骤二:对象组装器根据符号表或者数据结构定义获得目标数据结构的大小和内部结构情况。
[0091] 步骤三:对象组装器请求软件MMU将CR3和虚拟地址翻译成物理地址。
[0092] 步骤四:软件MMU通过CR3值获得页表结构的最高级别页表地址,通过多级查询找到虚拟地址对应的物理地址并返回给对象组装器。
[0093] 步骤五:对象组装器访问内存的物理地址映射区域,将数据结构内容复制到目标地址中。
[0094] 步骤六:对象组装器根据物理地址和数据结构大小判断数据结构是否跨页。
[0095] 步骤七:若跨页,对象组装器继续向软件MMU请求下一页虚拟地址在相同CR3值的物理地址。返回步骤五运行。
[0096] 步骤八:对象组装器完成组装后,取证模块提供的目标地址会包含一个完整的目标数据结构的副本。
[0097] 虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。