一种面向XenServer平台的虚拟机内存取证方法技术

技术编号:17109460 阅读:34 留言:0更新日期:2018-01-24 22:23
本发明专利技术公开了面向XenServer平台的虚拟机内存取证方法,包括:获取宿主机的物理内存信息存为内存镜像文件;获取宿主机中的内核符号表文件;获取vmcoreinfo_xen内容的物理地址;根据物理地址获取vmcoreinfo_xen的内容,解析出内核符号的虚拟地址domain_list和pgd_l4;将pgd_l4的虚拟地址转换为物理地址;获取结构体地址;根据结构体之间的关系来获取虚拟机对应的结构体;实现虚拟机物理地址的地址转换;获取到虚拟机物理内存内容后,进行虚拟机操作系统版本的判定;虚拟机操作系统确定后,根据虚拟机操作系统版本的不同使用相应的内存分析方法进行物理内存分析。

A method of virtual machine memory forensics oriented to XenServer platform

The invention discloses a memory forensics method, virtual machine for XenServer platform includes: acquiring the host physical memory information stored as memory image file; obtain the host kernel symbol table file; physical address for vmcoreinfo_xen content; according to the physical address for vmcoreinfo_xen content, parsing out the kernel symbols of the virtual address and domain_list pgd_l4; the pgd_l4 virtual address into a physical address; obtaining structure address; the structure to obtain the corresponding virtual machine according to the relationship between the structure of the virtual machine implementation; physical address conversion; access to the memory contents of the virtual machine to determine the physical and virtual machine operating system version of the virtual machine to determine the operation; the system, based on virtual machine operating system version of the different analysis method using the corresponding memory physical memory analysis.

