一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种页面级虚拟机内核控制流完整性动态监测方法与流程

2022-03-23 07:15:49 来源:中国专利 TAG:


1.本发明属于云安全的技术领域,具体涉及一种页面级虚拟机内核控制流完整性动态监测方法。


背景技术:

2.在云计算中,虚拟机内核控制流完整性对于云计算环境的安全十分重要。攻击者可能利用rootkit攻击篡改虚拟机内核的控制流实现隐藏恶意进程、隐藏恶意文件、开启系统后门等攻击。对于云服务商和云租户来说,检测虚拟机内核控制流的完整性是可控云重要部分。
3.虚拟机自省技术由于其安全性和透明性被广泛应用于云安全领域。利用虚拟机自省技术,监控程序可以从虚拟机外部监控虚拟机的运行状态。云服务商在发现虚拟机内的安全威胁后,可以将分析结果提供给云租户,实现安全即服务。云租户在获知虚拟机的安全威胁后,可以自行处理或者选择由云服务商复原虚拟机。
4.基于虚拟机自省技术检测虚拟机内核控制流完整性的方法主要分为静态内存分析和动态跟踪分析两类。静态内存分析方法的分析对象是目标虚拟机的内核内存,通过结合内核源代码或者安全的虚拟机内存快照来比对分析。然而,由于虚拟机内核中许多内存页面是动态分配的,而且很多函数调用是间接的,仅分析静态内存无法得知其跳转目标函数,因此静态分析方法分析能力受到限制。动态跟踪的方法主要是通过跟踪目标虚拟机执行过程中的指令或者跳转,从而分析控制流的完整性。这种方法的优点是能够捕捉到虚拟机执行过程中全部的控制流信息,分析更加准确。但是,其问题是指令级和跳转级的跟踪对虚拟机的执行干扰过于频繁,对目标虚拟机引入的负载过大,无法用于商业云计算中。


技术实现要素:

