首页> 中国专利> 一种基于物理地址陷入的虚拟机行为监控方法及系统

一种基于物理地址陷入的虚拟机行为监控方法及系统

摘要

本发明公开了一种基于物理地址陷入的虚拟机行为监控方法及系统。本方法为:1)GPA寻址模块获取所要监控API对应的客户机物理地址GPA;2)如果GPA对应的GFN已被标记过,则将该GAP与API对应关系写入到函数查找哈希表中,否则将该GPA所对应的GFN设置为不可访问状态,然后将该GAP与API对应关系写入到函数查找哈希表中;3)当虚拟机调用一所要监控的API时,保存当前CPU寄存器值,组成一个事件放入事件缓冲区中等待处理;4)根据事件中的GPA字段找到对应API,对API参数还原并存入数据库中;5)从数据库中读取一进程的函数调用数据生成该进程的调用序列,将其与高危序列匹配,确定虚拟机安全状态。

著录项

  • 公开/公告号CN113254147A

    专利类型发明专利

  • 公开/公告日2021-08-13

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN202110473606.7

  • 申请日2021-04-29

  • 分类号G06F9/455(20060101);G06F11/30(20060101);

  • 代理机构11200 北京君尚知识产权代理有限公司;

  • 代理人司立彬

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2023-06-19 12:13:22

说明书

技术领域

本发明属于虚拟化安全监控领域,具体涉及一种基于物理地址陷入的虚拟机行为监控方法及系统。

背景技术

基础架构即服务(Infrastructure as a Service,IaaS)是云计算的一种,其为各种互联网应用提供基础架构服务。作为IaaS的技术基石,虚拟化技术已被广泛应用至大量数据中心及服务器集群。作为虚拟化平台中的重要组成部分,虚拟机监视器(简称Hypervisor或者VMM层)是运行在物理服务器和操作系统之间的中间软件层,维护控制着CPU、内存及I/O等物理资源,可允许多个操作系统和应用共享一套基础物理硬件。虚拟化平台的此种架构为行为监控提供了新的挑战,带来了全新的监控思路。作为一个相对封闭的网络环境,使用虚拟化技术构建的虚拟网络被研究人员广泛应用于协议分析、仿真验证及比武对抗等众多前沿应用,并被期望全面获取其内部的各种行为,以全面分析行为数据,提高分析准确性。虚拟化行为监控自虚拟化技术广泛应用以来,一直是研究人员追求的研究热点,尤其是主机行为监控分析。因此本发明重点关注VM内部的主机行为细粒度的截获与分析。

虚拟化平台行为监控按照行为动作获取位置分为内部获取方式和外部获取方式。内部获取方式即是将行为获取部署至VM内部,通过HOOK等技术在内部进行各种行为动作的拦截获取;而外部获取方式是在VM外部获取并分析VM内部的行为动作。内部获取方式由于将行为获取放置在VM内部,易被入侵者或查杀工具发现并查杀,从而失去了行为获取的能力。与内部获取相比外部获取方式具有行为获取隐蔽性等特点,不易被入侵者及内部查杀工具篡改或屏蔽,所以是目前主流的研究方向。

而外部获取方式按照VM行为获取方式可以划分为主动获取信息方式和被动获取信息方式。主动获取方式是指用户通过扫描或者轮询方式获取VM内部的语义信息,其多采用快照技术或计时触发器;被动获取方式是指设置事件触发器,只有当VM中相应事件发生时,触发事件触发器,才获取VM内部的相关信息。主动获取方式监控粒度较大,无法获取两次获取间隔内的行为,同时采用减少轮询时间或增大扫描频率等方式减少间隔时间,会在一定程度上消耗物理服务器及VM资源,影响物理服务器及VM性能。被动获取方式采用触发器结构能够更及时准确的获取更为关心的行为数据。

