CN106055385B - 监控虚拟机进程的系统和方法、过滤page fault异常的方法 - Google Patents

监控虚拟机进程的系统和方法、过滤page fault异常的方法 Download PDF

Info

Publication number
CN106055385B
CN106055385B CN201610395359.2A CN201610395359A CN106055385B CN 106055385 B CN106055385 B CN 106055385B CN 201610395359 A CN201610395359 A CN 201610395359A CN 106055385 B CN106055385 B CN 106055385B
Authority
CN
China
Prior art keywords
virtual machine
call
calls
monitoring
policy library
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610395359.2A
Other languages
English (en)
Other versions
CN106055385A (zh
Inventor
陈兴蜀
赵成
金鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN201610395359.2A priority Critical patent/CN106055385B/zh
Publication of CN106055385A publication Critical patent/CN106055385A/zh
Application granted granted Critical
Publication of CN106055385B publication Critical patent/CN106055385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种监控虚拟机进程的系统和方法、过滤page fault异常的方法,其中,监控系统为:拦截设置模块动态实时的修改虚拟机系统调用表,拦截虚拟机系统调用;捕获模块捕获虚拟机进程执行被监控系统调用时产生的异常;分析处理模块分析虚拟机进程系统调用行为是否异常;策略库存储虚拟机系统调用监控策略;日志存储虚拟机中异常系统调用行为数据;终端动态实时的更新策略库。本发明根据所需监控的功能,动态实时地配置监控策略,且在不需重启虚拟机或云平台的情况下即时生效;避免了虚拟机进程执行不必要监控系统调用时带来的额外性能消耗;且兼容于所有x86指令发起的系统调用流程。

Description

监控虚拟机进程的系统和方法、过滤page fault异常的方法
技术领域
本发明涉及虚拟机安全监控领域,具体涉及一种监控虚拟机进程的系统和方法、过滤page fault异常的方法。
背景技术
虚拟化技术已经发展成为云计算平台的核心技术之一,可将实体物理资源进行抽象后分配给多个虚拟机,虚拟机运行着真实的操作系统为租户提供服务,而如今广泛使用的操作系统在系统安全方面存在着不同程度的安全缺陷,这些安全缺陷在虚拟机操作系统中同样存在。通过虚拟机操作系统的漏洞获得特权的进恶意软件可以轻易的破坏操纵系统,如计算机病毒、蠕虫、木马等,在成功入侵操作系统后,这些恶意软件能够窃取计算机操作系统敏感数据,破坏应用程序和数据的完整性,修改宿主进程代码以伪装自身的存在,访问甚至修改敏感文件内容等,严重威胁虚拟机的安全,因此虚拟机的安全性受到越来越多的关注。为尽早发现针对虚拟机的攻击或异常,有必要对虚拟机内的进程进行监控。
系统调用是操作系统内核为应用层进程提供的接口,为应用程序提供多种不同功能的服务,因此,对系统调用实施监控对分析进程行为具有重要作用。在云平台中,现有的虚拟机系统调用监控方法主要分为两类:一类是内部监控,在虚拟机内核中安装监控代理,使监控代理与虚拟机内核具有相同的特权级,随后通过修改系统调用表、挂钩系统调用函数等方法,拦截系统调用的执行流程,根据系统调用参数进一步分析系统进程的行为。同时,由VMM(Virtual Machine Monitor,虚拟机监视器)提供对监控代理安全性的保证,避免恶意软件对监控代理的攻击;另一类是外部监控,利用VMM的高特权级特性,在VMM中透明地改变虚拟机系统调用指令的正常运行条件,使虚拟机在执行系统调用时产生异常陷入到VMM中,随后VMM利用VMI(Virtual Machine Introspection,虚拟机自省)技术读取参数进行分析。
第一种方法可以方便的获取虚拟机语义信息,但存在缺陷:1)监控代理依赖于目标虚拟机,不具有通用性;2)VMM提供了对监控代理的安全防护措施,引入的额外防护执行流程增加了监控系统执行的复杂性。第二种方法利用VMM具有的高特权级和隔离性,将监控流程转移到VMM中,提高了通用性,同样存在不足:1)执行任意系统调用时,都会产生异常陷入到VMM中,不能根据实际需求对系统调用进行选择性的监控,灵活性差;2)执行不需监控的系统调用依然会产生异常而陷入VMM,带来了额外的性能损耗;3)不同版本操作系统使用的系统调用指令不同,需要对多种系统调用指令分别进行针对性的开发,流程复杂。
发明内容
本发明所要解决的技术问题是提供一种监控虚拟机进程的系统和方法、一种过滤page fault异常的方法,在VMM中动态实时的配置系统调用监控策略,通过透明地修改虚拟机系统调用在系统调用表中对应的表项,根据需求拦截需要监控的系统调用以分析虚拟机进程行为。
为解决上述技术问题,本发明采用的技术方案是:
一种监控虚拟机进程的系统,包括拦截设置模块、捕获模块、分析处理模块、策略库和终端;
拦截设置模块:读取策略库中系统调用监控策略,通过修改虚拟机系统调用表,完成对虚拟机系统调用拦截的配置;根据动态更新的系统调用监控策略,实时透明地配置虚拟机系统调用监控流程;接收完成配置虚拟机系统调用监控流程后的反馈信息,并写入策略库;
捕获模块:捕获虚拟机进程执行被拦截系统调用时产生的异常;利用VMI读取虚拟机进程,执行被拦截系统调用的行为数据;将行为数据传递到分析处理模块;
分析处理模块:接收捕获模块传递的虚拟机系统调用行为数据;读取策略库中系统调用监控策略对行为数据进行分析,判定是否为异常行为;分析完毕后,恢复虚拟机系统调用正常执行流程;
策略库:存储系统调用监控策略,包括虚拟机系统调用拦截配置和虚拟机系统调用行为规则;为拦截设置模块提供虚拟机系统调用拦截配置;为分析处理模块提供虚拟机系统调用行为规则;实时动态地接收终端传递的系统调用监控策略;
终端:实时动态接收系统调用监控策略,并更新策略库。
进一步的,还包括日志,所述日志接收并记录分析处理模块传递的虚拟机系统调用异常行为数据。
一种监控虚拟机进程的方法,包括以下步骤:
步骤1、在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,随后填充为唯一的非法地址;
在虚拟机运行过程中,若策略库中动态添加系统调用监控,拦截设置模块读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,填充为唯一的非法地址;
在虚拟机运行过程中,若策略库中动态取消系统调用的监控,拦截设置模块读取策略库中对应的虚拟机系统调用处理程序地址,填充进入虚拟机系统调用表中对应的表项;
步骤2、捕获模块捕获虚拟机进程调用被监控系统调用产生的异常后,利用VMI读取虚拟机进程系统调用行为数据,传递到分析处理模块;
虚拟机进程调用未被监控系统调用时,不会产生异常,按照正常执行流程执行对应的系统调用处理函数;
步骤3、分析处理模块接收捕获模块传递的系统调用行为数据,读取策略库中的系统调用监控策略,并根据系统调用监控策略分析系统调用行为数据;
若当前虚拟机系统调用行为正常,直接恢复虚拟机系统调用执行流程;若当前虚拟机进程系统调用行为异常,则将系统调用行为数据写入日志后,恢复虚拟机系统调用执行流程;
步骤4:策略库接收终端传递的配置信息;策略库为分析处理模块提供判断虚拟机进程系统调用行为的行为规则;
在虚拟机启动过程中,策略库为拦截设置模块提供拦截虚拟机系统调用的配置信息;
在虚拟机运行过程,策略库为拦截设置模块提供拦截虚拟机系统调用实时动态变化的配置信息,同时接收拦截设置模块传递的虚拟机被拦截系统调用处理程序的原地址;
步骤5:日志接收分析处理模块传递的虚拟机进程系统调用异常行为数据;
步骤6:终端用于动态实时地更新策略库,包括增加规则、修改配置、删除映射。
进一步的,所述系统调用监控包含虚拟机系统调用拦截配置和虚拟机系统调用行为规则,其中:
虚拟机系统调用拦截配置用于提供拦截虚拟机中所需监控系统调用的所需的配置信息;
虚拟机系统调用行为规则用于提供判断虚拟机系统调用行为是否异常的依据。
进一步的,所述拦截设置模块具体实施为:
拦截设置模块根据策略库的系统调用监控策略,通过VMI方式动态实时地修改虚拟机系统调用表;
在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库;
在虚拟机运行过程中,拦截设置模块根据策略库中系统调用监控策略的更新,修改虚拟机系统调用表中相应的表项;若更新的策略是增加监控的系统调用,则修改虚拟机系统调用表中被监控系统调用对应的表项,将其填充为一个唯一的非法地址,并将表项中的系统调用处理程序原地址取出并写入策略库;若增加的变化是取消监控的系统调用,则读取策略库中对应的系统调用处理程序地址,填充到虚拟机系统调用表中对应的表项中;
在虚拟机关机后,策略库中保存的系统调用监控策略不变,作为下一次虚拟机启动过程中默认的虚拟机系统调用监控策略。
进一步的,所述捕获模块具体实施为:
捕获虚拟机进程调用被监控系统调用时产生的异常;捕获异常后根据虚拟机EIP寄存器的唯一非法地址,识别虚拟机执行的被监控的系统调用;
通过VMI技术读取虚拟机当前执行进程的语义信息、系统调用行为的参数信息和虚拟机当前的虚拟硬件信息,构成虚拟机系统调用行为数据;
将行为数据传递到分析处理模块。
进一步的,所述分析处理模块具体实施为:
分析处理模块接收捕获模块传递的虚拟机系统调用行为数据;
分析处理模块读取策略库中的系统调用监控策略;
根据系统调用监控策略分析行为数据,判断虚拟机系统调用行为是否异常;若异常,则将此异常行为的行为数据写入日志,恢复虚拟机系统调用正常执行流程;否则,直接恢复虚拟机系统调用正常执行流程。
进一步的,所述策略库具体实施为:
策略库动态实时的接收终端传递的虚拟机的系统调用监控策略,接收后立即生效,无需重启云平台或虚拟机;
策略库为拦截设置模块提供系统调用监控策略中的系统调用拦截配置信息,同时接收拦截设置模块的反馈信息;
策略库为分析处理模块提供系统调用监控策略中的系统调用行为规则。
进一步的,所述终端具体实施为:终端提供操作策略库的接口,实时动态地将虚拟机的系统调用监控策略写入策略库中。
一种过滤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异常类型交由虚拟机操作系统内核进行处理。
与现有技术相比,本发明的有益效果是:
1)本发明利用VMI透明地修改系统调用表,根据个性化需求选择性的监控系统调用,提高了灵活性,并适用于所有X86系统调用指令发起的系统调用流程。
2)本发明不需监控的系统调用在虚拟机中正常执行,不会产生page fault异常陷入VMM中带来额外的性能损耗。
3)本发明可实时动态地更新系统调用监控策略,且在不需重启虚拟机或云平台的情况下即时生效,具有良好的可扩展性。
4)本发明将监视工具开发在VMM中,直接在硬件虚拟资源层上构建监控工具的运行环境,监控工具与被监控的虚拟机及应用程序的系统调用流程相隔离,确保监控工具不会被虚拟机中的恶意软件攻击,提升了监控工具的安全性。
附图说明
图1为本发明中非代理虚拟机进程系统调用行为监控方法框图。
图2为本发明中透明捕获虚拟机系统调用流程图。
图3为本发明中page fault过滤机制的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,本发明公开了一种非代理虚拟机进程系统调用行为监控系统,其由拦截设置模块、捕获模块、分析处理模块、策略库、日志和终端组成。
其中,拦截设置模块根据策略库中的系统调用监控策略修改虚拟机系统调用表,将需要进行监控的系统调用对应的表项修改为唯一非法地址,对取消监控的系统调用对应的表项修改为系统调用处理程序地址。
捕获模块捕获虚拟机进程调用被监控系统调用产生的异常,利用VMI读取虚拟机系统调用行为数据。
分析处理模块对捕获模块读取的行为数据进行分析,根据策略库中的系统调用监控策略判定虚拟机当前进程系统调用行为是否异常,若正常,则继续,否则将异常行为数据写入日志,分析完毕后恢复虚拟机系统调用正常处理流程。
策略库存储系统调用监控策略。
日志记录分析处理模块传递的异常行为数据。
终端能够动态实时的更新策略库,包括但不限于增加规则、修改配置、删除映射等。
所述系统调用监控策略,包括但不限于虚拟机系统调用拦截配置、虚拟机系统调用行为规则,其中:虚拟机系统调用拦截配置,此处被定义为能够拦截指定虚拟机系统调用的一组属性,包括但不限于虚拟机系统调用号、虚拟机系统调用名称、虚拟机系统调用是否拦截、拦截虚拟机系统调用的唯一非法地址和虚拟机系统调用原有地址。
实例:可采用如下方式定义系统调用拦截配置:
5sys_open true 0xFFFFFFFF-5 0xc0507240
该配置表明,对虚拟机中系统调用号为5的系统调用sys_open进行拦截,将对应的系统调用表项填充为唯一的非法地址0xFFFFFFFF-5,并将原有表项地址0xc0507240存入策略库。
5sys_open false 0xFFFFFFFF-5 0x00000000
该配置表明,对虚拟机中系统调用号为5的调用sys_open未进行拦截,将对应的系统调用表项对应的非法地址为0xFFFFFFFF-5,并将原有表项地址为0x00000000。
虚拟机系统调用行为规则,此处被定义为能够限定虚拟机系统调用行为的一组属性。包括但不限于进程名称、虚拟机系统调用号、虚拟机系统调用名称、操作对象、操作模式、操作规则。
实例:可采用如下方式定义系统调用行为规则:
sshd 5sys_open/etc/passwd read allow
该规则表明,虚拟机中的进程sshd通过系统调用号为5的系统调用sys_open读取文件/etc/passwd的行为是允许的。
本发明使用硬件虚拟化技术支持的VMM(如KVM,XEN等),且在应用之前,需要预先修改VMM中的虚拟机控制结构,以Intel VT支持的VMCS为例,其中主要包括:将VMCS的EXCEPTION_BITMAP字段的PF位置位,以捕获虚拟机中的page fault异常;将VMCS的PAGE_FAULT_ERROR_CODE_MASK字段和PAGE_FAULT_ERROR_CODE_MATCH字段同时填充为虚拟机因访问错误地址而产生的page fault异常对应的error code值。
各模块间的数据流转如下:
一、在虚拟机启动过程中,拦截设置模块根据策略库中的系统调用监控策略,读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,随后填充为唯一的非法地址;
在虚拟机运行过程中,若策略库中动态添加系统调用监控,拦截设置模块读取虚拟机系统调用表中相应表项的虚拟机系统调用处理程序地址,写入策略库后,填充为唯一的非法地址;
在虚拟机运行过程中,若策略库中动态取消系统调用的监控,拦截设置模块读取策略库中对应的虚拟机系统调用处理程序地址,填充进入虚拟机系统调用表中对应的表项。
二、捕获模块捕获虚拟机进程调用被监控系统调用产生的异常后,利用VMI读取虚拟机进程系统调用行为数据,传递到分析处理模块;
虚拟机进程调用未被监控系统调用时,不会产生异常,按照正常执行流程执行对应的系统调用处理函数。
三、分析处理模块接收捕获模块传递的系统调用行为数据,读取策略库中的系统调用监控策略,并根据系统调用监控策略分析系统调用行为数据;
若当前虚拟机系统调用行为正常,直接恢复虚拟机系统调用执行流程;若当前虚拟机进程系统调用行为异常,则将系统调用行为数据写入日志后,恢复虚拟机系统调用执行流程。
四、策略库接收终端传递的配置信息;策略库为分析处理模块提供判断虚拟机进程系统调用行为的行为规则;
在虚拟机启动过程中,策略库为拦截设置模块提供拦截虚拟机系统调用的配置信息;
在虚拟机运行过程,策略库为拦截设置模块提供拦截虚拟机系统调用实时动态变化的配置信息,同时接收拦截设置模块传递的虚拟机被拦截系统调用处理程序的原地址。
五、日志接收分析处理模块传递的虚拟机进程系统调用异常行为数据。
六、终端用于动态实时地更新策略库,包括但不限于增加规则、修改配置、删除映射等。
本发明公开了一种虚拟机系统调用拦截方法,即监控方法,该方法能够透明地拦截X86架构下的虚拟机系统调用执行流程,灵活地根据个性化需求选择监控的系统调用,避免不必要监控的系统调用陷入VMM产生额外的性能消耗,具体流程如附图2所示:
1)终端201更新策略库202中的系统调用监控策略,包括但不限于系统调用拦截配置、虚拟机进程系统调用行为规则等。
2)在虚拟机启动时,拦截设置模块203读取策略库202中的系统调用监控策略,利用VMI技术将虚拟机系统调用表204中需要监控的系统调用对应的表项填充为唯一的非法地址;在虚拟机运行过程中,通过终端201在策略库202中动态添加系统调用监控策略时,设置拦截模块203将虚拟机系统调用表204中需要监控的系统调用的对应的表项填充为唯一的非法地址,并将原地址写入策略库202;在虚拟机运行过程中,通过终端201在策略库202中动态删除虚拟机系统调用监控策略时,设置拦截模203块读取策略库202中存储的系统调用原地址,并填充入虚拟机系统调用表对应的表项中。
3)进程205通过系统调用指令206(如int、sysenter或syscall)发起系统调用请求,利用通用寄存器EAX、EBX、ECX、EDX、ESI和EDI传递参数,其中EAX寄存器存储系统调用号;虚拟机内核根据EAX中存储的系统调用号在系统调用表204中进行搜索,读取对应表项中存储的系统调用处理函数地址;若调用未拦截系统调用,则直接跳转到系统调用处理程序209执行;若调用被拦截系统调用,则因访问错误地址产生page fault异常并陷入捕获模块207中。
4)捕获模块207捕获虚拟机中产生的page fault异常,通过虚拟机EIP寄存器中的唯一的非法地址判断被监控的系统调用类型;通过VMI方式获取虚拟机当前执行进程的语义信息、系统调用行为的参数信息和虚拟机当前的虚拟机硬件信息,组成虚拟机系统调用行为数据,并传递到分析处理模块208。
5)分析处理模块208接收捕获模块207传递的系统调用行为数据后,读取策略库202中系统调用监控策略,分析系统调用行为数据;若虚拟机进程系统调用行为异常,则将行为数据写入日志211,在将策略库202中存放的虚拟机系统调用处理程序209地址写入虚拟机EIP寄存器,恢复虚拟机系统调用正常执行流程;若虚拟机进程系统调用行为正常,则直接将策略库202中存放的虚拟机系统调用处理程序209地址写入虚拟机EIP寄存器,恢复虚拟机系统调用正常执行流程。
6)系统调用处理程序209在虚拟机内核中按照正常流程继续执行,执行完毕后调用系统调用退出指令210恢复进程205的正常运行。
本发明同时公开了一种page fault异常过滤方法,该方法能够对产生陷入的pagefault异常进行过滤,减少虚拟机不相关page fault异常陷入VMM带来的额外性能消耗,具体流程如图3:
1)步骤301表示,在虚拟机操作系统中,不同的操作过程产生不同的page fault异常类型,每一种page fault异常类型对应一种error code。
2)步骤302表示,根据判断规则,虚拟机虚拟硬件层判断error code是否属于因虚拟机调用被监控虚拟机而产生的page fault异常;若是,则进行步骤303;若不是,则进行步骤306;
所述判断规则:err&mask=match,其中:
所述err为虚拟机中产生的page fault异常对应的error code;
所述mask为VMM中虚拟机控制数据结构中的缺页异常错误码MASK字段中的值;以Intel VT支持的VMCS为例,所述mask为VMM中VMCS结构的PAGE_FAULT_ERROR_CODE_MASK字段中的值;
所述match为VMM中虚拟机控制数据结构中的缺页异常错误码MATCH字段中的值;以Intel VT支持的VMCS为例,所述match为VMM中VMCS结构的PAGE_FAULT_ERROR_CODE_MATCH字段中的值;
所述mask和match的值相同,均为虚拟机访问错误地址产生的page fault异常对应的error code值。
3)步骤303表示,捕获模块捕获虚拟机中因调用被监控系统调用产生的pagefault异常,并通过VMI方式读取系统调用行为数据。
4)步骤304表示,分析处理模块对虚拟机系统调用行为数据进行分析与处理。
5)步骤305表示,分析处理模块完成之后,继续执行虚拟机系统调用的正常执行流程;
6)步骤306表示,不属于因虚拟机系统调用拦截产生的page fault异常类型交由虚拟机操作系统内核进行处理。