【技术实现步骤摘要】
一种面向XenServer平台的虚拟机内存取证方法
本专利技术涉及一种面向XenServer平台的虚拟机内存取证方法。
技术介绍
相对于传统基于文件系统的取证,内存取证研究起步较晚,始于2005年夏季著名的DFRWS(DigitalForensicResearchWorkshop,数字取证研究工作组)发起的针对Windows系统的内存取证分析挑战赛,以鼓励内存取证分析研究和相关取证工具开发。DFRWS于2008年又发起了针对Linux系统的内存取证分析挑战赛。之后,几乎每年的DFRWS大会都有内存取证分析的讨论议题。此外,著名黑客大会(BlackHat,DefCon,ShmooCon等)从2006年也开始举办内存取证分析专题研讨会。工业界和政府部门同样关注内存取证分析研究。美国联邦调查局FBI下属的RCFL(RegionalComputerForensicsLaboratory)自2006年开始了内存取证研究。2012年,美国国防部高级研究计划署DARPA发起了对隐匿恶意软件的内存取证分析专题研讨。美国国土安全部DHS为应对网络犯罪而进行了恶意软件内存取证研究。与此同时,相关内存取证工具相继出现,比如Guidance公司的WinEn、HBGary公司的FastDump、Mantech开发的MDD、AgileConsulting开发的Nigilant32等。可以看到,在对宿主机的物理内存获取和分析方面,已经有较多的研究,也取得了一定的成果,通过获取和分析宿主机的物理内存,可以获得宿主机大量的在线数据。目前,虚拟化技术已经广泛地融入了我们的生活,并具有巨大的市场前景。虚拟化技术改变了系统软件与底层软件紧耦合的方式,可以更加灵活地配置与管理计算系统,降低硬件成本。但是,也给取证人员带来了一些机遇和挑战:一方面,虚拟化技术作为一种新技术可以给计算机取证带来新的变革,推动和促进计算机取证技术自身的发展;另一方面,相关的虚拟机产品可能变成犯罪分子利用的工具或者攻击的目标,犯罪嫌疑人可以利用虚拟机来执行他们的活动。如何对虚拟机进行取证是一个全新而且重要的问题。目前,以虚拟机为取证对象的计算机取证技术多以对宿主机文件系统中的相关虚拟机文件(主要指配置文件和存储文件)进行深入分析。以VMwareWorkstation下的虚拟机为例,虚拟机的“虚拟磁盘”上的文件存储在一个或多个以“vmdk”为后缀名的文件中,以“vmem”为后缀名的文件则保存了虚拟机物理内存中的所有数据,配置信息则保存在以“vmx”为后缀的文件中。如钟琳、许榕生提出了对虚拟机文件进行取证的方法。MarianoGraziano于2013年首次提出了一种在虚拟机在宿主机物理内存中检测虚拟机的方法,该方法通过在宿主机物理内存中搜索VMCS结构体,然后结合volatility工具对虚拟机进行物理内存分析,具体过程如下:1)内存扫描VMCS结构体包含了140多个键值,大小约4k,结构体及其取值受CPU型号、虚拟化工具等因素影响,其中前四个字节为VMCS版本标志,不同的处理器型号对应的版本号不同,接下来是VMX退出原因指示器,一般值为0。在VMCS数据区中包含了一个变量为VmcsLinkPointerCheck,此变量的值一般设置为两个连续的0xffffffff,但是此变量位置不固定。在宿主机状态域中存储了宿主机的CR4控制寄存器的值,其中第十三位表明是否开启了虚拟扩展。基于以上特征在宿主机物理内存中进行搜索VMCS结构体。2)VMCS结构体确认从扫描到的VMCS结构体中解析出HOST_CR3的值,即宿主机的CR3寄存器的值,CR3寄存器保存了系统进程的页目录信息,当禁用物理地址拓展,保存的是系统进程页目录的基地址。根据CR3的值找到页目录的地址,然后依次找下去,根据页目录找到页表,以此找到物理地址。根据此思想,扫描到的VMCS结构体地址为VMCS的物理地址,那么CR3指向的页中应该包含了VMCS物理地址。依照此方法来验证这个VMCS结构体是否有效。3)虚拟机自省从VMCS结构体中获取到EPT页表的基地址,EPT页表结构由PML4table(pagemaplevel4table),PDPT(page-directory-pointertable),PD(page-directory)和PT(pagetable)共4级页表构成。每张页表大小4KB,共有512个页表项,每个页表项占用8个字节。通过模拟EPT地址转换,遍历所有地址转换中需要的PML4、PDPT、PD和PT表。4)结合volatility工具进行虚拟机物理内存分析将上述技术实现为一个volatility插件,分析时,按照volatility提供的命令行,指定虚拟机操作系统版本后实现volatility能够提供的分析功能。在实际的对虚拟机的物理内存分析过程中,我们发现,以上这种分析方法存在一定的局限性,主要表现在以下几个方面:(1)适应于CPU为一定型号且所安装的操作系统为32位的宿主机,所支持的虚拟化工具包括HyperDbg、KVM、Xen、VirtualBox以及VMwareWorkstation。经过测试,此方法可以检测到CPU为Intel(R)Core(TM)i5-2500、操作系统为32位fedora18的宿主机中安装的虚拟机,但是对于CPU为Intel(R)Xeon(R)CPUE5-2620、操作系统为64位fedora16的宿主机无法检测其中安装的虚拟机;(2)检测到虚拟机后,结合volatility只能分析操作系统为32位Windows系统的虚拟机物理内存;(3)在分析时,操作比较复杂,需要附加虚拟机操作系统版本信息方能够进行。另外,在分析Xen和XenServer时,发现在这些系统中,内存布局较为复杂,地址转换问题面临挑战:(1)Xen堆占用了机器物理地址空间的前面空间,所以宿主机的部分线性地址和对应的机器物理地址有一个固定的差值DIRECTMAP_VIRT_START;(2)Xen/XenServer有一个自己的页表,它是Xen/XenServer的虚拟地址到物理地址的映射。(3)客户虚拟机也有一个自己的页表,通过shadowpagetable(影子页表),或者硬件内存虚拟化机制EPT(forIntel)/NPT(forAMD)等进行地址转换。这些地址转换问题给Xen/XenServer下的内存分析带来困难。
技术实现思路
本专利技术为了克服上述技术存在的局限性,提出了一种面向XenServer平台的虚拟机内存取证方法。面向XenServer平台的虚拟机内存取证方法,包括:步骤(1):获取宿主机的物理内存信息存为内存镜像文件;步骤(2):获取宿主机中的内核符号表文件;所述内核符号表文件,包括:vmcoreinfo_data的值和paddr_vmcoreinfo_xen的值;步骤(3):从内存镜像文件中搜索vmcoreinfo_data内容;将vmcoreinfo_data的内容的地址与步骤(2)中获取的vmcoreinfo_data的值进行对比,获取到这两个值的差值,即为DIRECTMAP_VIRT_START的值;步骤(4):在内核符号表文件中搜索获取paddr_vmcoreinfo_本文档来自技高网
...
一种面向XenServer平台的虚拟机内存取证方法