现阶段VM主机行为监控分析的常见方法是:1)利用传统的监控方式,将监控手段完全部署在VM操作系统内或VM内核态中;2)基于trap、断点或rollback方式,在VM内设置Hooks挂钩到Hypervisor,Hypervisor通过操作Hooks以获取VM的行为动作;3)完全基于Hypervisor进行监控。方法1)将监控手段完全放置于虚拟机内部,易被恶意软件篡改或查杀工具查杀,有很大的安全隐患;方法2)虽然在一定程度上保护了监控工具,但由于仍有部分内容在虚拟机内部,因此仍然存在安全隐患;方法3)是安全级别最高的行为监控,但由于和虚拟机无任何关联,因此监控难度较大,监控内容不全面(一般只能针对系统调用进行捕获)。

发明内容

针对上述已有方法存在的问题,本发明的目的在于提供一种基于物理地址陷入的虚拟机行为监控系统。考虑到虚拟机监控器完全控制着运行于其上的所有虚拟机对硬件资源的访问,本发明实现了无法被虚拟机内部感知的用户层API函数调用行为监控;面对目前公开的研究背景中的局限性,本发明能够采用被动获取的方式获取虚拟机内部用户层API函数调用信息,其完全在虚拟机监控器层部署行为收集手段,采用带外监控的方式获取虚拟机内部详尽的主机行为数据,弥补了带外监控数据不全面的问题,并通过事件通道机制将收集的行为数据传递至特权域,由特权域的行为分析手段完成主机行为的数据分析,从而减少对虚拟机性能的影响,保证监控数据无法被篡改,提高行为分析的准确性与可靠性。

本发明公开的基于GPA(客户机物理地址)陷入的虚拟机行为监控系统如图1所示,包括GPA寻址模块、策略更新模块、数据获取模块、行为分析模块和安全分析模块;其中GPA寻址模块负责找到所要监控API函数在内存中的物理地址,策略更新模块主要负责建立和动态维护两个哈希表,一个表用来保存系统中已经标记过的物理地址,另一个表用来存储每一个GPA(客户机物理地址)及其对应的API函数名称;数据获取模块主要负责将触发的API事件放入本模块中的缓冲区等待系统分析处理;行为分析模块主要从缓冲区中取出事件,并根据事件数据,分析本次调用行为信息;安全分析模块将分析后的调用行为信息抽取生成调用序列,然后将该调用序列与高危库中的序列数据进行比对,能够对虚拟机安全状态给予评估。

本发明的技术方案为:

一种基于物理地址陷入的虚拟机行为监控方法,其步骤包括:

1)GPA寻址模块获取虚拟机内部进程结构体,根据进程结构体遍历对应进程的所有动态库,得到各动态库的加载在内存中的首地址,将动态库的首地址与所要监控API的偏移地址相加,然后获取所要监控API对应的客户机物理地址GPA并发送给策略更新模块;

2)策略更新模块根据接收的GPA找到对应的客户机页帧号GFN,根据GFN查找已标记哈希表,如果该GFN已被标记过,则将该GAP与API对应关系写入到函数查找哈希表中,否则将该GPA所对应的GFN设置为不可访问状态,然后将该GAP与API对应关系写入到函数查找哈希表中;

3)当虚拟机调用一所要监控的API时,会陷入到VMM层,此时数据获取模块保存当前CPU寄存器值,组成一个事件放入事件缓冲区中等待处理;

4)行为分析模块从事件缓冲区中读取事件,根据事件内容的GPA字段,从函数查找哈希表中找到对应API,通过解析寄存器值完成对API参数的还原并存入数据库中;

5)安全分析模块从数据库中读取一进程的函数调用数据并根据所读取数据生成该进程的调用序列,将该调用序列与设定的高危序列进行匹配,根据匹配结果确定虚拟机安全状态。

进一步的,在VMM层截获所要监控的API函数;行为分析模块、安全分析模块运行于应用层。

进一步的,策略更新模块通过设置所要监控API函数执行入口地址的内存页为不可访问来截获对应API函数的调用,并从中提取出调用信息。

进一步的,所述调用行为信息包括:API调用参数、返回值、进程信息、线程信息、调用地址、API所在的动态库。

进一步的,GPA寻址模块获取所要监控API对应的客户机物理地址GPA的方法为:

11)GPA寻址模块读取配置文件,获得注册进程以及注册动态库名称;

12)GPA寻址模块遍历监控VM的进程列表,将该进程列表与所述注册进程进行匹配,匹配成功则进入步骤13);

