• 448.02 KB
  • 2022-04-22 13:43:27 发布

基于虚拟化的windows驱动程序动态分析方法.pdf

  • 10页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'中国科技论文在线http://www.paper.edu.cn基于虚拟化的windows驱动程序动态分析方法**漆定军,田东海5(北京理工大学软件学院软件安全工程技术重点实验室,北京100081)摘要:为解决windows驱动程序行为难以分析的问题,提出一种基于硬件虚拟化的windows驱动程序动态分析方法。本方法利用了硬件虚拟化的高特权性和自动陷入机制,利用软件断点机制动态捕获驱动程序加载信息,采用物理内存扫描技术获取内核数据信息,采用windows内核函数导出表和SSDT获取内核函数信息,最终通过两套硬件辅助的虚拟化页表10实现新加载驱动程序与内核函数、数据的隔离运行。此外本方法还采用对虚拟化控制结构的配置,实现对重要特殊寄存器的监控。本方法的实现基于开源虚拟化平台hyperdbg,通过实验表明,本方法能够有效获取windows驱动程序在运行过程中的具体行为。关键词:硬件虚拟化,内存扫描,驱动程序,行为分析中图分类号:TP31615DynamicAnalysisMethodofWindowsDriverBasedonVirtualizationQIDingjun,TIANDonghai(BeijingKeyLaboratoryofSoftwareSecurityEngineeringTechnique,SchoolofSoftware,BeijingInstituteofTechnology,Beijing100081)20Abstract:InordertosolvetheproblemthatWindowsdriverbehaviorisdifficulttoanalyze,weproposeadynamicanalysismethodofwindowsdriverbasedonhardwarevirtualization.Thismethodutilizesthehighprivilegeandautomatictrappingmechanismofhardwarevirtualization.Weusethesoftwarebreakpointmechanismtodynamicallyloadthedrivertoobtaintheinformation,andusethephysicalmemoryscanningtechnologytoobtainthekerneldatainformation,andusethewindowskernelfunction25exporttableandtheSSDTtoobtainthekernelfunctioninformation.finallythroughtwosetsofhardware-assistedvirtualpagetabletoisolatethenewloadeddriverandkernelfunctions,data.Inaddition,themethodalsousestheconfigurationofthevirtualcontrolstructuretorealizethemonitoringofimportantspecialregisters.Therealizationofthismethodisbasedonthehyperdbgthatisaopensourcevirtualizationplatform.Ourexperimentshowsthatthemethodcaneffectivelyanddynamically30obtaintheconcretebehaviorofthewindowsdriver.Keywords:Virtualization,Memoryscan,Driver,Behavioranalysis0引言操作系统是管理和控制计算机硬件与软件资源的计算机程序,但是面对难以计数的计算35机硬件,操作系统不可能对他们都有完美的支持。所以微软公司提供了windows驱动程序开发包WDK,允许计算机硬件制造公司开发自己的驱动程序,从而更好的管理和控制计算机硬件。但是,由于windows驱动程序的高特权性,不法分子常常开发恶意的驱动程序,这些程序对系统造成极大的破坏,也称之为rootkit。作者简介:漆定军(1994),男,硕士,驱动分析,漏洞挖掘通信联系人:田东海(1984),男,讲师,操作系统内核安全、软件安全、虚拟化技术、.E-mail:dhai@bit.edu.cn-1- 中国科技论文在线http://www.paper.edu.cn在windows操作系统中,普通的应用程序运行于ring3级,而不法分子开发的恶意驱动40程序与操作系统本身都运行在ring0级,如果只是通过使用ring0程序进行对抗,始终存在被直接绕过的可能。所以,一旦恶意的驱动程序被加载,攻击者可以对受害电脑进行任意操作。并且在受害电脑上的所有数据和操作都可能被攻击者所获取,这将造成极大的危害。对这种恶意程序可以追溯到上个世纪90年代,直到现在安全人员和黑客们一直都在对其进行研究。但是由于驱动程序本身的高特权性,使得分析和监控的难度大大提升,目前主要有以45下几种方案:1、对系统调用表等关键内核数据的修改来判断rootkit的存在。这种方案的主要思想是使用驱动程序来对抗驱动程序,使用预先加载的驱动程序,将系统的关键内核数据进行提前监控,一旦发现关键的内核数据被修改,即判断程序的恶意行为。Baliaga等人提[1]出的就是基于此的类似方案。2、利用虚拟机监控器,使用一套页表进行单一的权限设置来对特定的寄存器、内核函数和内核数据进行监控,一旦发现异常行为将会引发vmexit,从[2]50而被虚拟机监控器控制,从而发现恶意行为。傅建明等人提出的就是这种类似方案。3、利用虚拟机监控器,采用两套ETP页表分别设置不同的权限,不会对函数和内核数据的类型进行分析、总结,直接将系统本身与被监控的驱动程序隔离,所以每当被监控的驱动程序对内核函数进行调用或者对内核数据进行修改都会引发vmexit,从而被虚拟机监控器截获。[3][4]陈兴蜀等人和DangA等人采用的就是这种类似方案。但是上诉的方法都有一定的缺陷,55针对第一种方案,可能被针对性的驱动程序所绕过,对于第二种方案,保护内容过少,并且仍然使用普通页表进行权限设置,增加了被恶意程序检测绕过的可能性。对于第三种方案,没有对保护内容进行具体分析,只能获取调用或者访问的地址。因此我们方案的研究重点在于1、能够在更高权限对驱动程序进行分析,尽可能减少对系统本身的修改,避免恶意程序检测出监控系统,2、对尽可能多的内核函数、数据和重要60寄存器进行监控。针对以上的研究重点,我们采用硬件虚拟化技术,两套EPT页表(硬件辅助的虚拟化页表)分别进行权限设置,将被监控驱动程序和系统内核隔离运行,对系统本身几乎没有影响,被监控程序也难以绕过监控系统。对需要保护的内容进行大量的调研分析,进行确认,并且通过不同的技术手段进行获取,尽可能的做到获取保护内容的全面与准确。通过这些技术来实现一个全面、可靠的windows驱动程序分析系统。651监控内容分类内核中存在大量的内容,很难对所有的内容进行监控。通过对恶意驱动程序rootkit技[5]术的相关研究,我们确定了一些关键的内容进行监控。当然我们的系统设计并不只是针对rootkit的恶意行为,更多的是为了对普通的驱动程序进行调试分析。为了尽可能的对更多重要内容进行全面监控,并且能够获取详细的监控信息,本方案将需要监控的内容分为三类:70内核数据,内核函数和寄存器。为了获取这三类内容我们使用了不同的方案。接下来我们将详细讨论。1.1内核数据内核中存在很多重要的内核数据,驱动程序可能会对这些内核数据进行读取和修改。我们需要监控的内核数据有以下几类:1、进程对象。2、驱动对象。3、文件对象。4、内核模75块。5、注册表。6、网络连接对象。进程对象:进程对象是一个EPROCESS结构[6],保存着进程的相关信息,对这个结构-2- 中国科技论文在线http://www.paper.edu.cn中的成员进行修改,可以更改进程的信息,甚至隐藏进程。驱动对象:驱动对象是一driver_object结构,每一个驱动对象代表一个已经加载进内核的驱动映像。通过对这个对象进行访问,能够获取和更改驱动的相关信息,甚至可以通过driversection成员,进一步获取80ldr_data_table_entry结构,隐藏驱动信息。文件对象:文件对象是一个file_object结构,文件对象可以表示文件,设备,目录或卷的一个实例。通过对成员filename的修改,可以做到对此对象的隐藏。内核模块:内核模块是一个ldr_data_table_entry结构,此结构常常被用来遍历内核模块,因此对它进行修改,能够对内核模块进行隐藏。注册表:注册表是一个[6]cmhive结构,通过对这个结构的修改,可以更改注册表的信息。windows系统的大部分功85能都依赖于注册表,所以这个结构也必须进行监控。网络连接对象:网络链接对象是一个address_object结构。可以通过此结构遍历系统上的网络连接,所以需要监控驱动程序对这个结构的访问。确定了需要监控的内核数据,下一步便是需要对这些数据的地址进行获取。为了保证获取到的数据尽可能完整可靠,本方案引入了取证的思想,采用物理内存扫描技术,甚至可以90获取被隐藏的对象信息。其原理主要是依赖windows的内存管理特性,我们将在3.3.3节中详细介绍。1.2内核函数内核中存在大量的内核函数,对内核函数进行监控,能了解被监控程序对内核函数调用流程。为了获取内核函数的地址,本方案采用的是通过内核函数导出表获取内核函数地址,95此外再次基础上添加(SSDT)系统服务描述符表的地址。1.3寄存器处理器的一些特殊寄存器在系统运行过程中保存了大量的有用信息,并且控制着cpu的一些功能,驱动程序很有可能对这些寄存器进行读取或者修改。本方案将对GDTR、LDTR、IDTR、TR、IA32_SYSENTER_EIP、DR和CR0寄存器进行监控。100GDT是全局描述符表,主要存放操作系统和各任务公用的描述符,GDTR寄存器保存了GDT的基地址。LDT是一个局部描述符表,LDTR是一个16位寄存器,是在GDT中的索引,用来指向LDT。IDT是中断描述符表,IDTR寄存器保存了其基地址。TR是一个任务寄存器,其指向任务状态段的起始地址。IA32_SYSENTER_EIP本质上是一个MSR寄存器,保存了快速系统调用的入口地址。DR作为调试寄存器,能够对程序设置硬件断点。CR0是105一个控制寄存器,能够修改对内存的读写属性。对这些寄存器的监控采用对VMCS进行配置的方案,将在实现中详细说明。2系统设计与实现2.1硬件辅助虚拟化原理[7]IntelVT是英特尔引入的硬件虚拟化技术。这项技术由硬件提供支持,能够在操作系110统运行的ring0层的更底层,运行一个虚拟机监控器。如图1所示,虚拟机监控器运行在VMXroot模式,客户操作系统运行在VMXnon-root模式。VMX有虚拟机控制结构VMCS,通过对VMCS(Virtual-MachineControlStructure)的配置,可以控制VMXnon-root模式在什么情况下产生一个Vmexit进入VMXroot模式。本方案使用到的Vmexit主要有EPTviolation,-3- 中国科技论文在线http://www.paper.edu.cn寄存器访问控制。被保护内存被保护寄存器Ept寄存器访violation问控制VMXno-rootVMexitVMXroot虚拟机监控器115图1硬件辅助虚拟化原理2.2系统总体设计如图2所示,本系统运行的主要流程如下:1、通过一个驱动程序启用一个虚拟机监控器,在更高的权限下对整个系统重要信息进120行监控。2、接着获取新加载驱动程序的相关信息。3、判断是否为白名单驱动程序,如果这是一个在白名单中的驱动程序,监控系统将正常运行此驱动程序,继续对加载新驱动程序的行为进行监控。如果这是一个不在白名单的驱动程序,转入步骤4。4、系统新建一套与原始EPT页表相同的EPT页表EX_EPT,原始的EPT页表称为OLD_EPT。5、在OLD_EPT页表中,除去被监控程序的运行权限。6、通过函数导出表和编写SSDT遍历程序,获取内125核函数地址,在EX_EPT页表中去除内核函数的运行权限。7、通过对windows内存的扫描分析获取内核数据地址,在EX_EPT页表中除去内核数据的访问权限。8、最后通过对VMCS结构的配置,监控程序对GDTR、LDTR、IDTR、TR内存管理寄存器,IA32_SYSENTER_EIP这个MSR寄存器,DR调试寄存器和CR0控制寄存器的访问行为。每当驱动程序对内存管理寄存器、IA32_SYSENTER_EIP寄存器、DR7调试寄存器和CR0控制寄存器进行访问或130者修改,对内核函数进行调用或者对内核数据进行访问,都引发一个vmexit,从而被我们的系统监控。并且如果是eptviolation引发的vmexit,程序会自动切换EPT页表,保证程序的继续运行。-4- 中国科技论文在线http://www.paper.edu.cn图2系统运行流程1352.3系统实现[8]本系统基于开源虚拟化平台hyperdbg,主要使用了以下技术对整个系统进行实现。2.3.1驱动程序信息获取从本系统的设计中我们能够发现,本系统采用了两套EPT页表,将被监控驱动程序和操作系统内核本身进行了分离。由于需要在OLD_EPT页表中除去被监控驱动的执行权限,140所以需要在驱动程序加载时获取程序的基地址和映像大小。[9]在驱动程序的加载过程中,程序会调用MmLoadSystemImage函数,将驱动程序加载到系统地址空间,此函数一共有六个参数,其中第五个参数为一个输出参数,并且指向一个LDR_DATA_TABLE_ENTRY结构,通过这个结构,我们可以获取加载驱动程序的相关信息。所以本系统采用hookMmLoadSystemImage函数的方法获取加载驱动程序的信息。如图1453所示,具体实现为将MmLoadSystemImage函数入口的指令修改为调用一个vmcall,所以每当MmLoadSystemImage函数被调用,都会引发一个vmexit,进入我们设计好的控制流程。在vmcall中,我们将修改MmLoadSystemImage函数的返回地址,此地址将会引发一个EPTviolation,从而产生Vm-Exit。进入EPTviolation的处理流程,此时MmLoadSystemImage已经将驱动程序加载到系统地址空间,通过对栈中数据的获取,可以成功的获得一个150LDR_DATA_TABLE_ENTRY结构,从而获取到新加载驱动程序的相关信息。-5- 中国科技论文在线http://www.paper.edu.cn调用被inlinehook的调用真正的MmLoadSystemImage函数MmLoadSystemImage函数函数运行完成,引发引发一个vmcall,通过EPTviolation,通过vm-exit进入虚拟机监控器vm-exit进入虚拟机监控器修改函数返回地址获取加载后的驱动信息图3驱动信息获取2.3.2ept页表属性设置EPT页表是硬件辅助虚拟化页表,用来实现多个虚拟机的物理地址的隔离,其原理与[10]155x86模式下的分页机制相同。从系统设计中,我们可以看出会对操作系统内核函数和内核数据分别设置为不可执行和不可修改的权限,这样会产生一个EPT异常方便我们的监控,但是为了使程序的正常运行,需要不断的对权限进行设置,这样对系统会产生极大的开销。如果使用两套EPT页表分别设置权限,只需要在程序初始化时设置一次,之后产生EPT异常只需要对EPT页表进行切换,程序即可正常运行,不但提高了运行性能,也减少了程序160的逻辑复杂度。图4EPT页表转换对内核函数调用和内核数据等权限的设置,依赖于ept页表本身的机制。如图4所示,165EPT页表的基地址保存在EPTP寄存器中,VMX架构实现了最高4级EPT页表转换的结构,分别为EPTPML4T、EPTPDPT、EPTPDT、EPTPT。它们的表项分别为EPTPML4E、EPTPDPTE、EPTPDE、EPTPTE。每一个表项的最后三位用于对内存的属性设置,其中第0位代表读权限,第1位代表写权限,第2位代表执行权限。由于本系统采用完整的4级EPT页表转换,分页大小为4K,所以只在PTE表项中对内存属性进行设置即可。通过对两套170EPT页表的设置,能够实现被监控驱动程序和系统内核的隔离运行,如图5所示。-6- 中国科技论文在线http://www.paper.edu.cnR内核函数内核函数XR内核数据W内核数据R被监控被监控驱动代码驱动代码XR被监控被监控W驱动数据驱动数据OLD_EPTEX_EPT图5隔离模块从图中我们可以看出,在原始EPT页表OLD_EPT中,被监控驱动程序没有运行的权限,在新建的EPT页表EX_EPT中,被监控驱动程序没有调用内核函数和访问内核数据的175权限。2.3.3内核函数和内核数据的获取获取内核函数地址的方案为利用内核模块的导出表,获取导出函数的地址,在此基础上[11-12]添加了SSDT的地址。针对内核数据地址的获取,采用了物理内存扫描技术,这种技术[13]常常用于取证分析,所以获得的内核数据结果比较准确。该技术的原理依赖于windows180本身的内存管理机制。如图6所示对于一个内核对象,在它分配的内存之前,存在一个固定对象头,在固定对象头之前,可能存在一个可选对象头,然后会存在一个内存池头(pool_header)结构,内存池头的pooltag变量用于对内核对象进行标注,不同的内核对象pooltag的值是不一样的。例如在windowxp中进程对象的pooltag值为“pro”,而驱动对象的pooltag值为“dri”。通过第1节的介绍,我们需要获取的内核对象为进程对象、驱动对象、[14]185文件对象、内核模块、注册表、网络连接对象。通过对内存扫描技术的参考,和对系统内核的调试,我们确定了这些内核对象在windowsxp中的pooltag分别为“Pro”,“Dri”,“Fil”,“Mmld”,“CM10”,“TcpA”。通过对这些字符串进行扫描,确定可能的内核对象地址,最后通过对整个pool_header结构的验证,确定这就是我们需要寻找的对象。内存池头(POOL_HEADER)可选对象头(OptionalHeaders)固定对象头(OBJECT_HEADER)内核对象(EPROCESS等等)190图6内核对象内存分布-7- 中国科技论文在线http://www.paper.edu.cn2.3.4VMCS结构配置从3.2节的设计中,我们需要对一些特殊的寄存器进行监控,在1.3节中确定了需要监控哪些寄存器。实现此方案主要依赖于虚拟化平台本身的技术设计来对这些寄存器进行监控[15]。在VMX结构中,当发生VMXroot和VMXnon-root环境之间的切换时,VMCS用来[16]195配置当前发生切换的逻辑处理器的状态及执行环境。这个结构一共有六个域,分别为客户区状态域,宿主机状态域,VM执行控制域,VM-Entry行为控制域,VM-Exit行为控制域,VM-Exit相关信息域。其中VM执行控制域可以用来控制CPU在non-root模式下某种行为是否产生VM-Exit,从而进入root模式。所以我们需要对此控制域的字段进行配置,实现对特殊寄存器的监控。200针对GDTR、LDTR、IDTR、TR的监控,需要使用secondaryprocessor-based控制字段,它的字段id值为0x0000401E。对这个控制字段的第三位descriptor-tableexiting进行设置,可以监控对GDTR、LDTR、IDTR、TR的访问。针对IA32_SYSENTER_EIP寄存器的监控,这本身是一个MSR寄存器,所以使用MSRbitmapaddress字段,它的ID值为0x00002004,这个字段提供一个64位地址,这个地址保存了一个4K大小的MSR位图,每一位都代表一205个MSR寄存器,其中IA32_SYSENTER_EIP在0x176,将此位置1,即可监控此MSR寄存器。针对DR6和DR7寄存器使用primaryprocessor-based控制字段,它的字段id值为0x00004002,对这个控制字段的第24位进行设置,可以监控对DR寄存器的访问。针对CR0寄存器使用CR0的guest/hostmask字段和readshadow字段,两个字段的ID分别为0x00006000和0x00006004。将它们的值分别设置为0xffffffff和0x00000000,实现对CR寄210存器的全面监控。2.3.5EPT页表及VMCS切换规则从3.3.2中,我们知道系统会使用两套EPT页表,并且设置不同的权限,所以为了能够使程序继续正常运行,系统需要不断的对EPT页表进行切换,切换的规则如下:1、当使用原始EPT页表时,被监控驱动程序本身,发生EPT执行异常,然后虚拟机监215控器输出一定的信息,并将当前EPT页表切换为新建的EPT页表,接着虚拟机监控器会配置VMCS结构保护一些特殊的寄存器;2、当使用新建的EPT页表时,发生内核函数执行异常(原因为被监控程序调用内核函数),接着虚拟机监控器输出一定的信息,并将当前EPT页表切换为原始的EPT页表,接着虚拟机监控器会配置VMCS结构关闭对特殊寄存器保护;2203、当使用新建的EPT页表时,发生内核数据写入异常(原因为被监控程序修改内核数据),接着虚拟机监控器输出一定的信息,并将当前EPT页表切换为原始的EPT页表,接着虚拟机监控器会配置VMCS结构关闭对特殊寄存器保护。通过以上的EPT异常监控,虚拟机监控器,可以很清楚的动态监控驱动程序行为,并且我们也可以通过EPT页表的切换清楚的知道程序即将运行自身的代码还是调用内核函数或者修改内核数据,所以可以轻松的配225置VMCS结构来保护寄存器。4、当使用新建的EPT页表时,虚拟机会配置VMCS结构保护一些特殊的寄存器,如果这个时候被监控程序对这些寄存器进行了读取或修改操作,将会输出一定的信息,取消寄存器保护来正常运行程序,并通过一个单步操作重新开启寄存器保护。-8- 中国科技论文在线http://www.paper.edu.cn2.3.6输出驱动程序行为230从3.3.5中,我们可以发现每次发生异常,都会输出具体的信息。此主要利用了Vm-Exit[16]的退出原因进行判断。针对内核函数和内核数据的监控,引发Vm-Exit的原因为Eptviolation。通过ExitQualification字段可以得知具体是什么行为引发的Eptviolation,通过对触发Eptviolation地址的匹配,能够了解具体调用了什么函数或者访问了什么数据,在Vm-root模式中将会输出这些信息。235对于访问寄存器的退出分为GDTR、IDTR访问退出,LDTR、TR访问退出,MSR寄存器读退出,MSR寄存器写退出,DR寄存器访问退出和CR寄存器访问退出。所以通过这个就能将退出的原因分类输出。其中GDTR、IDTR退出原因是一样的,LDTR、TR退出原因是一样的,但是通过instrutioninformation字段(这是一个vm退出信息类的字段)提供的信息,可以具体的判断出是使用了什么指令,访问了哪个寄存器。针对所有的MSR寄存器240都在一个退出口,可以通过获取ecx寄存器的值,知道具体访问了哪个MSR寄存器。针对DR寄存器都在一个退出口,可以通过qualification字段(这是一个vm退出信息类的字段),知道具体访问了哪个DR寄存器,并且能判断出是读取还是写入。针对CR寄存器都在一个退出口,也可以通过qualification字段,知道具体访问了哪个CR寄存器,访问的类型等。至此,整个系统的完整、准确的输出被监控程序的访问信息。2453实验测试本实验测试环境为DellPowerEdgeT310服务器,此服务器CPU为IntelXeonX3430,内存4G,测试系统为windowsxpsp3.采用4个驱动程序对系统功能进行验证。分别命名function.sys,data.sys,[17]register.sys,xuetr.exe。function.sys为我们实现的驱动程序,主要功能是对一些内核函数进250行系统调用,data.sys为我们实现的驱动程序,主要功能是对一些内核数据进行修改,register.sys为我们实现的驱动程序,主要功能是对一些寄存器进行修改。xuetr.exe是一个anti-rootkit,用于恢复被rootkit破坏的内容,它本身是一个可执行文件,在执行后会释放一个随机命名的驱动程序进行加载,并且加载后会将驱动程序删除。实验结果如表1所示,对于前三个程序,通过对源码的匹配,监控系统完整的输出了驱动正确的运行信息。对于255xuetr.exe,由于其会删除驱动程序,所以在windows的文件系统中是找不到它的文件名的,但是我们的监控系统成功的输出了加载的驱动名,并且通过多次测试,每次的驱动名的确都不一样。由于xuetr功能复杂,自然在内核函数调用,内核数据访问和寄存器访问都能监控到它的行为。表1行为分析程序名输出被监控输出调用函数输出访问数输出访问寄存器驱动名信息据信息信息function.sys是是否否data.sys是否是否register.sys是否否是xuetr.exe是是是是-9- 中国科技论文在线http://www.paper.edu.cn2604结论Windows驱动程序运行于ring0层,由于其高特权性导致难以被调试、监控。甚至一些rootkit类程序,为了生效恶意行为,恶意绕过一些保护机制。本文提供了一种基于虚拟化的windows驱动程序动态分析方法,利用硬件虚拟化技术,利用两套EPT页表将被监控驱动程序和windows内核隔离运行,使分析的结果更加可靠,对保护的内容进行大量的总结,265进行详细的分类,并通过物理内存扫描技术来获取windows内核数据,保证分析的结果更加的全面。通过对该方法的测试,证明该方法有很强windows驱动程序分析能力,能够监控驱动程序的运行细节。目前本方案还存在进一步改进的方法,对于复杂的驱动程序,可以对其行为建模,输出驱动程序的具体行为,将会进一步加大对驱动程序的分析效率,这也是我们接下来的目标。270[参考文献](References)[1]BaligaA,GanapathyV,IftodeL.Detectingkernel-levelrootkitsusingdatastructureinvariants[J].IEEETransactionsonDependableandSecureComputing,2011,8(5):670-684.[2]傅建明,沙乐天,李鹏伟,等.一种采用硬件虚拟化的内核数据主动保护方法[J].四川大学学报:工程275科学版,2014,46(1):8-13.[3]陈兴蜀,赵丹丹,李辉等.基于虚拟化的不可信模块运行监控[J].华中科技大学学报:自然科学版,2016,44(3):34-38.[4]DangA,MohinderP,SrivastavaV.Systemandmethodforkernelrootkitprotectioninahypervisorenvironment:U.S.Patent9,465,700[P].2016-10-11.280[5]张瑜,刘庆中,李涛,等.Rootkit研究综述[J].电子科技大学学报,2015,44(4):564.[6]OkolicaJ,PetersonGL.Windowsoperatingsystemsagnosticmemoryanalysis[J].digitalinvestigation,2010,7:S48-S56.[7]NeigerG,SantoniA,LeungF,etal.IntelVirtualizationTechnology:HardwareSupportforEfficientProcessorVirtualization[J].IntelTechnologyJournal,2006,10(3).285[8]FattoriA,PaleariR,MartignoniL,etal.Dynamicandtransparentanalysisofcommodityproductionsystems[C]//ProceedingsoftheIEEE/ACMinternationalconferenceonAutomatedsoftwareengineering.ACM,2010:417-426.[9]TsaurWJ,WuJX.NewWindowsRootkitTechnologiesforEnhancingDigitalRightsManagementinCloudComputingEnvironments[C]//ProceedingsoftheInternationalConferenceone-Learning,e-Business,Enterprise290InformationSystems,ande-Government(EEE).TheSteeringCommitteeofTheWorldCongressinComputerScience,ComputerEngineeringandAppliedComputing(WorldComp),2014:1.[10]李勇,郭玉东,王晓睿,等.基于EPT的内存虚拟化研究与实现[J].计算机工程与设计,2010(18):4101-4104.[11]McGuire,Frank.PoolAllocationsasanInformationSourceinWindowsMemoryForensics.[C]//It-Incidents295Management&It-Forensics-Imf2006,ConferenceProceedings,October,-,2006,Stuttgart.DBLP,2006:104-115.[12]SchusterA.TheimpactofMicrosoftWindowspoolallocationstrategiesonmemoryforensics[J].DigitalInvestigation,2008,5:S58-S64.[13]苟木理.面向Windows8物理内存镜像文件的内存取证技术研究[D].重庆大学,2013.300[14]SylveJT,MarzialeV,RichardGG.Pooltagquickscanningforwindowsmemoryanalysis[J].DigitalInvestigation,2016,16:S25-S32.[15]WrightJL.WhereamI?OperatingSystemAndVirtualizationIdentificationWithoutSystemCalls[J].Coeur,2017.[16]邓志.处理器虚拟化技术[M].电子工业出版社,2014.305[17]震震有词.铲除病毒的又一利刃——XueTr[J].网友世界,2009(14):62-63.-10-'