监控虚拟机进程的系统和方法、过滤pagefault异常的方法

文档序号:10686889阅读:405来源:国知局
监控虚拟机进程的系统和方法、过滤page fault异常的方法
【专利摘要】本发明公开了一种监控虚拟机进程的系统和方法、过滤page fault异常的方法,其中,监控系统为:拦截设置模块动态实时的修改虚拟机系统调用表,拦截虚拟机系统调用;捕获模块捕获虚拟机进程执行被监控系统调用时产生的异常;分析处理模块分析虚拟机进程系统调用行为是否异常;策略库存储虚拟机系统调用监控策略;日志存储虚拟机中异常系统调用行为数据;终端动态实时的更新策略库。本发明根据所需监控的功能,动态实时地配置监控策略,且在不需重启虚拟机或云平台的情况下即时生效;避免了虚拟机进程执行不必要监控系统调用时带来的额外性能消耗;且兼容于所有x86指令发起的系统调用流程。
【专利说明】
监控虚拟机进程的系统和方法、过滤page fau 11异常的方法
技术领域
[0001]本发明涉及虚拟机安全监控领域,具体涉及一种监控虚拟机进程的系统和方法、过滤page fault异常的方法。
【背景技术】
[0002]虚拟化技术已经发展成为云计算平台的核心技术之一,可将实体物理资源进行抽象后分配给多个虚拟机,虚拟机运行着真实的操作系统为租户提供服务,而如今广泛使用的操作系统在系统安全方面存在着不同程度的安全缺陷,这些安全缺陷在虚拟机操作系统中同样存在。通过虚拟机操作系统的漏洞获得特权的进恶意软件可以轻易的破坏操纵系统,如计算机病毒、蠕虫、木马等,在成功入侵操作系统后,这些恶意软件能够窃取计算机操作系统敏感数据,破坏应用程序和数据的完整性,修改宿主进程代码以伪装自身的存在,访问甚至修改敏感文件内容等,严重威胁虚拟机的安全,因此虚拟机的安全性受到越来越多的关注。为尽早发现针对虚拟机的攻击或异常,有必要对虚拟机内的进程进行监控。
[0003]系统调用是操作系统内核为应用层进程提供的接口,为应用程序提供多种不同功能的服务,因此,对系统调用实施监控对分析进程行为具有重要作用。在云平台中,现有的虚拟机系统调用监控方法主要分为两类:一类是内部监控,在虚拟机内核中安装监控代理,使监控代理与虚拟机内核具有相同的特权级,随后通过修改系统调用表、挂钩系统调用函数等方法,拦截系统调用的执行流程,根据系统调用参数进一步分析系统进程的行为。同时,由VMM(Virtual Machine Monitor,虚拟机监视器)提供对监控代理安全性的保证,避免恶意软件对监控代理的攻击;另一类是外部监控,利用VMM的高特权级特性,在VMM中透明地改变虚拟机系统调用指令的正常运行条件,使虚拟机在执行系统调用时产生异常陷入到VMM中,随后VMM利用VMI(Virtual Machine Introspect1n,虚拟机自省)技术读取参数进行分析。
[0004]第一种方法可以方便的获取虚拟机语义信息,但存在缺陷:I)监控代理依赖于目标虚拟机,不具有通用性;2)VMM提供了对监控代理的安全防护措施,引入的额外防护执行流程增加了监控系统执行的复杂性。第二种方法利用VMM具有的高特权级和隔离性,将监控流程转移到VMM中,提高了通用性,同样存在不足:1)执行任意系统调用时,都会产生异常陷入到VMM中,不能根据实际需求对系统调用进行选择性的监控,灵活性差;2)执行不需监控的系统调用依然会产生异常而陷入VMM,带来了额外的性能损耗;3)不同版本操作系统使用的系统调用指令不同,需要对多种系统调用指令分别进行针对性的开发,流程复杂。

【发明内容】