13)根据上述匹配成功进程的EPROCESS值,配合此操作系统进程偏移量,找到进程结构体所属动态库链表,遍历动态库链表,将该列表与读取的注册动态库名称进行匹配,匹配成功则进入步骤14);

14)将当前匹配成功的动态库首地址与API偏移地址相加,得到对应API虚拟地址,调用va_to_pa接口将该API虚拟地址转为物理地址,得出此API对应的GPA地址。

进一步的,所述行为分析模块的处理流程为:

21)行为分析主线程监听事件缓冲区数据,当事件缓冲区有数据时则创建新的行为分析线程,并从事件缓冲区中取出一个事件开始分析,同时暂停虚拟机;

22)如果本次事件触发的是函数调用回调函数则转向步骤23),如果触发的事件是返回值回调函数则转向步骤25);

23)获取所得API的调用参数并还原,将原始参数保存到事件缓冲区;

24)读取寄存器RSP字段值,调用策略更新模块标记该RSP字段值,绑定本次事件的回调函数为返回值调用函数并在函数查找哈希表中写入当前GAP与API的对应关系;

25)根据当前GPA值,匹配函数查找哈希表,读取当前GPA相应的参数与返回值并存入数据库。

进一步的,所述事件缓冲区为环型事件缓冲区;如果环型事件缓冲区的剩余空间小于待存入数据所需的数据空间,则动态申请一段内存并加入到环型事件缓冲区内,然后将当前待存入数据存储到环型事件缓冲区;当收到行为分析模块的事件读取请求时,根据事件数据GPA字段内容,在环型事件缓冲区内查找对应的数据内容,若存在对应数据,则返回相应数据内容,然后清理环型事件缓冲区中的相应数据并将对应的数据空间置为可用。

一种基于物理地址陷入的虚拟机行为监控系统,其特征在于,包括GPA寻址模块、策略更新模块、数据获取模块、行为分析模块和安全分析模块;其中

所述GPA寻址模块,用于获取所要监控API对应的客户机物理地址GPA并发送给策略更新模块;

所述策略更新模块,用于建立和动态维护两个哈希表,已标记哈希表用来保存系统中已经标记过的物理地址,函数查找哈希表用来存储每一个客户机物理地址GPA及其对应的API函数名称;当收到GPA时,根据接收的GPA找到对应的客户机页帧号GFN,根据GFN查找已标记哈希表,如果该GFN已被标记过,则将该GAP与API对应关系写入到函数查找哈希表中,否则将该GPA所对应的GFN设置为不可访问状态,然后将该GAP与API对应关系写入到函数查找哈希表中;

所述数据获取模块,用于将触发的API事件放入缓冲区;

所述行为分析模块,用于从所述缓冲区中取出事件,并根据事件数据,分析调用行为信息;

所述安全分析模块,用于将分析后的调用行为信息抽取生成进程的调用序列,然后将该调用序列与设定高危序列数据进行比对,根据比对结果对虚拟机安全状态进行评估。

本发明主要内容包括:

(1)用户层的主机行为截获分析

本发明具备用户层的API函数调用行为截获功能,通过遍历每个进程的动态库列表找到目标动态库基地址,根据动态库基地址和AIP偏移地址能够计算出该API的物理地址,对这个地址进行访问权限控制,达到API函数调用截获的功能。例如:user32.dll、advapi32.dll、netapi32.dll等动态库中任意函数的调用截获。策略更新模块通过设置所要监控API函数执行入口地址的内存页为不可访问来截获对应API函数的调用,并从中提取出本次调用信息,进而完成函数的调用信息分析。

(2)细粒度的调用信息解析

本发明可以对函数调用行为进行详细解析,通过解析事件中的数据获取API调用参数、返回值、并进而动态获取进程相关信息、线程相关信息、调用地址、调用模块(所在动态库),调用模块指的是该API所在的动态库,例如内核模块的ntdll,用户模块的kernel32,user32等等一系列细粒度的调用行为信息。

(3)高效拦截机制

本发明可以通过GPA寻址模块自定义拦截API名称和个数,只针对用户关心的API进行拦截,其他API可以正常执行,从而减小监控系统对虚拟机运行效率的影响,保证虚拟机的运行效率。