【技术保护点】
面向XenServer平台的虚拟机内存取证方法,其特征是,包括:步骤(1):获取宿主机的物理内存信息存为内存镜像文件;步骤(2):获取宿主机中的内核符号表文件;所述内核符号表文件,包括:vmcoreinfo_data的值和paddr_vmcoreinfo_xen的值;步骤(3):从内存镜像文件中搜索vmcoreinfo_data内容;将vmcoreinfo_data的内容的地址与步骤(2)中获取的vmcoreinfo_data的值进行对比,获取到这两个值的差值,即为DIRECTMAP_VIRT_START的值;步骤(4):在内核符号表文件中搜索获取paddr_vmcoreinfo_xen的值,将paddr_vmcoreinfo_xen的值和DIRECTMAP_VIRT_START的值进行做差运算,得到paddr_vmcoreinfo_xen的物理地址,根据paddr_vmcoreinfo_xen的物理地址在内存镜像文件中指向的值获取到vmcoreinfo_xen内容的物理地址;步骤(5):根据vmcoreinfo_xen内容的物理地址获取vmcoreinfo_xen的内容,从中解析出内核符号的虚拟地址domain_list和pgd_l4;其中,domain_list指向虚拟机所对应的domain结构体;pgd_l4指向转换domain结构体中各虚拟地址需要的页目录基地址;步骤(6):将pgd_l4的虚拟地址转换为物理地址,查看宿主机中的物理内存分布,寻找Hypervisor代码和数据所在的内存地址段,对比pgd_l4的虚拟地址和内存地址段,取内存地址段的24位及24位以上的数值,与pgd_l4虚拟地址的0‑23位结合,组合成一个新的地址,即为pgd_l4的物理地址;步骤(7):根据pgd_l4物理地址对domain_list进行地址转换,获取domain_list指向内容对应domain结构体地址;步骤(8):根据domain、vcpu、ach_vcpu、hvm_vcpu、arch_vmx_struct结构体之间的关系来获取虚拟机对应的vmcs_struct结构体;步骤(9):从vmcs_struct结构体中获取ept指针和guest cr3;实现虚拟机物理地址的地址转换;步骤(10):获取到虚拟机物理内存内容后,进行虚拟机操作系统版本的判定;虚拟机操作系统确定后,根据虚拟机操作系统版本的不同使用相应的内存分析方法进行物理内存分析。...