Claims (9)

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所述的监控虚拟机进程的方法,其特征在于,所述终端具体实施为:终端提供操作策略库的接口,实时动态地将虚拟机的系统调用监控策略写入策略库中。
CN201610395359.2A 2016-06-06 2016-06-06 监控虚拟机进程的系统和方法、过滤page fault异常的方法 Active CN106055385B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610395359.2A CN106055385B (zh) 2016-06-06 2016-06-06 监控虚拟机进程的系统和方法、过滤page fault异常的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610395359.2A CN106055385B (zh) 2016-06-06 2016-06-06 监控虚拟机进程的系统和方法、过滤page fault异常的方法

Publications (2)

Publication Number Publication Date
CN106055385A CN106055385A (zh) 2016-10-26
CN106055385B true CN106055385B (zh) 2019-04-16

Family

ID=57169575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610395359.2A Active CN106055385B (zh) 2016-06-06 2016-06-06 监控虚拟机进程的系统和方法、过滤page fault异常的方法

Country Status (1)

Country Link
CN (1) CN106055385B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106599156B (zh) * 2016-12-07 2019-05-21 国云科技股份有限公司 一种基于struts2拦截器的动态拦截器管理方法
CN108459899B (zh) 2017-02-21 2021-06-01 华为技术有限公司 信息保护方法及装置
CN106909509B (zh) * 2017-03-01 2019-06-25 四川大学 一种虚拟机进程代码的无代理分页式度量系统和方法
CN107239696B (zh) * 2017-04-11 2019-07-19 中国科学院信息工程研究所 一种针对虚拟化超级调用函数的漏洞热修复方法
CN107203410B (zh) * 2017-04-14 2020-02-14 华中科技大学 一种基于系统调用重定向的vmi方法及系统
CN109471697B (zh) * 2017-12-01 2021-08-17 北京安天网络安全技术有限公司 一种监控虚拟机中系统调用的方法、装置及存储介质
CN108009423B (zh) * 2017-12-04 2021-06-22 浪潮通用软件有限公司 一种虚拟机口令处理方法、系统及一种口令生成工具
CN108228319B (zh) * 2018-01-10 2021-03-30 天津理工大学 一种基于多桥的语义重构方法
CN108646938B (zh) * 2018-03-13 2020-04-17 Oppo广东移动通信有限公司 触摸屏的配置方法、装置、终端及存储介质
CN109858239B (zh) * 2019-01-16 2020-01-17 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN111147292B (zh) * 2019-12-18 2022-12-02 深圳市任子行科技开发有限公司 策略集群分发匹配方法、系统及计算机可读存储介质
CN111190692A (zh) * 2019-12-26 2020-05-22 山东乾云启创信息科技股份有限公司 一种基于鲲鹏处理器的监控方法、系统及可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN103345604A (zh) * 2013-07-16 2013-10-09 湘潭大学 基于轻量虚拟机监控器的沙盒系统及用其监控os的方法
CN103500304A (zh) * 2013-10-13 2014-01-08 西安电子科技大学 基于Xen的虚拟机个性化安全监控系统及监控方法
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855138B (zh) * 2012-07-20 2015-12-09 腾讯科技(深圳)有限公司 一种api的拦截方法、装置及移动终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN103345604A (zh) * 2013-07-16 2013-10-09 湘潭大学 基于轻量虚拟机监控器的沙盒系统及用其监控os的方法
CN103500304A (zh) * 2013-10-13 2014-01-08 西安电子科技大学 基于Xen的虚拟机个性化安全监控系统及监控方法
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法