(4)动态数据分析处理

本发明建立虚拟机安全状态分析模型,对监控行为数据进行协同处理,从而得出虚拟机当前的安全状态。本发明可以在Hypervisor层对每个监控的虚拟机建立安全状态分析,将监控所得数据与高危API库中的数据进行比对,从而得出虚拟机当前的安全状态。

本系统运行的具体步骤如下:

(1)系统开启后GPA寻址模块会获取虚拟机内部的进程结构体,根据进程结构体遍历对应进程的所有动态库,得到各动态库的加载在内存中的首地址,将动态库的首地址与所要监控的API偏移地址相加,然后获取所要监控API对应的GPA地址。首地址+API偏移地址=API在内存中的虚拟地址,调用地址转换技术最终将虚拟地址转为物理地址,就找到了该API在内存中的物理地址。

(2)策略更新模块接收GPA地址,通过转换找到此GPA所对应的GFN(客户机页帧号),查找已标记哈希表,如果此GFN已经被标记过,则只需要将GAP与API对应关系写入到函数查找哈希表中,如果此GFN没有被标记过,则首先将GPA所对应的GFN设置为不可访问状态,然后再将GAP与API对应关系写入到函数查找哈希表中。

(3)当虚拟机调用某个监控的API时,会发现此API地址不存在,则会陷入到VMM层(虚拟机性能监视器),此时,数据获取模块会将当前CPU寄存器值保存下来,组成一个事件放入事件缓冲区中等待处理。

(4)行为分析模块不断从事件缓冲区中读取事件,根据事件内容的GPA字段,查找之前建立的函数哈希表找到对应API,通过读取CR3寄存器值,配合进程结构体信息,可以得出,本次调用关于进程的相关信息,比如:进程名称,进程ID,进程父ID等,通过读取RIP,RCX寄存器值,能够依次读取每个参数的数值,结合参数类型最终完成对API参数的还原,最后将该条数据存入数据库中。

(5)安全分析模块读取数据库中一进程的函数调用数据,生成进程的调用序列,将该函数调用序列与高危库中的序列进行匹配,命中后将该进程数据“标红”,如此往复,最终给予虚拟机安全状态的评估。

本系统动态接收用户对主机行为的检测需求,异步获取、分析主机行为事件信息,与已公开的方法相比,具有如下优点:

1)基于用户层的主机行为截获分析,实现了将监控的API函数类型从内核层提至用户层,扩充了监控API函数的范围,弥补了带外监控内容不全面的问题,实现用户层API调用复现;

2)基于细粒度的调用行为信息解析,具备调用进程相关信息、线程相关信息、调用地址、调用模块等一系列细粒度的调用行为信息获取;

3)采用高效的监控机制,自定义监控所需的函数,对不关心的函数执行不会造成任何改变,最大限度降低对虚拟机效率的影响;

4)采用行为截获与行为分析分离机制(在VMM层进行截获处理,在应用层进行数据分析),附图1中已经标明GPA寻址,策略更新,数据获取模块在vmm层既保证高安全可靠性,又减少行为分析的繁琐,提高行为分析效率;另外由于kvm虚拟机系统的设计,VMM层权限大于虚拟机权限,导致虚拟机是无法发现自身被监控;

5)通过分析截获数据与高危API库进行比对,从而分析得出虚拟机的安全状态。

附图说明

图1为基于物理地址陷入的虚拟机行为监控系统框架图;

图2为GAP寻址流程图;

图3为策略更新方法流程图;

图4为环形事件缓冲区存储流程图;

图5为行为分析方法流程图;

图6为安全分析方法流程图。

具体实施方式

下面结合具体的实施例对本发明进行详细说明。

本发明公开了一种基于GPA陷入的虚拟机行为监控系统,主要包括GPA寻址模块、策略更新模块、数据获取模块、行为分析模块和安全分析模块等5部分。

图2给出了GPA寻址的流程图,寻址方法的具体实施步骤如下:

(1)GPA寻址模块首先读取程序的配置文件,获得注册进程以及注册动态库名称。