【技术特征摘要】
1.面向XenServer平台的虚拟机内存取证方法,其特征是,包括:步骤(1):获取宿主机的物理内存信息存为内存镜像文件;步骤(2):获取宿主机中的内核符号表文件;所述内核符号表文件,包括:vmcoreinfo_data的值和paddr_vmcoreinfo_xen的值;步骤(3):从内存镜像文件中搜索vmcoreinfo_data内容;将vmcoreinfo_data的内容的地址与步骤(2)中获取的vmcoreinfo_data的值进行对比,获取到这两个值的差值,即为DIRECTMAP_VIRT_START的值;步骤(4):在内核符号表文件中搜索获取paddr_vmcoreinfo_xen的值,将paddr_vmcoreinfo_xen的值和DIRECTMAP_VIRT_START的值进行做差运算,得到paddr_vmcoreinfo_xen的物理地址,根据paddr_vmcoreinfo_xen的物理地址在内存镜像文件中指向的值获取到vmcoreinfo_xen内容的物理地址;步骤(5):根据vmcoreinfo_xen内容的物理地址获取vmcoreinfo_xen的内容,从中解析出内核符号的虚拟地址domain_list和pgd_l4;其中,domain_list指向虚拟机所对应的domain结构体;pgd_l4指向转换domain结构体中各虚拟地址需要的页目录基地址;步骤(6):将pgd_l4的虚拟地址转换为物理地址,查看宿主机中的物理内存分布,寻找Hypervisor代码和数据所在的内存地址段,对比pgd_l4的虚拟地址和内存地址段,取内存地址段的24位及24位以上的数值,与pgd_l4虚拟地址的0-23位结合,组合成一个新的地址,即为pgd_l4的物理地址;步骤(7):根据pgd_l4物理地址对domain_list进行地址转换,获取domain_list指向内容对应domain结构体地址;步骤(8):根据domain、vcpu、ach_vcpu、hvm_vcpu、arch_vmx_struct结构体之间的关系来获取虚拟机对应的vmcs_struct结构体;步骤(9):从vmcs_struct结构体中获取ept指针和guestcr3;实现虚拟机物理地址的地址转换;步骤(10):获取到虚拟机物理内存内容后,进行虚拟机操作系统版本的判定;虚拟机操作系统确定后,根据虚拟机操作系统版本的不同使用相应的内存分析方法进行物理内存分析。2.如权利要求1所述的面向XenServer平台的虚拟机内存取证方法,其特征是,所述步骤(2)的内核符号表文件包括:/proc/kallsyms文件或者/boot/System.map文件。3.如权利要求1所述的面向XenServer平台的虚拟机内存取证方法,其特征是,所述步骤(3)的步骤为:步骤(301):搜索“OSRELEASE=”,若搜索到的内容包含有“SYMBOL(_stext)=”或“SYMBOL(swapper_pg_dir)”内容,且操作系统的版本信息中含有“xen”字符串,则说明搜索到的内容为vmcoreinfo_data的内容,将vmcoreinfo_data的内容的地址与在步骤(2)中获取到的vmcoreinfo_data值进行对比,获取到这两个值的差值,即为DIRECTMAP_VIRT_START的值。4.如权利要求1所述的面向XenServer平台的虚拟机内存取证方法,其特征是,所述步骤(7):大页模式下,0至20位记为Offset;待转化的地址的21至29位记为Directory,30至38位记为DirectoryPtr,39至47位记为PML4,48至63位记为SingExtended;大页模式下,通过以下方法进行地址转换:取pgd_l4寄存器的12位至51位、低12位均取为0,将其与PML4乘以8后的数值相加,得到第一地址,获取第一地址在物理内存镜像对应的内容记为B1;取B1的12位至51位、低12位均取为0,将其与DirectoryPtr乘以8之后的数值相加,得到第二地址,获取第二地址在物理内存镜像对应的内容记为B2;取B2的12位至51位、低12位均取为0,将其与Directory乘以8之后的数值相加,得到第三地址,获取第三地址在物理内存镜像对应的内容记为B3;取B3的21位至51位、低21位均取为0,将其与Offset相加,得到的数据为的虚拟地址转化为物理地址之后的数值。5.如权利要求1所述的面向XenServer平台的虚拟机内存取证方法,其特征是,所述步骤(7):小页模式下,0至11位记为Offset、12至20位记为Table,待转化的地址的21至29位记为Directory,30至38位记为DirectoryPtr,39至47位记为PML4,48至63位记为SingExtended;小页模式下通过以下方法进行地址转换:取pgd_l4寄存器的12位至51位、低12位均取为0,将其与PML4乘以8后的数值相加,得到第四地址,获取第四地址在物理内存镜像对应的内容记为A1;取A1的12位至51位、低12位均取为0,将其与DirectoryPtr乘以8之后的数值相加,得到第五地址,获取第五地址在物理内存镜像对应的内容记为A2;取A2的12位至51位、低12位均取为0,将其与Directory乘以8之后的数值相加,得到第六地址,获取第六地址在物理内存镜像对应的内容记为A3;取A3的12位至51位、低12位均取为0,将其与Table乘以8之后的数值相加,得到第七地址,获取第七地址在物理内存镜像对应的内容记为A4;取A4的12位至51位、低12位均取为0,将其与Offset相加,得到的数据即为的虚拟地址转化为物理地址之后的数值。6.如权利要求1所述的面向XenServer平台的虚拟机内存取证方法,其特征是,所述步骤(8)的步骤包括:步骤(801):将domain结构体地址转换为物理地址,获取domain结构体中指向vcpu结构体指针;步骤(802):根据vcpu结构体指针获取vcpu结构体地址,在vcpu结构体中包含指向下一个vcpu结构体的链表指针“structvcpu*next_in_list”,根据链表,获取全部正在运行的虚拟机对应的vcpu结构体;所述获取vcpu结构体包含arch_vcpu结构体内容;步骤(803):获取arch_vcpu结构体中包含的hvm_vcpu结构体内容;步骤(804):获取hvm_vcpu结构体中包含的arch_vmx_struct结构体内容;步骤(805):获取arch_vmx_struct结构体中包含的指向vmcs_struct...

【专利技术属性】
技术研发人员:张淑慧王连海刘广起杨淑棉徐淑奖韩晓晖邹丰义
申请(专利权)人:山东省计算中心国家超级计算济南中心
类型:发明
国别省市:山东,37

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

1