[0005]本发明所要解决的技术问题是提供一种监控虚拟机进程的系统和方法、一种过滤page fault异常的方法,在VMM中动态实时的配置系统调用监控策略,通过透明地修改虚拟机系统调用在系统调用表中对应的表项,根据需求拦截需要监控的系统调用以分析虚拟机进程行为。
[0006]为解决上述技术问题,本发明采用的技术方案是:
[0007]一种监控虚拟机进程的系统,包括拦截设置模块、捕获模块、分析处理模块、策略库和终端;
[0008]拦截设置模块:读取策略库中系统调用监控策略,通过修改虚拟机系统调用表,完成对虚拟机系统调用拦截的配置;根据动态更新的系统调用监控策略,实时透明地配置虚拟机系统调用监控流程;接收完成配置虚拟机系统调用监控流程后的反馈信息,并写入策略库;
[0009]捕获模块:捕获虚拟机进程执行被拦截系统调用时产生的异常;利用VMI读取虚拟机进程,执行被拦截系统调用的行为数据;将行为数据传递到分析处理模块;
[0010]分析处理模块:接收捕获模块传递的虚拟机系统调用行为数据;读取策略库中系统调用监控策略对行为数据进行分析,判定是否为异常行为;分析完毕后,恢复虚拟机系统调用正常执行流程;
[0011]策略库:存储系统调用监控策略,包括虚拟机系统调用拦截配置和虚拟机系统调用行为规则;为拦截设置模块提供虚拟机系统调用拦截配置;为分析处理模块提供虚拟机系统调用行为规则;实时动态地接收终端传递的系统调用监控策略;
[0012]终端:实时动态接收系统调用监控策略,并更新策略库。
[0013]进一步的,还包括日志,所述日志接收并记录分析处理模块传递的虚拟机系统调用异常行为数据。
[0014]一种监控虚拟机进程的方法,包括以下步骤:
[0015]步骤1、在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,随后填充为唯一的非法地址;
[0016]在虚拟机运行过程中,若策略库中动态添加系统调用监控,拦截设置模块读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,填充为唯一的非法地址;
[0017]在虚拟机运行过程中,若策略库中动态取消系统调用的监控,拦截设置模块读取策略库中对应的虚拟机系统调用处理程序地址,填充进入虚拟机系统调用表中对应的表项;
[0018]步骤2、捕获模块捕获虚拟机进程调用被监控系统调用产生的异常后,利用VMI读取虚拟机进程系统调用行为数据,传递到分析处理模块;
[0019]虚拟机进程调用未被监控系统调用时,不会产生异常,按照正常执行流程执行对应的系统调用处理函数;
[0020]步骤3、分析处理模块接收捕获模块传递的系统调用行为数据,读取策略库中的系统调用监控策略,并根据系统调用监控策略分析系统调用行为数据;
[0021]若当前虚拟机系统调用行为正常,直接恢复虚拟机系统调用执行流程;若当前虚拟机进程系统调用行为异常,则将系统调用行为数据写入日志后,恢复虚拟机系统调用执行流程;
[0022]步骤4:策略库接收终端传递的配置信息;策略库为分析处理模块提供判断虚拟机进程系统调用行为的行为规则;
[0023]在虚拟机启动过程中,策略库为拦截设置模块提供拦截虚拟机系统调用的配置信息;
[0024]在虚拟机运行过程,策略库为拦截设置模块提供拦截虚拟机系统调用实时动态变化的配置信息,同时接收拦截设置模块传递的虚拟机被拦截系统调用处理程序的原地址;
[0025]步骤5:日志接收分析处理模块传递的虚拟机进程系统调用异常行为数据;
[0026]步骤6:终端用于动态实时地更新策略库,包括增加规则、修改配置、删除映射。
[0027]进一步的,所述系统调用监控包含虚拟机系统调用拦截配置和虚拟机系统调用行为规则,其中:
[0028]虚拟机系统调用拦截配置用于提供拦截虚拟机中所需监控系统调用的所需的配置信息;
[0029]虚拟机系统调用行为规则用于提供判断虚拟机系统调用行为是否异常的依据。
[0030]进一步的,所述拦截设置模块具体实施为:
[0031]拦截设置模块根据策略库的系统调用监控策略,通过VMI方式动态实时地修改虚拟机系统调用表;
[0032]在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库;
[0033]在虚拟机运行过程中,拦截设置模块根据策略库中系统调用监控策略的更新,修改虚拟机系统调用表中相应的表项;若更新的策略是增加监控的系统调用,则修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库;若增加的变化是取消监控的系统调用,则读取策略库中对应的系统调用处理程序地址,填充到虚拟机系统调用表中对应的表项中;
[0034]在虚拟机关机后,策略库中保存的系统调用监控策略不变,作为下一次虚拟机启动过程中默认的虚拟机系统调用监控策略。
[0035]进一步的,所述捕获模块具体实施为:
[0036]捕获虚拟机进程调用被监控系统调用时产生的异常;捕获异常后根据虚拟机EIP寄存器的唯一非法地址,识别虚拟机执行的被监控的系统调用;
[0037]通过VMI技术读取虚拟机当前执行进程的语义信息、系统调用行为的参数信息和虚拟机当前的虚拟硬件信息,构成虚拟机系统调用行为数据;
[0038]将行为数据传递到分析处理模块。
[0039]进一步的,所述分析处理模块具体实施为:
[0040]分析处理模块接收捕获模块传递的虚拟机系统调用行为数据;
[0041 ]分析处理模块读取策略库中的系统调用监控策略;
[0042]根据系统调用监控策略分析行为数据,判断虚拟机系统调用行为是否异常;若异常,则将此异常行为的行为数据写入日志,恢复虚拟机系统调用正常执行流程;否则,直接恢复虚拟机系统调用正常执行流程。
[0043]进一步的,所述策略库具体实施为:
[0044]策略库动态实时的接收终端传递的虚拟机的系统调用监控策略,接收后立即生效,无需重启云平台或虚拟机;
[0045]策略库为拦截设置模块提供系统调用监控策略中的系统调用拦截配置信息,同时接收拦截设置模块的反馈信息;
[0046]策略库为分析处理模块提供系统调用监控策略中的系统调用行为规则。
[0047]进一步的,所述终端具体实施为:终端提供操作策略库的接口,实时动态地将虚拟机的系统调用监控策略写入策略库中。
[0048]—种过滤page fault异常的方法,包括以下步骤:
[0049]步骤1、在虚拟机操作系统中,不同的操作过程产生不同的pagefault异常类型,每一种page fault异常类型对应一种error code ;
[0050]步骤2、根据判断规则,虚拟机虚拟硬件层判断errorcode是否属于因虚拟机调用被监控虚拟机而产生的page fault异常;若是,则进行步骤3 ;若不是,则进行步骤6 ;
[0051 ] 所述判断规则:err&mask=match,其中:所述err为虚拟机中产生的page fault异常对应的error code;所述mask为VMM中虚拟机控制数据结构中的缺页异常错误码MASK字段中的值;所述match为VMM中虚拟机控制数据结构中的缺页异常错误码MATCH字段中的值;所述mask和match的值相同,均为虚拟机访问错误地址产生的page fault异常对应的errorcode值;步骤3、捕获模块捕获虚拟机中因调用被监控系统调用产生的page fault异常,并通过VMI方式读取系统调用行为数据;
[0052]步骤4、分析处理模块对虚拟机系统调用行为数据进行分析与处理;
[0053]步骤5、分析处理模块完成之后,继续执行虚拟机系统调用的正常执行流程;
[0054]步骤6、不属于因虚拟机系统调用拦截产生的pagefault异常类型交由虚拟机操作系统内核进行处理。
[0055]与现有技术相比,本发明的有益效果是:
[0056]I)本发明利用VMI透明地修改系统调用表,根据个性化需求选择性的监控系统调用,提高了灵活性,并适用于所有X86系统调用指令发起的系统调用流程。
[0057]2)本发明不需监控的系统调用在虚拟机中正常执行,不会产生page fault异常陷入VMM中带来额外的性能损耗。
[0058]3)本发明可实时动态地更新系统调用监控策略,且在不需重启虚拟机或云平台的情况下即时生效,具有良好的可扩展性。
[0059]4)本发明将监视工具开发在VMM中,直接在硬件虚拟资源层上构建监控工具的运行环境,监控工具与被监控的虚拟机及应用程序的系统调用流程相隔离,确保监控工具不会被虚拟机中的恶意软件攻击,提升了监控工具的安全性。
【附图说明】
[0060]图1为本发明中非代理虚拟机进程系统调用行为监控方法框图。
[0061 ]图2为本发明中透明捕获虚拟机系统调用流程图。
[0062]图3为本发明中pagefault过滤机制的流程图。
【具体实施方式】
[0063]下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0064]如图1所示,本发明公开了一种非代理虚拟机进程系统调用行为监控系统,其由拦截设置模块、捕获模块、分析处理模块、策略库、日志和终端组成。
[0065]其中,拦截设置模块根据策略库中的系统调用监控策略修改虚拟机系统调用表,将需要进行监控的系统调用对应的表项修改为唯一非法地址,对取消监控的系统调用对应的表项修改为系统调用处理程序地址。
[0066]捕获模块捕获虚拟机进程调用被监控系统调用产生的异常,利用VMI读取虚拟机系统调用行为数据。
[0067]分析处理模块对捕获模块读取的行为数据进行分析,根据策略库中的系统调用监控策略判定虚拟机当前进程系统调用行为是否异常,若正常,则继续,否则将异常行为数据写入日志,分析完毕后恢复虚拟机系统调用正常处理流程。
[0068]策略库存储系统调用监控策略。
[0069]日志记录分析处理模块传递的异常行为数据。
[0070]终端能够动态实时的更新策略库,包括但不限于增加规则、修改配置、删除映射等。
[0071]所述系统调用监控策略,包括但不限于虚拟机系统调用拦截配置、虚拟机系统调用行为规则,其中:虚拟机系统调用拦截配置,此处被定义为能够拦截指定虚拟机系统调用的一组属性,包括但不限于虚拟机系统调用号、虚拟机系统调用名称、虚拟机系统调用是否拦截、拦截虚拟机系统调用的唯一非法地址和虚拟机系统调用原有地址。
[0072]实例:可采用如下方式定义系统调用拦截配置:
[0073]5sys_open true OxFFFFFFFF-5 0xc0507240
[0074]该配置表明,对虚拟机中系统调用号为5的系统调用SyS_0pen进行拦截,将对应的系统调用表项填充为唯一的非法地址OxFFFFFFFF-5,并将原有表项地址0xc0507240存入策略库。
[0075]5sys_open false OxFFFFFFFF-5 0x00000000
[0076]该配置表明,对虚拟机中系统调用号为5的调用SyS_0pen未进行拦截,将对应的系统调用表项对应的非法地址为OxFFFFFFFF-5,并将原有表项地址为0x00000000。
[0077]虚拟机系统调用行为规则,此处被定义为能够限定虚拟机系统调用行为的一组属性。包括但不限于进程名称、虚拟机系统调用号、虚拟机系统调用名称、操作对象、操作模式、操作规则。
[0078]实例:可采用如下方式定义系统调用行为规则:
[0079]sshd 5sys_open/etc/passwd read allow
[0080]该规则表明,虚拟机中的进程sshd通过系统调用号为5的系统调用SyS_0pen读取文件/etc/passwd的行为是允许的。
[0081 ]本发明使用硬件虚拟化技术支持的VMM(如KVM,XEN等),且在应用之前,需要预先修改VMM中的虚拟机控制结构,以Intel VT支持的VMCS为例,其中主要包括:将VMCS的EXCEPT 10Ν_Β ITMAP字段的PF位置位,以捕获虚拟机中的page fau 11异常;将VMCS的PAGE_FAULT_ERR0R_C0DE_MASK 字段和 PAGE_FAULT_ERROR_CODE_MATCH 字段同时填充为虚拟机因访问错误地址而产生的page fault异常对应的error code值。
[0082]各模块间的数据流转如下:
[0083]—、在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,随后填充为唯一的非法地址;
[0084]在虚拟机运行过程中,若策略库中动态添加系统调用监控,拦截设置模块读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,填充为唯一的非法地址;
[0085]在虚拟机运行过程中,若策略库中动态取消系统调用的监控,拦截设置模块读取策略库中对应的虚拟机系统调用处理程序地址,填充进入虚拟机系统调用表中对应的表项。
[0086]二、捕获模块捕获虚拟机进程调用被监控系统调用产生的异常后,利用VMI读取虚拟机进程系统调用行为数据,传递到分析处理模块;
[0087]虚拟机进程调用未被监控系统调用时,不会产生异常,按照正常执行流程执行对应的系统调用处理函数。
[0088]三、分析处理模块接收捕获模块传递的系统调用行为数据,读取策略库中的系统调用监控策略,并根据系统调用监控策略分析系统调用行为数据;
[0089]若当前虚拟机系统调用行为正常,直接恢复虚拟机系统调用执行流程;若当前虚拟机进程系统调用行为异常,则将系统调用行为数据写入日志后,恢复虚拟机系统调用执行流程。
[0090]四、策略库接收终端传递的配置信息;策略库为分析处理模块提供判断虚拟机进程系统调用行为的行为规则;
[0091]在虚拟机启动过程中,策略库为拦截设置模块提供拦截虚拟机系统调用的配置信息;
[0092]在虚拟机运行过程,策略库为拦截设置模块提供拦截虚拟机系统调用实时动态变化的配置信息,同时接收拦截设置模块传递的虚拟机被拦截系统调用处理程序的原地址。
[0093]五、日志接收分析处理模块传递的虚拟机进程系统调用异常行为数据。
[0094]六、终端用于动态实时地更新策略库,包括但不限于增加规则、修改配置、删除映射等。
[0095]本发明公开了一种虚拟机系统调用拦截方法,即监控方法,该方法能够透明地拦截X86架构下的虚拟机系统调用执行流程,灵活地根据个性化需求选择监控的系统调用,避免不必要监控的系统调用陷入VMM产生额外的性能消耗,具体流程如附图2所示:
[0096]I)终端201更新策略库202中的系统调用监控策略,包括但不限于系统调用拦截配置、虚拟机进程系统调用行为规则等。
[0097]2)在虚拟机启动时,拦截设置模块203读取策略库202中的系统调用监控策略,利用VMI技术将虚拟机系统调用表204中需要监控的系统调用对应的表项填充为唯一的非法地址;在虚拟机运行过程中,通过终端201在策略库202中动态添加系统调用监控策略时,设置拦截模块203将虚拟机系统调用表204中需要监控的系统调用的对应的表项填充为唯一的非法地址,并将原地址写入策略库202;在虚拟机运行过程中,通过终端201在策略库202中动态删除虚拟机系统调用监控策略时,设置拦截模203块读取策略库202中存储的系统调用原地址,并填充入虚拟机系统调用表对应的表项中。
[0098]3)进程205通过系统调用指令206(如;[111:、85^611丨61'或85^0311)发起系统调用请求,利用通用寄存器EAX、EBX、ECX、EDX、ESI和EDI传递参数,其中EAX寄存器存储系统调用号;虚拟机内核根据EAX中存储的系统调用号在系统调用表204中进行搜索,读取对应表项中存储的系统调用处理函数地址;若调用未拦截系统调用,则直接跳转到系统调用处理程序209执行;若调用被拦截系统调用,则因访问错误地址产生page fault异常并陷入捕获模块207中。
[0099]4)捕获模块207捕获虚拟机中产生的page fault异常,通过虚拟机EIP寄存器中的唯一的非法地址判断被监控的系统调用类型;通过VMI方式获取虚拟机当前执行进程的语义信息、系统调用行为的参数信息和虚拟机当前的虚拟机硬件信息,组成虚拟机系统调用行为数据,并传递到分析处理模块208。
[0100]5)分析处理模块208接收捕获模块207传递的系统调用行为数据后,读取策略库202中系统调用监控策略,分析系统调用行为数据;若虚拟机进程系统调用行为异常,则将行为数据写入日志211,在将策略库202中存放的虚拟机系统调用处理程序209地址写入虚拟机EIP寄存器,恢复虚拟机系统调用正常执行流程;若虚拟机进程系统调用行为正常,则直接将策略库202中存放的虚拟机系统调用处理程序209地址写入虚拟机EIP寄存器,恢复虚拟机系统调用正常执行流程。
[0101]6)系统调用处理程序209在虚拟机内核中按照正常流程继续执行,执行完毕后调用系统调用退出指令210恢复进程205的正常运行。
[0?02] 本发明同时公开了一种page fault异常过滤方法,该方法能够对产生陷入的pagefault异常进行过滤,减少虚拟机不相关page fault异常陷入VMM带来的额外性能消耗,具体流程如图3:
[0103] I)步骤301表示,在虚拟机操作系统中,不同的操作过程产生不同的page fault异常类型,每一种page fault异常类型对应一种error code。
[0?04] 2)步骤302表示,根据判断规则,虚拟机虚拟硬件层判断error code是否属于因虚拟机调用被监控虚拟机而产生的page fault异常;若是,则进行步骤303;若不是,则进行步骤306;
[0105]所述判断规则:err&mask=match,其中:
[0106]所述err为虚拟机中产生的page fault异常对应的error code ;
[0107]所述mask为VMM中虚拟机控制数据结构中的缺页异常错误码MASK字段中的值;以Intel VT支持的VMCS为例,所述mask为VMM中VMCS结构的PAGE_FAULT_ERR0RJ:0DE_MASK字段中的值;
[0108]所述match为VMM中虚拟机控制数据结构中的缺页异常错误码MATCH字段中的值;以 Intel VT支持的VMCS为例,所述match为VMM中VMCS结构的PAGE_FAULT_ERR0RJ:0DE_MATCH字段中的值;
[0?09] 所述mask和match的值相同,均为虚拟机访问错误地址产生的page fault异常对应的 error code值。
[0110]3)步骤303表示,捕获模块捕获虚拟机中因调用被监控系统调用产生的pagefault异常,并通过VMI方式读取系统调用行为数据。
[0111]4)步骤304表示,分析处理模块对虚拟机系统调用行为数据进行分析与处理。
[0112]5)步骤305表示,分析处理模块完成之后,继续执行虚拟机系统调用的正常执行流程;
[0113]6)步骤306表示,不属于因虚拟机系统调用拦截产生的page fault异常类型交由虚拟机操作系统内核进行处理。
【主权项】
1.一种监控虚拟机进程的系统,其特征在于,包括拦截设置模块、捕获模块、分析处理模块、策略库和终端;拦截设置模块:读取策略库中系统调用监控策略,通过修改虚拟机系统调用表,完成对虚拟机系统调用拦截的配置;根据动态更新的系统调用监控策略,实时透明地配置虚拟机系统调用监控流程;接收完成配置虚拟机系统调用监控流程后的反馈信息,并写入策略库;捕获模块:捕获虚拟机进程执行被拦截系统调用时产生的异常;利用VMI读取虚拟机进程,执行被拦截系统调用的行为数据;将行为数据传递到分析处理模块; 分析处理模块:接收捕获模块传递的虚拟机系统调用行为数据;读取策略库中系统调用监控策略对行为数据进行分析,判定是否为异常行为;分析完毕后,恢复虚拟机系统调用正常执行流程; 策略库:存储系统调用监控策略,包括虚拟机系统调用拦截配置和虚拟机系统调用行为规则;为拦截设置模块提供虚拟机系统调用拦截配置;为分析处理模块提供虚拟机系统调用行为规则;实时动态地接收终端传递的系统调用监控策略; 终端:实时动态接收系统调用监控策略,并更新策略库。2.如权利要求1所述的监控虚拟机进程的系统,其特征在于,还包括日志,所述日志接收并记录分析处理模块传递的虚拟机系统调用异常行为数据。3.一种监控虚拟机进程的方法,其特征在于,包括以下步骤: 步骤1、在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,随后填充为唯一的非法地址; 在虚拟机运行过程中,若策略库中动态添加系统调用监控,拦截设置模块读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,填充为唯一的非法地址; 在虚拟机运行过程中,若策略库中动态取消系统调用的监控,拦截设置模块读取策略库中对应的虚拟机系统调用处理程序地址,填充进入虚拟机系统调用表中对应的表项;步骤2、捕获模块捕获虚拟机进程调用被监控系统调用产生的异常后,利用VMI读取虚拟机进程系统调用行为数据,传递到分析处理模块; 虚拟机进程调用未被监控系统调用时,不会产生异常,按照正常执行流程执行对应的系统调用处理函数; 步骤3、分析处理模块接收捕获模块传递的系统调用行为数据,读取策略库中的系统调用监控策略,并根据系统调用监控策略分析系统调用行为数据; 若当前虚拟机系统调用行为正常,直接恢复虚拟机系统调用执行流程;若当前虚拟机进程系统调用行为异常,则将系统调用行为数据写入日志后,恢复虚拟机系统调用执行流程; 步骤4:策略库接收终端传递的配置信息;策略库为分析处理模块提供判断虚拟机进程系统调用行为的行为规则; 在虚拟机启动过程中,策略库为拦截设置模块提供拦截虚拟机系统调用的配置信息;在虚拟机运行过程,策略库为拦截设置模块提供拦截虚拟机系统调用实时动态变化的配置信息,同时接收拦截设置模块传递的虚拟机被拦截系统调用处理程序的原地址; 步骤5:日志接收分析处理模块传递的虚拟机进程系统调用异常行为数据; 步骤6:终端用于动态实时地更新策略库,包括增加规则、修改配置、删除映射。4.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述系统调用监控包含虚拟机系统调用拦截配置和虚拟机系统调用行为规则,其中: 虚拟机系统调用拦截配置用于提供拦截虚拟机中所需监控系统调用的所需的配置信息; 虚拟机系统调用行为规则用于提供判断虚拟机系统调用行为是否异常的依据。5.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述拦截设置模块具体实施为: 拦截设置模块根据策略库的系统调用监控策略,通过VMI方式动态实时地修改虚拟机系统调用表; 在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库; 在虚拟机运行过程中,拦截设置模块根据策略库中系统调用监控策略的更新,修改虚拟机系统调用表中相应的表项;若更新的策略是增加监控的系统调用,则修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库;若增加的变化是取消监控的系统调用,则读取策略库中对应的系统调用处理程序地址,填充到虚拟机系统调用表中对应的表项中; 在虚拟机关机后,策略库中保存的系统调用监控策略不变,作为下一次虚拟机启动过程中默认的虚拟机系统调用监控策略。6.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述捕获模块具体实施为: 捕获虚拟机进程调用被监控系统调用时产生的异常;捕获异常后根据虚拟机EIP寄存器的唯一非法地址,识别虚拟机执行的被监控的系统调用; 通过VMI技术读取虚拟机当前执行进程的语义信息、系统调用行为的参数信息和虚拟机当前的虚拟硬件信息,构成虚拟机系统调用行为数据; 将行为数据传递到分析处理模块。7.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述分析处理模块具体实施为: 分析处理模块接收捕获模块传递的虚拟机系统调用行为数据; 分析处理模块读取策略库中的系统调用监控策略; 根据系统调用监控策略分析行为数据,判断虚拟机系统调用行为是否异常;若异常,则将此异常行为的行为数据写入日志,恢复虚拟机系统调用正常执行流程;否则,直接恢复虚拟机系统调用正常执行流程。8.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述策略库具体实施为: 策略库动态实时的接收终端传递的虚拟机的系统调用监控策略,接收后立即生效,无需重启云平台或虚拟机; 策略库为拦截设置模块提供系统调用监控策略中的系统调用拦截配置信息,同时接收拦截设置模块的反馈信息; 策略库为分析处理模块提供系统调用监控策略中的系统调用行为规则。9.如权利要求3所述的监控虚拟机进程的方法,其特征在于,所述终端具体实施为:终端提供操作策略库的接口,实时动态地将虚拟机的系统调用监控策略写入策略库中。10.一种过滤page fault异常的方法,其特征在于,包括以下步骤: 步骤1、在虚拟机操作系统中,不同的操作过程产生不同的page fault异常类型,每一种page fault异常类型对应一种error code ; 步骤2、根据判断规则,虚拟机虚拟硬件层判断error code是否属于因虚拟机调用被监控虚拟机而产生的page fault异常;若是,则进行步骤3 ;若不是,则进行步骤6 ; 所述判断规则:err&mask=match,其中:所述err为虚拟机中产生的page fault异常对应的error code;所述mask为VMM中虚拟机控制数据结构中的缺页异常错误码MASK字段中的值;所述match为VMM中虚拟机控制数据结构中的缺页异常错误码MATCH字段中的值;所述mask和match的值相同,均为虚拟机访问错误地址产生的page fault异常对应的errorcode 值; 步骤3、捕获模块捕获虚拟机中因调用被监控系统调用产生的page fault异常,并通过VMI方式读取系统调用行为数据; 步骤4、分析处理模块对虚拟机系统调用行为数据进行分析与处理; 步骤5、分析处理模块完成之后,继续执行虚拟机系统调用的正常执行流程; 步骤6、不属于因虚拟机系统调用拦截产生的page fault异常类型交由虚拟机操作系统内核进行处理。
【文档编号】G06F9/455GK106055385SQ201610395359
【公开日】2016年10月26日
【申请日】2016年6月6日
【发明人】陈兴蜀, 赵成, 金鑫
【申请人】四川大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1