(2)利用Libvmi遍历监控VM的进程列表,将该列表与读取的注册进程进行匹配,匹配成功则进入步骤3;

(3)根据上述匹配成功进程的EPROCESS值,配合此操作系统进程偏移量,找到进程结构体所属动态库链表,遍历动态库链表,将该列表与读取的注册动态库名称进行匹配,匹配成功则进入步骤4;

(4)将当前匹配成功的动态库首地址与API偏移地址相加,得到对应API虚拟地址,调用va_to_pa接口将该API虚拟地址转为物理地址,得出此API对应的GPA地址。

图3给出了策略更新模块的工作流程图,策略更新方法的具体实施步骤如下:

(1)根据找到的API的GPA地址,调用find_gfn函数,找到对应GPA所在页号GFN;

(2)判断此页是否已经标记过,若标记过则转向步骤(3),否则转向步骤(4);

(3)当前页框号已经标记过,则将此API和对应的GPA写入hash表,以备回调使用;

(4)调用访问保护函数,将此页表设置为不可访问状态,绑定此事件的回调函数为函数调用回调函数并将此页加入标记哈希表中,表示此页已经被标记过。然后调用步骤(3)。

图4给出了环形事件缓冲区存储方法的流程图,环形事件缓冲区存储方法的具体实施步骤如下:

(1)对环形事件缓冲区进行实时监测;

(2)判断是否有数据请求,若发现数据请求则转向步骤3,否则转向步骤1;

(3)判断数据请求类型,若为事件存入数据,则转向步骤4,否则转向步骤7;

(4)比较环型事件缓冲区的剩余空间和待存入数据所需的数据空间,若剩余空间小于所需空间则转向步骤5,否则转向步骤6;

(5)动态申请一段内存,并加入到环型事件缓冲区内,增大缓冲区的空间,将本次的事件数据存储;

(6)按照环型事件缓冲区的数据存储要求,分析数据字段,存入缓冲区内,转向步骤1;

(7)根据事件数据GPA字段内容,在环型事件缓冲区内查找对应的数据内容,若存在对应数据,则转向步骤8;否则返回数据请求错误,并转向步骤1;

(8)返回相应数据内容,同时对缓冲区进行数据清理,并将对应的数据空间置为可用,以便能够继续存入数据,循环使用缓冲区,转向步骤1。

图5给出了行为分析模块工作的流程图,行为分析模块的具体实施步骤如下:

(1)行为分析主线程负责监听事件缓冲区数据,当缓冲区有数据时则创建新的行为分析线程,并从事件缓冲区中取出一个事件开始分析,同时暂停虚拟机;

(2)如果本次事件触发的是函数调用回调函数转向步骤3,如果触发的事件是返回值回调函数则转向步骤5;

(3)根据寄存器RIP,RCX等字段值,取出当前API调用参数,调用libvmi库完成本次API调用的原始参数的还原,开辟缓冲区将原始参数保存,等待回调触发;

(4)读取寄存器RSP字段值(rsp字段的值是返回值所在物理地址,读取rsp寄存器值可得到返回值),调用策略更新模块将RSP字段值标记,绑定此事件的回调函数为返回值调用函数并在函数查找hash表中写入对应关系;

(5)根据本次GPA值,匹配函数查找hash表,读取当前GPA相应的参数与返回值一起组成json串存入数据库,最后该条释放缓冲区内容;

(6)行为分析线程分析完后直接退出,主线程继续监听数据缓冲区等待事件到来。

图6给出了安全分析模块工作的流程图,安全分析模块的具体实施步骤如下:

(1)从数据库中实时读取某个进程全部调用函数信息,生成该进程的函数调用序列;

(2)将生成的函数调用序列与高危API库中的调用序列进行比对;

(3)如果匹配成功,则认为该虚拟机存在安全隐患;

(4)如果匹配不成功,则将该序列暂存缓冲区,当有该进程新的调用数据到来时,抽取调用信息,添加后再次进行匹配。

以上所述仅是本发明的一种优选方案,应当指出,对于本技术领域的普通人员来说,在不脱离本发明的原理前提下,还可以做出若干修饰和润色,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例和附图所公开的内容,本发明的保护范围以权利要求书界定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号