虚拟机监视器、虚拟机系统及客户操作系统进程处理方法

文档序号:6460260阅读:133来源:国知局

专利名称::虚拟机监视器、虚拟机系统及客户操作系统进程处理方法
技术领域
:本发明涉及操作系统进程处理技术,特别是一种虛拟机监视器、虚拟机系统及客户操作系统进程处理方法。
背景技术
:内存是操作系统管理的重要资源之一,也是病毒攻击的主要目标。内存的保护是安全操作系统提供的最基本的安全服务之一。内存保护通常是指保护用户在内存中的数据,保证系统中各个进程互不干扰,隔离进程与进程,隔离用户空间与内核空间,以及必要的访问控制。但是由于操作系统对内存保护的不够完善,或者说是操作系统自身提供的一些便利机制破坏了这种隔离保护,使得许多病毒利用了这种漏洞。如Rootkit病毒利用了远程注入可执^f亍代码的方式及远程创建线程的方法进行攻击,Rootkit病毒通过提升自己的权限为debug权限,然后打开一个远端进程如IE,向远端进程申请虚拟内存地址,写入病毒代码,或DLL文件名,然后创建远程线程运行该病毒代码。在实现本发明的过程中发现,现有技术中还没有在VMM(VirtualMonitorMachine,虛拟机监i见器)中对客户操作系统进程进行定位的技术方案。
发明内容本发明实施例的目的是提供一种虚拟机监视器、虚拟机系统及客户操作系统进程处理方法,实现在VMM中对虛拟环境下的客户操作系统中进程的定位。为了实现上述方法,本发明实施例提供了一种虚拟才几监^L器,包括获取模块,用于在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;进程识别模块,用于识别所述进程;页表识别模块,用于识别所述进程识别模块识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;定位冲莫块,用于根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。上述的虚拟机监视器,其中,所述获取模块具体包括记录单元,用于在所述客户操作系统发生环境变化时,记录CPU寄存器中的所述进程的段信息;计算单元,用于根据所述进程的段信息计算所述进程的所述客户线性地址。上述的虚拟机监视器,其中,还包括保护模块,用于保护所述机器物理内存页中所述进程的代码段。上述的虚拟机监视器,其中,所述保护模块具体为校验单元,用于对所述进程的机器物理内存页中的所述进程的代码段进行校验。上述的虚拟机监视器,其中,所述保护模块具体为设置单元,用于将所述进程的机器物理内存页中的所述进程的代码段设置为只读。为了更好的实现上述目的,本发明实施例还提供了一种虛拟机系统,包括客户操作系统和虚拟机监视器,其中,所述虛拟机监视器包括获取模块,用于在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;进程识别模块,用于识别所述进程;页表识别模块,用于识别所述进程识别模块识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;定位模块,用于根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。上述的虚拟机系统,其中,所述获取才莫块具体包括记录单元,用于在所述客户操作系统发生环境变化时,记录CPU寄存器6中的所述进程的段信息;计算单元,用于根据所述进程的段信息计算所述进程的所述客户线性地址。上述的虛拟机系统,其中,所述虛拟机监视器还包括保护模块,用于保护所述机器物理内存页中所述进程的代码段。上述的虚拟机系统,其中,所述保护模块具体为校验单元,用于对所述进程的机器物理内存页中的所述进程的代码段进行校验。上述的虚拟机系统,其中,所述保护模块具体为设置单元,用于将所述进程的机器物理内存页中的所述进程的代码段设置为只读。为了更好的实现上述目的,本发明实施例还提供了一种客户操作系统进程处理方法,其中,包括在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;识别所述进程;识别所述识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页,上述的方法,其中,还包括:和/或将所述进程的^L器物理内存页中的所述进程的代码段设置为只读。上述的方法,其中,所述识别所述进程对应的影子页表具体包括虚拟机监视器获取所述客户操作系统通知的进程名称和进程对应的CR3寄存器中的客户系统物理地址;所述虚拟机监视器获取所述客户系统物理地址对应的所述影子页表的机器物理地址;所述虚拟机监3见器对应保存所述进程与所述影子页表。上述的方法,其中,所述识别所述进程对应的影子页表具体包括虛拟机监视器建立进程CR3寄存器中的客户系统物理地址与进程名称之间的对应关系;所述虚拟机监视器获取所述客户操作系统通知的所述进程名称后,根据所述进程CR3寄存器中的客户系统物理地址与所述进程名称之间的对应关系,获取对应的所述CR3寄存器中的客户系统物理地址;所述虚拟机监视器获取所述客户系统物理地址对应的所述影子页表的机器物理地址;所述虚拟机监视器根据所述影子页表的机器物理地址获取所述影子页表;所述虚拟机监视器对应保存所述进程与所述影子页表。上述的方法,其中,所述虛拟机监视器建立进程CR3寄存器中的客户系统物理地址与进程名称之间的对应关系的步骤具体包括所述客户操作系统发生环境变化时,所述虚拟机监视器纪录待运行进程的客户CR3寄存器中的客户系统物理地址;所述虚拟机监视器获取当前运行所述进程的名称;所述虚拟机监视器将存储的上次记录的所述待运行进程的客户CR3寄存器中的客户系统物理地址和所述当前运行进程的名称进行——对应。本发明实施例具有以下有益效果本发明实施例中,通过获取进程的客户线性地址以及进程的影子页表,根据客户线性地址以及影子页表中记录的所述客户线性地址与机器物理内存页地址的对应关系准确实现了对进程的机器物理内存页的定位,实现简单,同时,根据对进程的机器物理内存页的定位,进而对进程进行了有效的保护,保护了进程以至于系统的安全。图1为本发明实施例的虛拟机系统的结构示意图;图2为本发明实施例的方法的流程示意图。具体实施例方式本发明实施例中,VMM中保存有与进程相对应的Shadow页表(影子页8表),该Shadow页表中记录有客户操作系统中进程的线性地址与机器物理内存地址之间的对应关系,进而由VMM根据当前进程的线性地址找到对应的机器物理内存地址后,定位对应的机器物理内存页,并对进程进行保护。图1为本发明实施例的虛拟机系统的结构示意图,如图1所示,虛拟机系统包括GOS(可以是一个或多个,图1中仅以一个GOS为例进行说明)、VMM和真实硬件,其中VMM中设置有页表识别模块,用于识别GOS中的进程对应的Shadow页表,所述Shadow页表中记录有进程线性地址与机器物理内存地址之间的对应关系;客户进程物理页获取模块,用于在所述客户操作系统发生环境变化时,根据进程位置信息获取进程的机器物理内存页;该客户进程物理页获取模块包括记录单元和计算单元,其中记录单元,用于在截获GOS进行进程切换时进行的访问CR3寄存器的操作(即客户操作系统发生进程切换)后,记录CPU寄存器中的进程的段信息,其中进程段信息包括CS—base寄存器中的代码段基地址和CS—limit寄存器中的代码段大小;DS—base寄存器中的数据段基地址和DS—limit寄存器中的数据段大小。在GOS载入待运行进程的页目录时,需要向CR3寄存器写入该进程页目录表的客户物理内存地址,一旦GOS访问CR3寄存器,就会被VMM截获,引发GOS到VMM运行环境的切换。计算单元,用于根据记录单元得到的进程的段信息计算进程的线性地址,即根据代码段基地址和代码段大小获取进程代码段对应的进程线性地址;根据数据段基地址和数据段大小获取进程数据段对应的进程线性地址。进程识别模块,用于识别GOS中的进程;定位模块,用于根据进程的线性地址,以及识别出的进程对应的Shadow页表中记录的客户进程线性地址与机器物理内存地址之间的对应关系,获取进程的机器物理内存页,实现对进程在真实物理内存中的定位,即根据进程代码段的线性地址,以及识别出的进程对应的Shadow页表中记录的客户线性地址与才几器物理内存地址之间的对应关系,获取进程代码段的机器物理内存页,实现对进程代码^殳的定位;根据进程数据段的线性地址,以及识别出的进程对应的Shadow页表中记录的客户线性地址与机器物理内存地址之间的对应关系,获取进程数据段的机器物理内存页,实现对进程代码^敬的定位。在定位进程的代码段和数据段的机器物理内存页后,即可根据该定位结果对进程进行进行相应的后续处理,如跟踪、保护等,因此,本发明实施例的虚拟机系统中,还包括保护模块,用于根据对进程代码段的机器物理内存页中的代码进行校验,或将进程代码^险的^L器物理内存页设置为只读。图2为本发明实施例的方法的流程示意图,如图2所示,本发明实施例的方法包括步骤21,识别GOS中的进程对应的Shadow页表,进程的Shadow页表中记录有客户进程线性地址与机器物理内存地址之间的对应关系;步骤22,在GOS发生环境变化时,识别GOS中的当前运行进程;步骤23,记录CPU的寄存器中的进程段信息,其中进程段信息包括CS—base寄存器中的代码段基地址和CSJimit寄存器中的代码段大小;DS_base寄存器中的数据段基地址和DS—limit寄存器中的数据段大小。步骤24,根据记录模块得到的进程段信息获取当前运行进程的客户线性i也址,即根据代码段基地址和代码段大小获取进程代码段对应的客户线性地址;根据数据段基地址和数据段大小获取进程数据段对应的客户线性地址。步骤25,根据当前运行进程的客户线性地址,以及识别出的当前运行进程的Shadow页表中记录的客户线性地址与机器物理内存地址之间的对应关系,获取当前运行进程的机器物理内存页,即根据进程代码段的客户线性地址,以及识别出的进程对应的Shadow页表中记录的客户进程线性地址与机器物理内存地址之间的对应关系,获取进程代码段的机器物理内存页,实现对进程代码段的定位;根据进程数据段的客户线性地址,以及识别出的进程对应的Shadow页表中记录的客户进程线性地址与机器物理内存地址之间的对应关系,获取进程数据段的机器物理内存页,实现对进程代码段的定位。步骤26,对机器物理内存页中的进程代码段进行校验,或将进程代码段的机器物理内存页设置为只读。下面以进程代码段为例对各步骤进行进一步详细的描述。在步骤21中,需要识别GOS中的进程的Shadow页表,在本发明的具体实施例中通过两种方式来实现,分别如卞所述。第一种方式,步骤21具体包括步骤21A1,GOS告知VMM需要监控的进程的名称和进程对应的CR3寄存器中的客户系统物理地址;步骤21A2,VMM获取该客户系统物理地址对应的进程的Shadow页表的机器物理地址;步骤21A3,VMM根据Shadow页表的机器物理地址获取相应的Shadow页表;步骤21A4,VMM建立并保存需要监控的进程与其对应的Shadow页表之间的对应关系。第二种方式,VMM中保存有进程对应的CR3寄存器中的客户系统物理地址与进程名称之间的对应关系,步骤21具体包括步骤21B1,VMM建立进程对应的CR3寄存器中的客户系统物理地址与进程名称之间的对应关系;步骤21B2,GOS告知VMM需要监控的进程的名称;步骤21B3,GOS根据进程对应的CR3寄存器中的客户系统物理地址与进程名称之间的对应关系,获取需要监控的进程所对应的CR3寄存器的客户系统物理地址;步骤21B4,VMM获取该客户系统物理地址对应的进程的Shadow页表的机器物理地址;步骤21B5,VMM根据Shadow页表的机器物理地址获取相应的Shadow页表;步骤21B6,VMM建立并保存需要监控的进程的名称与Shadow页表之间的对应关系。ii步骤21B1具体通过以下步骤实现步骤21B11,GOS进行进程切换时,VMM纪录待运行进程对应的CR3寄存器中的客户系统物理地址;步骤21B12,VMM获取当前运行进程的名称,在此,为进程可读标识;步骤21B13,VMM存储上轮记录的待运行进程的对应的CR3寄存器中的客户系统物理地址和当前运行进程的名称的对应关系。因为相对当前运行进程来说,在上一轮的进程切换中,其身份为待运行进程,因此,在步骤21B13中,对应存储的是上轮记录的待运行进程页目录基地址和当前运行进程的标识信息,以保证二者之间的正确对应。步骤22和步骤21B2中,都需要获取进程的进程可读标识,其具体获取过程如下所述。客户操作系统为每个进程都对应维护一个进程描述符,而该进程描述符中包括进程可读标识。以Linux操作系统为例,Linux进程管理中当前运行进程的进程描述符可通过内核或中断堆栈指针信息解析出,因为堆栈信息和进程信息被安排在相连的页面中存储。因此,可通过如下代码获取当前运行进程的进程描述符。movl$0xffife000,%ecx/*orOxffiHOOOfor4KBstacks*/andl%esp,%ecxmovl(%ecx),p而对于Windows操作系统来讲,当前运行进程的进程描述符可从prcb(processorcontrolblock)解析获得,对于每一种处理器来说,prcb的地址是固定的,因此VMM可根据该地址方便的获取当前运行进程的进程描述符。在获取了当前运行进程的进程描述符后,即可从中获取当前运行进程的进程可读标识。当然,VMM获取该进程描述符还可以是,由GOS通过特定接口将进程描述符表暴露给VMM,如通过虚拟设备的方式告诉VMM。步骤23中,记录CPU的寄存器信息,其中包括CS—base寄存器中的代码段基地址和CS—limit寄存器中的代码段大小;12DS一base寄存器中的数据段基地址和DS—limit寄存器中的数据段大小;CPU的寄存器信息如下所示,包括eip;/*executionpointer*/esp;/*stackpointer*/eflags;/*flagsregister*/crO;cr3;/*pagetabledirectory*/cr4;idtr—limit;/*idt*/idtr—basejgdtr—limit;/*gdt*/gdtr—base;cs—sel;/*csselector*/cs—limit;cs—arbytes;ds—sel;/*dsselector*/dsjimitjds_base;ds一arbytesjes一sel;/*esselector*/es一limit;es_arbytes^ss—sel;/*ssselector*/ss—limit;ss—base;ss—arbytes^fs—sel;/*fsselector*/fs一limit;fs—base;fs一arbytes;gs一sel;/*gsselector*/gsjimit;gs—base;gs—arbytes;tr_sel;/*taskselector*/tr—limit;tr—base;tr—arbytes;ldtr—sel;/*ldtrselector*/ldtr一limi"ldtr_base;ldtr_arbytes5在步骤23中,对于使用段机制的客户操作系统,VMM可以从上下文切换中获得代码段/数据段的基地址和代码段/数据段的大小,而对于弱化了段使用机制的客户操作系统,可以通过可执行文件加载器从可执行文件中获得代码段/数据段的基地址和代码段/数据段的大小。在步骤26中,需要对机器物理内存页中的进程代码段进行校验,在此,本发明的具体实施例中可通过以下方式实现利用机器物理内存页中的进程代码段作Hash运算,进行校验;利用机器物理内存页中的进程代码段作MD5运算,进行校验。当然,也可以通过其他方式实现对代码段的校验。而将进程代码段的机器物理内存页设置为只读,可通过把进程代码段所对应的Shadow页表标记为只读来实现,则在GuestOS中无法对该进程的代码空间进行修改。由于在虚拟化技术中,真正用到的页表是VMM中的Shadow页表,GOS虽然可以修改进程的页表属性,但是真正的页表设置是由VMM完成的,因此14可以通过VMM控制页表的真正属性,以达到内存保护的目的。以Rootkit病毒为例,由于相应的Shadow页表中标记为只读,表明对应的机器内存页是不可以共享的,这样当Rootkit病毒使用操作系统的远程注入技术时,在一个进程打开另一个进程,向该进程申请虚拟内存时,由于VMM中的机器的物理内存不能共享,同时代码段对应的页表是只读的,则该进程申请内存失败,无法向远端进程注入代码,实现了对内存的保护。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必须的通用石更件平台的方式来实现,当然也可以通过^f更件,但显然前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品包括若干指令用以使得一台计算机设备(这里所说的计算机设备是一个广义的概念,包括但不限于个人计算机,服务器,网络设备等)执行本发明实施例所述方法。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1.一种虚拟机监视器,其特征在于,包括获取模块,用于在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;进程识别模块,用于识别所述进程;页表识别模块,用于识别所述进程识别模块识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;定位模块,用于根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。2.根据权利要求1所述的虚拟机监视器,其特征在于,所述获取模块具体包括记录单元,用于在所述客户操作系统发生环境变化时,记录CPU寄存器中的所述进程的段信息;计算单元,用于根据所述进程段信息计算所述进程的所述客户线性地址。3.根据权利要求1或2所述的虛拟机监视器,其特征在于,还包括保护模块,用于保护所述机器物理内存页中所述进程的代码段。4.根据权利要求3所述的虚拟机监视器,其特征在于,所述保护模块具体为校验单元,用于对所述进程的机器物理内存页中的所述进程的代码段进行校验》5.根据权利要求3所述的虚拟机监视器,其特征在于,所述保护模块具体为设置单元,用于将所述进程的机器物理内存页中的所述进程的代码段设置为只读。6.—种虚拟机系统,包括客户操作系统和虚拟机监视器,其特征在于,所述虛拟机监视器包括获取模块,用于在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述,殳信息获取所述进程的客户线性地址;进程识别模块,用于识别所述进程;页表识别模块,用于识别所述进程识别模块识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;定位模块,用于根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。7.根据权利要求6所述的虚拟机系统,其特征在于,所述获取模块具体包括记录单元,用于在所述客户操作系统发生环境变化时,记录CPU寄存器中的所述进程的段信息;计算单元,用于根据所述进程的段信息计算所述进程的所述客户线性地址。8.根据权利要求6或7所述的虚拟机系统,其特征在于,所述虛拟机监视器还包括保护模块,用于保护所述机器物理内存页中所述进程的代码段。9.根据权利要求8所述的虛拟机系统,其特征在于,所述保护模块具体验。10.根据权利要求8所述的虚拟机系统,其特征在于,所述保护模块具体为设置单元,用于将所述进程的机器物理内存页中的所述进程的代码段设置为只读。11.一种客户操作系统进程处理方法,其特征在于,包括在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;识别所述进程;识别所述识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。12.根据权利要求11所述的方法,其特征在于,还包括对所述进程的机器物理内存页中的所述进程的代码段进行校验;和/或将所述进程的机器物理内存页中的所述进程的代码段设置为只读。13.根据权利要求11或12所述的方法,其特征在于,所述识别所述进程对应的影子页表具体包括虚拟才几监视器获取所述客户操作系统通知的进程名称和进程对应的CR3寄存器中的客户系统物理地址;所述虚拟机监视器获取所述客户系统物理地址对应的所述影子页表的机器物理地址;所述虚拟机监视器根据所述影子页表的机器物理地址获取所述影子页表;所述虚拟机监视器对应保存所述进程与所述影子页表。14.根据权利要求11或12所述的方法,其特征在于,所述识别所述进程对应的影子页表具体包括虛拟机监视器建立进程CR3寄存器中的客户系统物理地址与进程名称之间的对应关系;所述虛拟机监视器获取所述客户操作系统通知的所述进程名称后,根据所述进程CR3寄存器中的客户系统物理地址与所述进程名称之间的对应关系,获取对应的所述CR3寄存器中的客户系统物理地址;所述虚拟机监视器获取所述客户系统物理地址对应的所述影子页表的机器物理地址;所述虚拟机监视器根据所述影子页表的机器物理地址获取所述影子页表;所述虛拟才几监^f见器对应保存所述进程与所述影子页表。15.根据权利要求14所述的方法,其特征在于,所述虛拟机监视器建立进程CR3寄存器中的客户系统物理地址与进程名称之间的对应关系的步骤具体包括所述客户操作系统发生环境变化时,所述虚拟机监视器纪录待运行进程的客户CR3寄存器中的客户系统物理地址;所述虛拟机监视器获取当前运行所述进程的名称;所述虚拟机监视器将存储的上次记录的所述待运行进程的客户CR3寄存器中的客户系统物理地址和所述当前运行进程的名称进行——对应。全文摘要本发明提供一种虚拟机监视器、虚拟机系统及客户操作系统进程处理方法,其中该虚拟机监视器包括获取模块,用于在客户操作系统发生环境变化时,获取一进程的段信息,并根据所述段信息获取所述进程的客户线性地址;进程识别模块,用于识别所述进程;页表识别模块,用于识别所述进程识别模块识别出的进程所对应的影子页表,所述影子页表中记录有所述客户线性地址与机器物理内存页地址的对应关系;定位模块,用于根据所述客户线性地址和所述的影子页表定位所述进程的机器物理内存页。本发明准确实现了对进程的机器物理内存页的定位,同时,保护了进程以至于系统的安全。文档编号G06F9/46GK101499016SQ20081005735公开日2009年8月5日申请日期2008年1月31日优先权日2008年1月31日发明者刘春梅申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1