《一种KVM虚拟机的物理内存取证方法.pdf》由会员分享,可在线阅读,更多相关《一种KVM虚拟机的物理内存取证方法.pdf(25页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104182269A43申请公布日20141203CN104182269A21申请号201410394479122申请日20140812G06F9/455200601G06F12/0620060171申请人山东省计算中心国家超级计算济南中心地址250014山东省济南市历下区科院路19号山东省计算中心国家超级计算济南中心72发明人王连海张淑慧74专利代理机构济南泉城专利商标事务所37218代理人褚庆森54发明名称一种KVM虚拟机的物理内存取证方法57摘要本发明的KVM虚拟机的物理内存取证方法,包括A宿主机物理内存的获取;D虚拟机的VMCS版本号检测;EVMX退出原因指示器的检测。
2、;F宿主机CR3寄存器的检测和获取;G虚拟机CR3寄存器的检测和获取;H两个连续0XFFFFFFFF的判断;I扩展页的检测和获取;J判断HOST_CR3寄存器的正确性;K判断GUEST_CR3寄存器的正确性;L判断是否检测完毕;M虚拟机物理内存的获取;N虚拟机物理内存的分析。本发明的KVM虚拟机的物理内存取证方法,首先初步判断页中是否存在潜在的VMCS结构体,然后再判断VMCS结构体的正确性,以便获取虚拟机的物理内存,这种获取方法不会对虚拟机的状态产生任何影响,适于信息安全事件和各类计算机犯罪案件的调查取证。51INTCL权利要求书4页说明书14页附图6页19中华人民共和国国家知识产权局12发。
3、明专利申请权利要求书4页说明书14页附图6页10申请公布号CN104182269ACN104182269A1/4页21一种KVM虚拟机的物理内存取证方法,其特征在于,通过以下步骤来实现A宿主机物理内存的获取,借助内存获取工具获取宿主机从0开始的全部物理内存信息;B在编译内核时产生的存放内核符号表的文件中,查找出内核符号INIT_TASK、结构体VMCSCONG的值,INIT_TASK的值为SWAPPER进程结构体的虚拟地址,VMCSCONG的值指向VMCSCONG结构体的虚拟地址,VMCSCONG结构体中定义了VMCS结构体的大小和版本号;C操作系统版本和位数的获取,获取宿主机的操作系统版本和。
4、操作系统位数;对于32位系统,在编译内核时产生的存放内核符号表的文件中,获取页目录指针SWAPPER_PG_DIR的值,SWAPPER_PG_DIR的值即为宿主机寄存器CR3的虚拟地址,减去0XC0000000即为宿主机寄存器CR3的物理地址;对于64位系统,则获取目录指针INIT_LEVEL4_PGT的值,INIT_LEVEL4_PGT为64位系统下宿主机寄存器CR3的值,减去0XFFFFFFFF80000000即为宿主机寄存器CR3的物理地址;结合VMCS_CONG结构体虚拟地址和宿主机寄存器CR3的值进行地址转换获取VMCS_CONG结构体的物理地址,从而获取到VMCS结构体大小和版本号。
5、信息;D虚拟机的VMCS版本号检测,VMCS结构体大小和版本号信息定义在VMCS_CONG结构体中,大小不大于4096个字节,从某一页的开始位置进行存储,前四个字节为与CPU类型有关的VMCS版本号;对于获取的宿主机物理内存,判断每页的前四个字节是否为VMCS版本号,如果判断结果为是,则表明该页可能是VMCS结构体,执行步骤E;如果判断结果为否,则表明该页不可能为VMCS结构体,执行步骤L),以进行下一个页的判断;EVMX退出原因指示器的检测,判断页从第四个字节开始的4个字节的值是否为零,如果为零,则表明该页可能是VMCS结构体,执行步骤F;如果不为零,则表明该页不可能是VMCS结构体,执行步。
6、骤L;F宿主机CR3寄存器的检测和获取,判断在该页偏移量为0X340处的8个字节是否为零,如果不为零,则这8个字节构成的64位数据可能为宿主机CR3寄存器的值,将其取出,记为HOST_CR3,执行步骤G;如果为零,则表明该页不可能是VMCS结构体,执行步骤L;G虚拟机CR3寄存器的检测和获取,判断在页偏移量为0X2E0处的8个字节是否为零,如果不为零,则这8个字节构成的64位数据可能为虚拟机CR3寄存器的值,将其取出,记为GUEST_CR3,执行步骤H;如果为零,则表明该页不可能是VMCS结构体,执行步骤L;H两个连续0XFFFFFFFF的判断,通过遍历整个结构体,判断是否存在两个连续的0XF。
7、FFFFFFF,如果存在,则表明该页可能是VMCS结构体,执行步骤I;如果不存在,则表明该页不可能是VMCS结构体,执行步骤L);I扩展页的检测和获取,判断在该页偏移量为0XE8位置处的8个字节是否为零,如果不为零,则表明偏移量0XE8位置处的8个字节可能为扩展页指针的数值,将其取出,记为EPTP,执行步骤J;如果为零,则表明该页不可能是VMCS结构体,执行步骤L;J判断HOST_CR3寄存器的正确性,内核符号INIT_TASK的值指向SWAPPER进程结构体,SWAPPER进程以一个TASK_STRUCK结构体的形式存在,进程名称“SWAPPER”存在于TASK_STRUCK结构体中与操作系。
8、统版本有关的偏移量处,设偏移量为;通过以下步骤来判断权利要求书CN104182269A2/4页3J1根据操作系统位数是64位操作系统小页模式、64位操作系统大页模式、32位操作系统开启PAE小页模式、32位操作系统开启PAE大页模式、32位操作系统不开启PAE小页模式还是32位操作系统不开启PAE大页模式,将SWAPPER进程结构体的虚拟地址INIT_TASK转化为物理地址,执行步骤J2;J2将INIT_TASK转化后的物理地址加上偏移量,判断所获取的进程名称是否为SWAPPER,如果为SWAPPER,则证明所获取的HOST_CR3为正确的宿主机CR3寄存器,执行步骤K;如果不为SWAPPER。
9、,则表明所获取的HOST_CR3不是宿主机CR3寄存器,判断出的VMCS结构体不正确,执行步骤L;K判断GUEST_CR3寄存器的正确性,借助EPT页结构,将步骤G中获取的GUEST_CR3寄存器的值转化为宿主机物理地址,判断转化后的宿主机物理地址是否为零,如果不为零,则表明获取的GUEST_CR3寄存器为正确的虚拟机CR3寄存器,该页中所检测出结构体为正确的VMCS结构体;如果为零,则表明GUEST_CR3寄存器不是正确的虚拟机CR3寄存器,所判断出的VMCS结构体不正确;执行步骤L;L判断是否检测完毕,判断所有页是否均已判断完毕,如果判断完毕则执行步骤M;如果没有判断完毕,则对下一页进行判。
10、断,跳转执行步骤D;M虚拟机物理内存的获取,对于给定的虚拟机物理地址和虚拟地址,首先将其转化为宿主机的物理地址,即可进行虚拟机内存信息的获取;N虚拟机物理内存的分析,通过对步骤M中获取的虚拟机内存信息的分析,即可对虚拟机的行为作出判断。2根据权利要求1所述的KVM虚拟机的物理内存取证方法,其特征在于步骤A中宿主机物理内存的获取方法为采用开源软件LIME加载内核模块获得LINUX和LINUX设备中的完整内存信息,以PADDED格式来获取从0开始的宿主机的全部内存信息;步骤B和步骤C中通过获取/PROC/KALLSYMS文件来获取内核符号表,并从中获取内核符号INIT_TASK、结构体VMCS_C。
11、ONG、SWAPPER_PG_DIR或者INIT_LEVEL4_PGT的值;步骤C中操作系统版本和位数的获取方法为通过在宿主机终端执行“UNAMER”来获取。3根据权利要求1或2所述的KVM虚拟机的物理内存取证方法,其特征在于步骤J1中所述的宿主机的虚拟地址转化为物理地址的方法为待转化的宿主机虚拟地址的21至29位记为DIRECTORY、30至31位记为DIRECTORYPOINTER、30至38位记为DIRECTORYPTR、39至47位记为PML4、48至63位记为SINGEXTENDED,小页模式下0至11位记为OFFSET、12至20位记为TABLE,大页模式下0至20位记为OFFSE。
12、T;如果操作系统位数是64位操作系统小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORYPTR乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低1。
13、2位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟权利要求书CN104182269A3/4页4地址转化为物理地址之后的数值;如果操作系统位数是64位操作系统大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORYPTR乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的2。
14、1位至51位、低21位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统开启PAE小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至44位、低5位均取为0,将其与DIRECTORYPOINTER乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至3。
15、5位、低12位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统开启PAE大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至44位、低5位均取为0,将其与DIRECTORYPOINTER乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的21位至35位、低21位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;在32位操作系统不开。
16、启PAE模式下待转化的宿主机虚拟地址小页模式下的0至11位记为OFFSET、12至21位记为TABLE、22至31位记为DIRECTORY;大页模式下0至21位记为OFFSET、22至31位记为DIRECTORY;如果操作系统位数是32位操作系统不开启PAE小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的0位至31位、低13位均取为0,将其与DIRECTORY乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至31位、低12位均取为0,将其与OF。
17、FSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统不开启PAE大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的0位至31位、低13位均取为0,将其与DIRECTORY乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的21位至30位、低22位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值。4根据权利要求1或2所述的KVM虚拟机的物理内存取证方法,其特征在于步骤M中所述的虚拟机的物理地址到宿主机的物理地址通过以下方法来实现待转化的虚拟机的物理地址的0至11位记为OFFSET、1。
18、2至20位记为TABLE,21至29权利要求书CN104182269A4/4页5位记为DIRECTORY、30至38位记为DIRECTORYPTR、39至47位记为PML4、48至63位记为SINGEXTENDED;M1取扩展页表指针EPTP的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORYPTR乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容。
19、记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与OFFSET相加,得到的数据即为虚拟机的物理地址转化为宿主机的物理地址之后的数值;在操作系统位数是64位操作系统小页模式下,虚拟机的虚拟地址到宿主机的物理地址通过以下方法来实现待转化的虚拟机的虚拟地址的0至11位记为OFFSET、12至20位记为TABLE,21至29位记为DIRECTORY、30至38位记为DIRECTORYPTR、39至47位记为PML4、48至63位记为SINGEXTENDED;M2将虚拟机的CR3寄存器的值。
20、按照步骤M1转化为宿主机的物理地址,记为,取的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;将的值按照步骤M1转化为宿主机的物理地址,记为,取的12位至51位、低11位均取为0,将其与DIRECTORYPTR乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;将的值按照步骤M1转化为宿主机的物理地址,记为,取的12位至51位、低11位均取为0,将其与DIRECTORY乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;将的值按照步骤M1转化为宿主机的物理地址,记为,取的12位至51位、低11位均取为0,将其与TABL。
21、E乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;将的值按照步骤M1转化为宿主机的物理地址,记为,取的12位至51位、低12位均取为0,将其与OFFSET相加,得到的数据即为虚拟机的虚拟地址转化为宿主机的物理地址之后的数值。5根据权利要求1或2所述的KVM虚拟机的物理内存取证方法,其特征在于将步骤M中所获取的内存信息依照不同系统的物理内存分析方法获取虚拟机动态信息,包括虚拟机的进程信息、驱动信息、网络信息、注册表信息、日志信息。6根据权利要求1或2所述的KVM虚拟机的物理内存取证方法,其特征在于步骤J中所述的偏移量为具有以下取值关系64位FC15的偏移量为0X460,32位FC16。
22、的偏移量为0X2E4,64位FC16的偏移量为0X460,32位FC18的偏移量为0X2E4,UBUNTU1104的偏移量为0X2DC。权利要求书CN104182269A1/14页6一种KVM虚拟机的物理内存取证方法技术领域0001本发明涉及一种KVM虚拟机的物理内存取证方法,更具体的说,尤其涉及一种适于现有主流操作系统和CUP型号的KVM虚拟机的物理内存取证方法。背景技术0002涉及的概念和专业术语主要包括虚拟机、KVM、VMCS和EPT。0003虚拟机(VIRTUALMACHINE,VM)是指在一个硬件平台上模拟多个独立的、ISA架构和实际硬件相同的虚拟硬件系统,在每个虚拟硬件系统上都可以。
23、运行不同的操作系统,即客户操作系统(GUESTOS)。这些客户操作系统通过虚拟机监视器(VIRTUALMACHINEMONITOR,VMM)访问实际的物理资源。0004在本文中,为了方便描述,物理主机称之为宿主机,宿主机的物理地址简称为HPA(HOSTPHYSICALADDRESS),宿主机的虚拟地址简称为HVA(HOSTVIRTUALADDRESS),虚拟机的物理地址简称为GPA(GUESTPHYSICALADDRESS),虚拟机的虚拟地址简称为GVA(GUESTVIRTUALADDRESS)。虚拟机的物理地址仍然是一个虚拟地址,宿主机的物理地址才是真实的机器地址。0005KVM(KERNE。
24、LBASEDVIRTUALMACHINE),是X86架构且硬件支持虚拟化技术(如INTELVT或AMDV)的LINUX全虚拟化解决方案,目前已经成为主流VMM之一。0006为了更好的支持虚拟化,VTX扩展了传统的X86处理器架构,引入了两种操作模式VMXROOTOPERATION(根虚拟化操作)和VMXNONROOTOPERATION(非虚拟化操作),统称为VMX操作模式。为了建立这种两个操作模式的架构,VTX设计了VMCS(VIRTUALMACHINECONTROLSTRUCTURE)虚拟机控制数据结构,每个VMCS对应一个虚拟CPU(VCPU)。VMCS包括三个组成部分,VMCS版本标志(。
25、REVISIONIDENTIER)、VMX退出原因指示器(VMXABORTINDICATOR)以及VMCS数据区。在VMCS数据区中,包括了GUESTSTATEAREA(客户机状态区)和HOSTSTATEAREA(宿主机状态区)等六个逻辑区域(如图1所示),用以保存虚拟机以及主机的各种状态参数,当VMENTRY处理器控制从VMX根状态进入VMX非根状态,处理器状态被保存在VMCS中HOST状态,同时客户机状态从VMCS中装入。相反当VMEXIT时从VMX非根状态进入VMX根状态,处理器状态被保存在VMCS的中客户机状态,而HOST状态则从VMCS中装入。VMM可以对不同虚拟处理器的VMCS分别。
26、设置不同虚拟机退出条件,从而实现对不同客户机的不同虚拟化策略。0007EPT(EXTENDEDPAGETABLE)是INTEL在VTX技术基础上增加的一种硬件辅助内存虚拟化技术。和影子页表技术相比,影子页表技术为虚拟机的每个页表维护一个“影子页表”,并将合成后的映射关系写入到“影子”中,虚拟机的页表内容保持不变,宿主机将影子页表交给内存管理模块进行地址转换。而EPT机制通过硬件支持内存虚拟化技术,使其能在原有的页表上增加一个EPT页表,通过这个页表能过将虚拟机的物理地址直接翻译为宿主机的物理地址,从而减少整个内存虚拟化所需要的代价。EPT页表的基地址是由VMCS结构体中“VMEXECUTION。
27、”控制域的EXTENDEDPAGETABLEPOINTER字段指定。说明书CN104182269A2/14页70008为推进物理内存分析技术的发展,DFRWS(DIGITALFORENSICRESEARCHWORKSHOP)于2005年推出了名为“FORENSICSCHALLENGE”的活动,活动的主题就是物理内存分析。从此,对于物理内存的分析和获取成为计算机取证的研究热点。0009在计算机物理内存获取方面,目前主要有两类方法,一类是软件方法,另一类是硬件方法。软件方法主要有微软提供的CRASHDUMP方法、DD(DATADUMPER)工具、虚拟机(VIRTUALIZATION)、BRADLE。
28、YSCHATZ构建的BODYSNATCHER工具。硬件方法主要有BRIANCARRIER提出的基于PCI扩展卡的方法和BECHER、BOILEAUA等人提出的基于FIREWIRE的方法,都是基于直接存储存取方式(DMA)的,到目前还没有成熟的硬件产品推出。这些软硬件方法在适用范围上有各自的局限性,最主要的问题还在于它们都不可避免地改变了目标系统内存的内容。0010在物理内存分析方面,代表性的成果包括1)ASCHUSTERDFRWS于2006年提出了WINDOWS内存镜像文件中进程和线程的查找方法;2)AWALTERS开发了VOLATILITY工具,可以分析出当前运行的进程、打开的网络接口等信息。
29、;3)2007年,SEOKHEELEE等人研究了虚拟内存文件PAGELESYS的获取和分析问题;4)王连海在2008年提出了基于KPCR定位进程控制块的方法,适用于WINDOWS2000以后的所有版本。5)2010年MATTHIEUSUICHE深入研究了MACOS的物理内存分析问题。0011可以看到,对宿主机的物理内存获取和分析方面,已经有较多的研究,也取得了一定的成果,通过获取和分析宿主机的物理内存,可以获得宿主机大量的在线数据。0012目前,虚拟化技术已经广泛地融入了我们的生活,并具有巨大的市场前景。虚拟化技术改变了系统软件与底层软件紧耦合的方式,可以更加灵活地配置与管理计算系统,降低硬件。
30、成本。但是,也给取证人员带来了一些机遇和挑战一方面,虚拟化技术作为一种新技术可以给计算机取证带来新的变革,推动和促进计算机取证技术自身的发展;另一方面,相关的虚拟机产品可能变成犯罪分子利用的工具或者攻击的受害者,犯罪嫌疑人可以利用虚拟机来执行他们的活动。如何对虚拟机进行取证是一个全新而且重要的问题。0013目前,以虚拟机为取证对象的计算机取证技术多以对宿主机文件系统中的相关虚拟机文件(主要指配置文件和存储文件)进行深入分析。以VMWAREWORKSTATION下的虚拟机为例,虚拟机的“虚拟磁盘”上的文件存储在一个或多个以“VMDK”为后缀名的文件中,以“VMEM”为后缀名的文件则保存了虚拟机物。
31、理内存中的所有数据,配置信息则保存在以“VMX”为后缀的文件中。如钟琳、许榕生提出了对虚拟机文件进行取证的方法。MARIANOGRAZIANO于2013年首次提出了一种在虚拟机在宿主机物理内存中检测虚拟机的方法,该方法通过在宿主机物理内存中搜索VMCS结构体,然后结合VOLATILITY工具对虚拟机进行物理内存分析,具体过程如下1)内存扫描VMCS结构体包含了140多个键值,大小约4K,结构体及其取值受CPU型号、虚拟化工具等因素影响,其中前四个字节为VMCS版本标志,不同的处理器型号对应的版本号不同,接下来是VMX退出原因指示器,一般值为0。在VMCS数据区中包含了一个变量为VMCSLINK。
32、POINTERCHECK,此变量的值一般设置为两个连续的0XFFFFFFFF,但是此变量位置不固定。在宿主机状态域中存储了宿主机的CR4控制寄存器的值,其中第十三位表明是否开启了虚拟扩展。基于以上特征在宿主机物理内存中进行搜索VMCS结构体。说明书CN104182269A3/14页800142)VMCS结构体确认从扫描到的VMCS结构体中解析出HOST_CR3的值,即宿主机的CR3寄存器的值,CR3寄存器保存了系统进程的页目录信息,当禁用物理地址拓展,保存的是系统进程页目录的基地址。根据CR3的值找到页目录的地址,然后依次找下去,如图2所示,根据页目录找到页表,以此找到物理地址。0015根据此。
33、思想,扫描到的VMCS结构体地址为VMCS的物理地址,那么CR3指向的页中应该包含了VMCS物理地址。依照此方法来验证这个VMCS结构体是否有效。00163)虚拟机自省从VMCS结构体中获取到EPT页表的基地址,EPT页表结构由PML4TABLEPAGEMAPLEVEL4TABLE,PDPTPAGEDIRECTORYPOINTERTABLE,PDPAGEDIRECTORY和PTPAGETABLE共4级页表构成。每张页表大小4KB,共有512个页表项,每个页表项占用8个字节。通过模拟EPT地址转换,遍历所有地址转换中需要的PML4、PDPT、PD和PT表。00174)结合VOLATILITY工具。
34、进行虚拟机物理内存分析将上述技术实现为一个VOLATILITY插件,分析时,按照VOLATILITY提供的命令行,指定虚拟机操作系统版本后实现VOLATILITY能够提供的分析功能。0018在实际的对虚拟机的物理内存分析过程中,我们发现,以上这种分析方法存在一定的局限性,主要表现在以下几个方面(1)适应于CPU为一定型号且所安装的操作系统为32位的宿主机。经过测试,此方法可以检测到CPU为INTELRCORETMI52500、操作系统为32位FEDORA18的宿主机中安装的虚拟机,但是对于CPU为INTELRXEONRCPUE52620、操作系统为64位FEDORA16的宿主机无法检测其中安装。
35、的虚拟机;(2)检测到虚拟机后,结合VOLATILITY只能分析操作系统为32位WINDOWS系统的虚拟机物理内存;(3)在分析时,操作比较复杂,需要附加虚拟机操作系统版本信息方能够进行。发明内容0019本发明为了克服上述技术问题的缺点,提供了一种适于现有主流操作系统和CUP型号的KVM虚拟机的物理内存取证方法。0020本发明的KVM虚拟机的物理内存取证方法,其特征在于,通过以下步骤来实现A宿主机物理内存的获取,借助内存获取工具获取宿主机从0开始的全部物理内存信息;B在编译内核时产生的存放内核符号表的文件中,查找出内核符号INIT_TASK、结构体VMCSCONG的值,INIT_TASK的值为。
36、SWAPPER进程结构体的虚拟地址,VMCSCONG的值指向VMCSCONG结构体的虚拟地址,VMCSCONG结构体中定义了VMCS结构体的大小和版本号;C操作系统版本和位数的获取,获取宿主机的操作系统版本和操作系统位数;对于32位系统,在编译内核时产生的存放内核符号表的文件中,获取页目录指针SWAPPER_PG_DIR的值,SWAPPER_PG_DIR的值即为宿主机寄存器CR3的虚拟地址,减去0XC0000000即为宿主机寄存器CR3的物理地址;对于64位系统,则获取目录指针INIT_LEVEL4_PGT的值,INIT_LEVEL4_PGT为64位系统下宿主机寄存器CR3的值,减去0XFFF。
37、FFFFF80000000即为宿主机寄存器CR3的物理地址;结合VMCS_CONG结构体虚拟地址和宿主机寄存器CR3的值进行地址转换获取VMCS_CONG结构体的物理地址,从而获取到VMCS结构体大小和版本号信息;D虚拟机的VMCS版本号检测,VMCS结构体大小和版本号信息定义在VMCS_CONG结说明书CN104182269A4/14页9构体中,大小不大于4096个字节,从某一页的开始位置进行存储,前四个字节为与CPU类型有关的VMCS版本号;对于获取的宿主机物理内存,判断每页的前四个字节是否为VMCS版本号,如果判断结果为是,则表明该页可能是VMCS结构体,执行步骤E;如果判断结果为否,则。
38、表明该页不可能为VMCS结构体,执行步骤L),以进行下一个页的判断;EVMX退出原因指示器的检测,判断页从第四个字节开始的4个字节的值是否为零,如果为零,则表明该页可能是VMCS结构体,执行步骤F;如果不为零,则表明该页不可能是VMCS结构体,执行步骤L;F宿主机CR3寄存器的检测和获取,判断在该页偏移量为0X340处的8个字节是否为零,如果不为零,则这8个字节构成的64位数据可能为宿主机CR3寄存器的值,将其取出,记为HOST_CR3,执行步骤G;如果为零,则表明该页不可能是VMCS结构体,执行步骤L;G虚拟机CR3寄存器的检测和获取,判断在页偏移量为0X2E0处的8个字节是否为零,如果不为。
39、零,则这8个字节构成的64位数据可能为虚拟机CR3寄存器的值,将其取出,记为GUEST_CR3,执行步骤H;如果为零,则表明该页不可能是VMCS结构体,执行步骤L;H两个连续0XFFFFFFFF的判断,通过遍历整个结构体,判断是否存在两个连续的0XFFFFFFFF,如果存在,则表明该页可能是VMCS结构体,执行步骤I;如果不存在,则表明该页不可能是VMCS结构体,执行步骤L);I扩展页的检测和获取,判断在该页偏移量为0XE8位置处的8个字节是否为零,如果不为零,则表明偏移量0XE8位置处的8个字节可能为扩展页指针的数值,将其取出,记为EPTP,执行步骤J;如果为零,则表明该页不可能是VMCS结。
40、构体,执行步骤L;J判断HOST_CR3寄存器的正确性,内核符号INIT_TASK的值指向SWAPPER进程结构体,SWAPPER进程以一个TASK_STRUCK结构体的形式存在,进程名称“SWAPPER”存在于TASK_STRUCK结构体中与操作系统版本有关的偏移量处,设偏移量为;通过以下步骤来判断J1根据操作系统位数是64位操作系统小页模式、64位操作系统大页模式、32位操作系统开启PAE小页模式、32位操作系统开启PAE大页模式、32位操作系统不开启PAE小页模式还是32位操作系统不开启PAE大页模式,将SWAPPER进程结构体的虚拟地址INIT_TASK转化为物理地址,执行步骤J2;J。
41、2将INIT_TASK转化后的物理地址加上偏移量,判断所获取的进程名称是否为SWAPPER,如果为SWAPPER,则证明所获取的HOST_CR3为正确的宿主机CR3寄存器,执行步骤K;如果不为SWAPPER,则表明所获取的HOST_CR3不是宿主机CR3寄存器,判断出的VMCS结构体不正确,执行步骤L;K判断GUEST_CR3寄存器的正确性,借助EPT页结构,将步骤G中获取的GUEST_CR3寄存器的值转化为宿主机物理地址,判断转化后的宿主机物理地址是否为零,如果不为零,则表明获取的GUEST_CR3寄存器为正确的虚拟机CR3寄存器,该页中所检测出结构体为正确的VMCS结构体;如果为零,则表明。
42、GUEST_CR3寄存器不是正确的虚拟机CR3寄存器,所判断出的VMCS结构体不正确;执行步骤L;L判断是否检测完毕,判断所有页是否均已判断完毕,如果判断完毕则执行步骤M;如果没有判断完毕,则对下一页进行判断,跳转执行步骤D;M虚拟机物理内存的获取,对于给定的虚拟机物理地址和虚拟地址,首先将其转化为宿主机的物理地址,即可进行虚拟机内存信息的获取;N虚拟机物理内存的分析,通过对步骤M中获取的虚拟机内存信息的分析,即可对虚拟机的行为作出判断。0021本发明的KVM虚拟机的物理内存取证方法,步骤A中宿主机物理内存的获取方法为采用开源软件LIME加载内核模块获得LINUX和LINUX设备中的完整内存信。
43、息,以PADDED格式来获取从0开始的宿主机的全部内存信息;步骤B和步骤C中通过获取/说明书CN104182269A5/14页10PROC/KALLSYMS文件来获取内核符号表,并从中获取内核符号INIT_TASK、结构体VMCS_CONG、SWAPPER_PG_DIR或者INIT_LEVEL4_PGT的值;步骤C中操作系统版本和位数的获取方法为通过在宿主机终端执行“UNAMER”来获取。0022本发明的KVM虚拟机的物理内存取证方法,步骤J1中所述的宿主机的虚拟地址转化为物理地址的方法为待转化的宿主机虚拟地址的21至29位记为DIRECTORY、30至31位记为DIRECTORYPOINTE。
44、R、30至38位记为DIRECTORYPTR、39至47位记为PML4、48至63位记为SINGEXTENDED,小页模式下0至11位记为OFFSET、12至20位记为TABLE,大页模式下0至20位记为OFFSET;如果操作系统位数是64位操作系统小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORYPTR乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIR。
45、ECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是64位操作系统大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORYPTR乘以8之后的数值相加,。
46、获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的21位至51位、低21位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统开启PAE小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至44位、低5位均取为0,将其与DIRECTORYPOINTER乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,。
47、获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至35位、低12位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统开启PAE大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的12位至44位、低5位均取为0,将其与DIRECTORYPOINTER乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTORY乘以8之后的数值相加,获取此地。
48、址在物理内存镜像对应的内容记为;取的21位至35位、低21位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;在32位操作系统不开启PAE模式下待转化的宿主机虚拟地址小页模式下的0至11位记为OFFSET、12至21位记为TABLE、22至31位记为DIRECTORY;大页模式下0至21位记为OFFSET、说明书CN104182269A106/14页1122至31位记为DIRECTORY;如果操作系统位数是32位操作系统不开启PAE小页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的0位至31位、低13位均取为0,将其与DIRECTORY乘以8。
49、后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与TABLE乘以8之后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至31位、低12位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值;如果操作系统位数是32位操作系统不开启PAE大页模式,则通过以下方法进行地址转换取HOST_CR3寄存器的0位至31位、低13位均取为0,将其与DIRECTORY乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的21位至30位、低22位均取为0,将其与OFFSET相加,得到的数据即为宿主机的虚拟地址转化为物理地址之后的数值。0023本发明的KVM虚拟机的物理内存取证方法,步骤M中所述的虚拟机的物理地址到宿主机的物理地址通过以下方法来实现待转化的虚拟机的物理地址的0至11位记为OFFSET、12至20位记为TABLE,21至29位记为DIRECTORY、30至38位记为DIRECTORYPTR、39至47位记为PML4、48至63位记为SINGEXTENDED;M1取扩展页表指针EPTP的12位至51位、低11位均取为0,将其与PML4乘以8后的数值相加,获取此地址在物理内存镜像对应的内容记为;取的12位至51位、低12位均取为0,将其与DIRECTO。