5.本发明的目的在于:针对现有技术的不足,提供一种页面级虚拟机内核控制流完整性动态监测方法,通过提高跟踪和分析的粒度,在保证分析准确性的同时,降低跟踪事件触发的频次,从而降低对目标虚拟机引入的负载。
6.为了实现上述目的,本发明采用如下技术方案:
7.一种页面级虚拟机内核控制流完整性动态监测方法,包括:
8.步骤一、通过采集模块提取虚拟机中系统调用执行过程中的页面控制流,并且将控制流信息传递给学习模块和监控模块;
9.步骤二、在学习阶段,学习模块根据采集模块传递过来的信息构建和更新被监控系统调用的安全控制流模型;
10.步骤三、在监控阶段,监控模块根据实时捕获到的页面控制流与学习模块中安全的控制流模型进行比对分析;
11.步骤四、根据分析的结果更新学习模块中的安全模型。
12.优选的,还包括:
13.当内核收到用户态进程发出的系统调用请求时,进入内核态,在执行完系统调用后返回用户态;
14.当需要监控虚拟机中某个系统调用时,在该系统调用被触发后,跟踪虚拟机中全部内存页的执行事件,在该系统调用结束时停止监控。
15.优选的,所述步骤二中,还包括:
16.先对采集到的页面流进行预处理,将其中包含的中断处理页面独立出来;
17.在预处理之后,学习模块构建目标系统调用的安全页面控制流模型。
18.优选的,所述步骤三中,还包括:
19.先用页模型的验证,如果没有通过页模型的验证,则无需验证自动机模型;如果通过页模型的验证,监控模块再进行流型的验证。
20.优选的,所述页模型的验证包括页地址的验证和页内容的验证。
21.本发明的有益效果在于,本发明包括步骤一、通过采集模块提取虚拟机中系统调用执行过程中的页面控制流,并且将控制流信息传递给学习模块和监控模块;步骤二、在学习阶段,学习模块根据采集模块传递过来的信息构建和更新被监控系统调用的安全控制流模型;步骤三、在监控阶段,监控模块根据实时捕获到的页面控制流与学习模块中安全的控制流模型进行比对分析;步骤四、根据分析的结果更新学习模块中的安全模型。本发明利用页面级的跟踪方法,将跟踪的目标从虚拟机指令或跳转提升为内存页面,之后利用获取的页面级控制流信息分析内核的完整性。由于内存页的粒度高于指令和跳转,相比于指令级和跳转级的跟踪,页面级的跟踪引入的负载会更低。本发明利用cpu硬件事件来跟踪虚拟机页面执行过程,进一步降低了负载。本发明通过提高跟踪和分析的粒度,在保证分析准确性的同时,降低跟踪事件触发的频次,从而降低对目标虚拟机引入的负载。
附图说明
22.下面将参考附图来描述本发明示例性实施方式的特征、优点和技术效果。
23.图1为本发明的页面级控制流分析架构图。
24.图2为本发明的控制流的预处理示意图。
具体实施方式
25.如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决技术问题,基本达到技术效果。
26.此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
27.在发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件
内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
28.以下结合附图1~2对本发明作进一步详细说明,但不作为对本发明的限定。
29.实施方式一
30.页面级虚拟机内核控制流完整性动态监测方法,包括:
31.步骤一、通过采集模块提取虚拟机中系统调用执行过程中的页面控制流,并且将控制流信息传递给学习模块和监控模块;步骤二、在学习阶段,学习模块根据采集模块传递过来的信息构建和更新被监控系统调用的安全控制流模型;步骤三、在监控阶段,监控模块根据实时捕获到的页面控制流与学习模块中安全的控制流模型进行比对分析;步骤四、根据分析的结果更新学习模块中的安全模型。
32.在根据本发明的页面级虚拟机内核控制流完整性动态监测方法中,采集模块采集信息包括目标系统调用的内存页面执行序列和页面的内容。
33.在根据本发明的页面级虚拟机内核控制流完整性动态监测方法中,还包括:
34.当内核收到用户态进程发出的系统调用请求时,进入内核态,在执行完系统调用后返回用户态;
35.当需要监控虚拟机中某个系统调用时,在该系统调用被触发后,跟踪虚拟机中全部内存页的执行事件,在该系统调用结束时停止监控。
36.在根据本发明的页面级虚拟机内核控制流完整性动态监测方法中,步骤二中,还包括:
37.先对采集到的页面流进行预处理,将其中包含的中断处理页面独立出来;
38.在预处理之后,学习模块构建目标系统调用的安全页面控制流模型。
39.在根据本发明的页面级虚拟机内核控制流完整性动态监测方法中,步骤三中,还包括:
40.先用页模型的验证,如果没有通过页模型的验证,则无需验证自动机模型;如果通过页模型的验证,监控模块再进行流型的验证。
41.在根据本发明的页面级虚拟机内核控制流完整性动态监测方法中,页模型的验证包括页地址的验证和页内容的验证。
42.本发明提出两种建模方法来描述虚拟机内核页面级控制流,分别为页模型和流模型。它们分别从内存页和页面流两个角度对页面级的控制流进行建模。利用这两种模型可以有效地对目标虚拟机内核的执行过程进行建模,形成安全模型。之后跟踪目标虚拟机的执行流,与安全模型进行比对,从而发现控制流篡改。本发明将监控的目标选定为虚拟机中的系统调用,因为大部分篡改内核控制流的攻击都是通过篡改系统调用实现的。为了进一步降低负载,本发明还采用多种优化方法。本发明提出的分析方法可以用于分析任意系统调用和其他内核功能。
43.本发明针对某个或者某几个经常被篡改的系统调用建立页面级控制流模型,利用安全模型与实时采集的控制流进行比对,发现内核异常。由于跟踪的粒度被提升到内存页面,为保证建模分析的准确性,本发明采用两种建模方法来描述内核控制流。为了进一步降低监控负载,本发明又采用多种监控优化策略。
44.监控程序运行于特权虚拟机中,包括3个模块,分别是页面控制流采集模块、学习
模块和监控模块。采集模块能够提取虚拟机中系统调用执行过程中的页面控制流,并且将控制流信息传递给学习模块和监控模块。在学习阶段,学习模块根据采集模块传递过来的信息构建和更新被监控系统调用的安全控制流模型。在监控阶段,监控模块根据实时捕获到的页面控制流与学习模块中安全的控制流模型进行比对分析。分析的结果也将被用于更新学习模块中的安全模型。虚拟机管理层能将虚拟机底层的运行信息传递给特权虚拟机中的采集模块。
45.采集模块采集两种信息:目标系统调用的内存页面执行序列和页面的内容。本发明通过监控虚拟机中内存页的执行情况来捕获系统调用页面级的控制流。虚拟机中系统调用的执行过程是:当内核收到用户态进程发出的系统调用请求时,进入内核态,在执行完系统调用后返回用户态。当需要监控虚拟机中某个系统调用时,监控程序在该系统调用被触发后,跟踪虚拟机中全部内存页的执行事件,在该系统调用结束时停止监控。因此,采集模块能够获得目标系统调用的页面级执行流。
46.由于现代操作系统都是支持抢占的,因此一个系统调用在执行过程中可能发生上下文切换。而经过上下文切换后,cpu执行的页面不属于原进程,而是属于被切换到的其他程序。只有当原进程被切换回来时,内核才会继续执行原来的系统调用。采集模块的目标是监听某个系统调用的完整过程,因此采集模块需要监听虚拟机中上下文切换。通过结合上下文切换信息,采集模块可以甄别出属于目标系统调用的页面流。采集模块也会采集被执行内存页的内容。当一个内存页面被执行后,采集模块会将该页面地址存放于待采集队列当中。之后系统会根据这个队列来读取内存的快照。已经被采集过的页面不会被重复读取,采集模块只会采集没有被执行过的页面的快照。由于有些页面可能会被篡改或者被更新,被修改过的页面会被重新采集并存储。监控页面执行流和采集页面内容不是同时进行的,而是利用队列的方式分别处理,从而降低动态监控的负载。之所以能够不在监听到页面被执行时立即采集该页面的内容,是因为采集模块同时对被执行过的页面进行写监控。写监控能够捕获页面执行之后对页面的修改,一旦发现修改则会发出告警。如果页面被修改,说明发生了内核攻击。由于内核代码页面正常情况下不会发生写操作,写监控不会引入新的负载,而且保证了页面执行和采集时内容的一致性,避免了toctou攻击。
47.提取的结果是众多控制流片段,包括系统调用的页面流和多个中断处理流。接下来的分析是基于这些流片段的,即单独分析系统调用流和各个中断流。中断流可能起始于系统调用流中的任意位置,因此将调用流与中断流的组合作为一个整体分析是不准确的。而且,中断流的异常行为也不应当归类为系统调用流的异常,所以学习模块要对它们进行独立分析。
48.本发明采用以下步骤将中断从原始流中提取出来。
49.1)找到中断处理程序的开始和结束页面。中断处理程序会从中断入口函数处开始并在中断返回函数结束,利用它们可以识别中断。
50.2)提取中断流。系统调用可能被中断处理程序抢断,而中断过程中同样可能被其他中断抢断。
51.在预处理之后,学习模块构建目标系统调用的安全页面控制流模型。本发明采用两种模型描述系统调用的页面级控制流:页模型和流模型。这两种模型分别从内存页面的角度和控制流的角度对系统调用进行描述。
52.页模型是统计目标系统调用执行过的内存页,以及这些内存页的页面内容。流模型是根据系统调用流和中断流分别建立多个自动机。该模型是为了验证流的完整性,两种页面流在页模型中会被视为相同的。而在运行过程中,它们除了执行过的页面是相同的之外功能是完全不同的。为了增强系统的检测能力,本发明采用流模型。其根据页面流构建自动机。自动机的节点是页模型中的页,而边是根据捕捉到的页面流提取得出的。流模型能最大程度地在页面层次上描述系统调用的执行过程。由于本发明采集的目标是内存页,导致了模型无法描述页内的控制流。为此,本发明将页模型中的页面内容作为模型的一个重要的补充。当页面内容不变和页控制流不变的情况下,攻击者很难改变页面内的控制流达成恶意行为。综上,流模型在流完整性的验证能力上高于页模型,但是在模型建立和验证的复杂度上同样高于页模型。
53.在虚拟机运行过程中,监控模块根据实时采集到的页面流与已经建立的安全模型进行比对分析。两种模型的复杂程度不同,先用页模型来验证,如果没有通过页模型的验证则无需验证自动机模型;如果通过了页模型的验证,监控模块再进行流型的验证。
54.根据上述说明书的揭示和教导,本发明所属领域的技术人员还能够对上述实施方式进行变更和修改。因此,本发明并不局限于上述的具体实施方式,凡是本领域技术人员在本发明的基础上所作出的任何显而易见的改进、替换或变型均属于本发明的保护范围。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献