Also Published As

Publication number Publication date
CN106055385A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
CN106055385B (zh) 监控虚拟机进程的系统和方法、过滤page fault异常的方法
Kawakoya et al. Memory behavior-based automatic malware unpacking in stealth debugging environment
US11106792B2 (en) Methods and systems for performing a dynamic analysis of applications for protecting devices from malwares
Lanzi et al. K-Tracer: A System for Extracting Kernel Malware Behavior.
CN103500308B (zh) 用于对抗由恶意软件对仿真的检测的系统和方法
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
JP4518564B2 (ja) 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体
KR101740604B1 (ko) 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
Wu et al. System call redirection: A practical approach to meeting real-world virtual machine introspection needs
CN106897121B (zh) 一种基于虚拟化技术的无代理客户机进程防护方法
US20200137088A1 (en) Methods and cloud-based systems for correlating malware detections by endpoint devices and servers
CN104321748A (zh) 用于捕捉轻量虚拟机管理器中的错误条件的方法、系统和装置
US20220035905A1 (en) Malware analysis through virtual machine forking
EP3063692B1 (en) Virtual machine introspection
CN103310152A (zh) 基于系统虚拟化技术的内核态Rootkit检测方法
CN107450964A (zh) 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN109597675A (zh) 虚拟机恶意软件行为检测方法及系统
CN110737888B (zh) 虚拟化平台操作系统内核数据攻击行为检测方法
CN111444504A (zh) 一种用于软件运行时自动识别恶意代码的方法及装置
CN109857520B (zh) 一种虚拟机自省中的语义重构改进方法及系统
CN110414220B (zh) 沙箱内程序动态执行过程中的操作文件提取方法及装置
CN107203410B (zh) 一种基于系统调用重定向的vmi方法及系统
CN108388793A (zh) 一种基于主动防御的虚拟机逃逸防护方法
CN111428240A (zh) 一种用于检测软件的内存违规访问的方法及装置
CN109344028B (zh) 一种免超级用户权限的进程行为监控装置与方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant