基于虚拟机的内核漏洞检测进程保护方法及装置与流程

文档序号:12467721阅读:183来源:国知局
基于虚拟机的内核漏洞检测进程保护方法及装置与流程

本发明涉及计算机安全技术领域,具体涉及一种基于虚拟机的内核漏洞检测进程保护方法及装置。



背景技术:

网络恶意行为是指网络系统的硬件、软件及其系统中的数据受到恶意代码攻击而遭到破坏、更改、泄露,致使系统不能连续可靠正常地运行,网络服务中断的行为。随着信息化的普及,网络新应用的大量出现,网络恶意代码所表现出的行为也层出不穷,目前最流行的网络恶意行为是网页挂马、盗取帐号、端口扫描、漏洞扫描、ARP(Address Resolution Protocol,地址解析协议)欺骗、IP(Internet Protocol,因特网协议)劫持、DDOS(Distributed Denial of Service,分布式拒绝服务)攻击、溢出攻击、木马攻击等。

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。内核作为操作系统的核心,如何检测内核漏洞是安全防护工作的重中之重。现有技术中,黑客在入侵系统时,往往通过提权的方式获得系统的最高权限,从而取得操作系统的控制权。简单来说,提权就是将一个低权限、受限制很多的用户提升到系统中最高权限(如管理员权限)。权限控制是系统安全的基石,也是一切安全软件的基石,一旦这道门槛被突破,任何防御措施都是无效的。因此,如何能够有效地检测内核漏洞,预防黑客通过提权的方式进行系统攻击成为现有技术亟待解决的问题。在内核漏洞检测过程中,如何避免恶意样本进程访问检测进程,破坏检测过程也是一个重要的问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于虚拟机的内核漏洞检测进程保护方法及装置。

根据本发明的一个方面,提供了一种基于虚拟机的内核漏洞检测进程保护方法,所述方法在虚拟机沙箱隔离环境下运行,方法包括:

获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中;

利用挂钩技术,在调用指定API之前,获取当前上下背景文进程的相关信息和操作目标进程的相关信息;

判断所述操作目标进程的相关信息是否记录在所述进程过滤名单中,且所述当前上下背景文进程的相关信息是否未记录在所述进程过滤名单中;

若是,终止调用所述指定API。

根据本发明的另一方面,提供了一种基于虚拟机的内核漏洞检测进程保护装置,所述装置在虚拟机沙箱隔离环境下运行,装置包括:

写入模块,适于获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中;

挂钩处理模块,适于利用挂钩技术,在调用指定API之前,获取当前上下背景文进程的相关信息和操作目标进程的相关信息;

判断模块,适于判断所述操作目标进程的相关信息是否记录在所述进程过滤名单中,且所述当前上下背景文进程的相关信息是否未记录在所述进程过滤名单中;

终止模块,适于若所述判断模块判断出所述操作目标进程的相关信息记录在所述进程过滤名单中,且所述当前上下背景文进程的相关信息未记录在所述进程过滤名单中,终止调用所述指定API。

根据本发明提供的基于虚拟机的内核漏洞检测进程保护方法及装置,将各检测子进程的相关信息写入进程过滤名单中,在调用指定API之前,利用挂钩获取当前上下背景文进程的相关信息和操作目标进程的相关信息,通过将当前上下背景文进程的相关信息和操作目标进程的相关信息与进程过滤名单相匹配,判定是否终止调用指定API。利用本发明,可保护在虚拟机沙箱隔离环境下运行的检测进程的地址空间,防止被沙箱逃逸的恶意样本进程访问,避免机密信息失窃,提升在虚拟机沙箱隔离环境下内核漏洞检测的安全性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测方法的流程图;

图2示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图;

图3示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图;

图4示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图;

图5示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测进程保护方法的流程图;

图6示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测文件保护方法的流程图;

图7示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测装置的功能框图;

图8示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测装置的功能框图;

图9示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测进程保护的功能框图;

图10示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测文件保护的功能框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测方法的流程图。本方法在服务器端虚拟机沙箱隔离环境下运行,用于针对指定的样本文件进行动态的内核漏洞利用检测。如图1所示,该方法包括如下步骤:

步骤S101,启动通信代理进程,所述通信代理进程监听指定端口,等待并接收虚拟机外部主机传输的检测包和样本文件,将检测包和样本文件分别存储到检测目录和临时目录下。

通信代理进程是负责与虚拟机外部主机进行数据交互、文件传递的进程。当服务端虚拟机操作系统开机时,通信代理进程随之自启动。通信代理进程监听指定端口,等待并接收虚拟机外部主机的相关进程传输的检测包和样本文件。通信代理进程对检测包进行解压操作,将解压得到的文件存储到检测目录下;另外,通信代理进程将样本文件存储到临时目录下。随后,通信代理线程启动检测包中的调度管控进程。

步骤S102,启动检测包中的调度管控进程,所述调度管控进程获取样本文件存储路径,识别样本文件类型,根据通用检测配置文件中的配置选项选择检测模式和各检测功能点,以创建针对所述样本文件的目标检测配置文件。

在调度管控进程启动之后,调度管控进程获取样本文件存储路径,识别样本文件类型。接着,调度管控进程读取自身关联的通用检测配置文件,根据样本文件类型选择检测模式和各检测功能点,初始化自身各功能,创建针对样本文件的目标检测配置文件。随后,调度管控进程启动辅助检测进程,并将样本文件的存储路径(可为URL)通过参数的方式传递给辅助检测进程。

步骤S103,启动辅助检测进程,所述辅助检测进程利用所述目标检测配置文件控制各检测功能点的开关。

在辅助检测进程启动之后,辅助检测进程根据目标检测配置文件进行初始化,加载核心检测进程的驱动程序,利用目标检测配置文件控制各检测功能点的开关。

步骤S104,启动核心检测进程,所述核心检测进程接收辅助检测进程发送的样本文件的相关信息以及各检测功能点的开关信息,执行漏洞的检测,根据检测结果生成日志文件,将日志文件存储到日志目录下。

在辅助检测进程加载核心检测进程的驱动程序后,核心检测进程启动。核心检测进程接收辅助检测进程发送的样本文件的相关信息以及各检测功能点的开关信息,执行初始化操作。而后,根据样本文件的相关信息以及各检测功能点的开关信息执行样本文件的检测,根据检测结果生成日志文件,将日志文件存储到日志目录下。

本实施例提供的基于虚拟机的内核漏洞检测方法在虚拟机沙箱隔离环境下运行,通过通信代理进程实现与虚拟机外部主机的数据交互和文件传递,借助调度管控进程和辅助检测进程来辅助核心检测进程实现样本文件的检测。本方法将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。

图2示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图。本方法描述的是基于虚拟机的内核漏洞检测的整体方案,具体是在服务器端虚拟机沙箱隔离环境下运行,用于针对指定的样本文件进行动态的内核漏洞利用检测。如图2所示,该方法包括如下步骤:

步骤S201,服务器端虚拟机操作系统开机时,通信代理进程自启动。

通信代理进程是负责与虚拟机外部主机进行数据交互、文件传递的进程。当服务端虚拟机操作系统开机时,通信代理进程随之自启动。

步骤S202,通信代理进程监听指定端口,等待数据。

服务器端虚拟机向虚拟外部主机提供用于访问的指定端口,通信代理进程启动后就监听该指定端口,等待虚拟机外部主机发送过来的数据。

步骤S203,通信代理进程接收虚拟机外部主机传输的检测包和样本文件,将检测包和样本文件分别存储到检测目录和临时目录下。

在通信代理进程接收到虚拟机外部主机通过指定端口传输的检测包和样本文件后,对其中的检测包进行解压操作,将解压得到的文件存储到检测目录下,该检测目录可以为某个随机产生的目录;另外,通信代理进程将样本文件存储到临时目录下。

步骤S204,通信代理进程启动调度管控进程。

通信代理进程发送启动命令,用于启动调度管控进程。

步骤S205,通信代理进程创建消息通信线程,建立与调度管控进程之间的通信连接。

在调度管控进程启动后,通信代理进程创建消息通信线程,可选地,通过RPC(Remote Procedure Call Protocol,远程过程调用协议)与调度管控进程建立通信连接。这里,RPC是XMLRPCLIB库中的机制,XML RPC是使用HTTP协议做为传输协议的远程过程调用机制,使用XML文本的方式传输命令和数据。利用该通信连接,可将后续接收到的来自于调度管控进程的消息数据包实时转发至虚拟机外部主机。

步骤S206,调度管控进程初始化自身功能。

在调度管控进程启动后,调度管控进程获取样本文件存储路径,识别样本文件类型。接着,调度管控进程读取自身关联的通用检测配置文件,根据样本文件类型选择检测模式和各检测功能点,初始化自身各功能。除此之外,调度管控进程根据通用检测配置文件中的配置选项选择超时限制条件,其中超时限制条件具体限制了核心检测进程执行检测的时长。通过配置超时限制条件,避免后续针对某个样本文件的检测占用过长时间,提升检测的效率。

步骤S207,调度管控进程创建屏幕截取线程和/或鼠标模拟点击线程。

可选地,调度管控进程创建屏幕截取线程和/或鼠标模拟点击线程。其中屏幕截取线程的作用是对虚拟机所在的服务器的屏幕进行截图,截取到的屏幕图像可通过通信代理进程发送给虚拟机外部主机。鼠标模拟点击线程的作用是随机针对屏幕坐标模拟鼠标点击操作,以及针对特定控件模拟鼠标点击操作。

步骤S208,调度管控进程创建针对样本文件的目标检测配置文件,启动辅助检测进程,并将样本文件的存储路径通过参数的方式传递给辅助检测进程。

调度管控进程通过读取通用检测配置文件,对其中的配置选项进行选择和配置,得到针对样本文件的目标检测配置文件。针对于不同类型的样本文件,检测模式和配置的检测功能点有所不同,调度管控进程可为不同类型的样本文件创建定制的目标检测配置文件。而后,调度管控进程启动辅助检测进程,将样本文件的存储路径通过命令行参数的方式传递给辅助检测进程。

步骤S209,屏幕截取线程每隔预定时间截取屏幕图像,将截取的屏幕图像实时发送给通信代理进程。

步骤S210,鼠标模拟点击线程随机针对屏幕坐标模拟鼠标点击操作,以及针对特定控件模拟鼠标点击操作。

步骤S211,辅助检测进程根据目标检测配置文件进行初始化,利用目标检测配置文件控制各检测功能点的开关。

辅助检测进程通过解析命令行参数和目标检测配置文件,对自身功能进行初始化。具体地,辅助检测进程解析得到样本文件存储路径、检测模式、各检测功能点、以及其它一些检测功能配置选项等基础信息,计算样本文件的MD5,控制各检测功能点的开关。通过计算得到的样本文件的MD5,可将后续检测过程中产生的样本数据与任务数据相关联,一个样本文件可能对应多个检测任务。通过MD5还可以将样本数据与木马信息、VT、元查杀引擎相关联。另外,通过MD5还可以将统一存储的URL、木马、APT类样本进行分类展示。

步骤S212,辅助检测进程加载核心检测进程的驱动程序,以启动核心检测进程。

步骤S213,辅助检测进程通过IO控制码的方式发送样本文件的相关信息以及各检测功能点的开关信息。

辅助检测进程通过IO控制码的方式向核心检测进程发送样本文件的相关信息以及各检测功能点的开关信息,以开启内核层漏洞利用行为的监控。

步骤S214,辅助检测进程启动样本进程,使样本进程运行样本文件。

步骤S215,核心检测进程执行初始化操作。

在核心检测进程的驱动程序加载时,初始化驱动程序所需的相关数据结构对象和变量,这些相关数据结构对象和变量与各功能检测点密切关联。

步骤S216,核心检测进程创建日志记录线程。

为了便于记录检测过程,创建日志记录线程,用于记录检测过程中产生的日志。

步骤S217,核心检测进程接收辅助检测进程通过IO控制码的方式发送的样本文件的相关信息以及各检测功能点的开关信息。

核心检测进程接收辅助检测进程发送的各种IO控制码,对其进行解析获取样本文件的相关信息以及各检测功能点的开关信息。针对各检测功能点的开关信息,控制开启相应检测功能点的监控。

步骤S218,核心检测进程执行漏洞检测。

核心检测进程可检测的漏洞包含有关恶意网页的URL以及有关各种漏洞、病毒、木马、攻击的样本目标。除此之外,样本目标还包括:0Day,NDay,暴露期0Day,位置挂马信息,重要网站,位置挂马跟进等等。其中,0Day是已经被发现(有可能未被公开),而官方还没有相关补丁的漏洞。这些漏洞被发现后立即被恶意利用,例如利用0Day可以修改注册表、下载文件、运行系统文件。样本目标的格式可以是文件、可执行程序等,本发明对此不作限制。

步骤S219,日志记录线程根据检测结果生成日志文件,将日志文件存储到日志目录下。

后续鉴定引擎可读取日志文件,在鉴定引擎里面(静态,动态)将各种需要的日志信息抓取出来,对检测结果进行分析和筛选,进行基本的规则判定。其中后台的规则可达几百条。所谓分析选概括来说,就是结合静态和动态的日志数据,利用规则和关联分析,对样本的危害级别进行鉴定(黑,白,灰)。而筛选的作用主要是过滤出命中了利用检测行为特征的样本,以及有些高可疑行为特征的样本,按照不同组的需求,对数据进行分发。

步骤S220,在上述检测过程中,实时判断是否满足超时限制条件,若是,则结束检测过程,将检测结果打包为数据包发送给通信代理进程,以供通信代理进程将数据包发送给虚拟机外部主机。

本实施例提供的基于虚拟机的内核漏洞检测方法在虚拟机沙箱隔离环境下运行,通过通信代理进程实现与虚拟机外部主机的数据交互和文件传递,借助调度管控进程和辅助检测进程来辅助核心检测进程实现样本文件的检测。本方法将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。本方法中,调度管控进程根据通用检测配置文件中的配置选项选择超时限制条件,通过配置超时限制条件,避免后续针对某个样本文件的检测占用过长时间,提升检测的效率。调度管控进程创建屏幕截取线程和/或鼠标模拟点击线程,能将服务器屏幕呈现的图像传递给虚拟机外部主机,供虚拟机外部主机的用户查看检测过程的进展和具体情况,可视化效果良好。

图3示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图。本实施例主要是对上述核心检测进程的工作过程进行详细阐述,并详细描述了核心检测过程执行漏洞检测的具体内容。但需要说明的是,本实施例的方法是实现漏洞检测的独立方案,它可以不依赖于前述实施例描述的环境和前提下实现。本实施例的方法在虚拟机沙箱隔离环境下运行,如图3所示,该方法包括如下步骤:

步骤S301,加载驱动程序。

在核心检测进程的驱动程序加载时,初始化驱动程序所需的相关数据结构对象和变量。记录至少一个系统进程的进程ID,记录HAL例程地址表(HalDispatchTable)中存储的至少一项关键函数指针值,例如HALQuerySystemInformatica等函数指针值。

步骤S302,接收用户层进程发送的样本文件的相关信息以及各检测功能点的开关信息。

本实施例中,用户层进程可以指的是上述实施例中描述的辅助检测进程。核心检测进程接收辅助检测进程发送的各种IO控制码,对其进行解析获取样本文件的相关信息以及各检测功能点的开关信息。

步骤S303,根据各检测功能点的开关信息开启内核层行为监控总控开关。

步骤S304,当系统创建新进程时,将新进程添加到进程创建记录名单中。

当系统启动样本进程来运行样本文件时,样本进程被认定为所创建的新进程,将样本进程添加到进程创建记录名单中。

步骤S305,对新进程的内核层各操作行为进行检测。

本实施例通过挂钩技术实现对新进程的内核层各操作行为的检测。具体地,在核心检测进程接收到辅助检测进程发送的IO控制码之后,对其进行解析识别出“内核利用监控”的标记,然后根据传入缓冲区(Buffer)的数据,选择进入对应的分发处理例程中。根据样本文件的相关信息以及各检测功能点的开关信息,挂钩(Hook)SSDT(System Services Descriptor Table,系统服务描述符表)中针对各功能检测点的指定API和NtQueryIntervalProfile。

利用钩子,在系统调用指定API和NtQueryIntervalProfile之前,执行自定义的函数,实现对内核层各操作行为的检测。

步骤S306,根据检测结果生成日志文件,将日志文件存储到日志目录下。

本实施例提供的基于虚拟机的内核漏洞检测方法在虚拟机沙箱隔离环境下运行,根据用户层进程发送的样本文件的相关信息以及各检测功能点的开关信息,开启内核层行为监控总控开关;监控系统创建的新进程,对新进程的内核层各操作行为进行检测。本方法将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。

图4示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测方法的流程图。本实施例在图3所示的方法基础上,进一步详细阐述了核心检测进程的工作过程,如图4所示,该方法包括如下步骤:

步骤S401,加载驱动程序。

在核心检测进程的驱动程序加载时,初始化驱动程序所需的相关数据结构对象和变量。记录至少一个系统进程的进程ID,记录HAL例程地址表(HalDispatchTable)中存储的至少一项关键函数指针值,例如HALQuerySystemInformatica等函数指针值。

步骤S402,创建日志记录线程。

为了便于记录检测过程,创建日志记录线程,用于记录检测过程中产生的日志。

步骤S403,接收用户层进程通过IO控制码发送的样本文件的相关信息以及各检测功能点的开关信息。

本实施例中,用户层进程可以指的是上述实施例中描述的辅助检测进程。核心检测进程接收辅助检测进程发送的各种IO控制码,对其进行解析获取样本文件的相关信息以及各检测功能点的开关信息。

具体地,核心检测进程通过解析IO控制码识别出“内核利用监控”的标记,然后根据传入缓冲区(Buffer)的数据,选择进入对应的分发处理例程中。

步骤S404,根据样本文件的相关信息以及各检测功能点的开关信息,挂钩SSDT中针对各功能检测点的指定API和NtQueryIntervalProfile。

本实施例通过挂钩技术实现对新进程的内核层各操作行为的检测。根据样本文件的相关信息以及各检测功能点的开关信息,挂钩SSDT中针对各功能检测点的指定API和NtQueryIntervalProfile。所挂钩的API具体为针对内存、特权、注册表、进程/线程、文件等操作的关键NTAPI。而且,设置进程创建通知例程,在系统有新的进程创建时,进入进程创建通知例程执行相关操作。

步骤S405,根据各检测功能点的开关信息开启内核层行为监控总控开关。

步骤S406,当系统创建新进程时,将新进程添加到进程创建记录名单中。

当系统创建新进程时,首先进入进程创建通知例程,在该例程中记录所创建的新进程的属性值,例如:Privileges、UserSID、OwnerSID等属性值。然后,将新进程添加到进程创建记录名单中。

步骤S407,对新进程的内核层各操作行为进行检测。

当新进程调用NtQueryIntervalProfile时,先判断该新进程是否在进程创建记录名单中,若否,则将该新进程添加到进程创建记录名单中;当新进程调用前述指定API时,判断该新进程是否在进程创建记录名单中,若否,则将该新进程添加到进程创建记录名单中。

在确保新进程添加到进程创建记录名单的情况下,利用挂钩技术,对新进程的内核层各操作行为进行检测,具体包含以下几种实施方式:

(1)HalDispatchTable检测

利用挂钩技术,在调用NtQueryIntervalProfile之前,获取HalDispatchTable中存储的至少一项关键函数指针值;将所获取的HalDispatchTable中存储的至少一项关键函数指针值与加载驱动程序过程中所记录的HalDispatchTable中存储的至少一项关键函数指针值进行比对;若至少一项关键函数指针值比对不一致,则检测出新进程存在提权行为。

(2)Token替换检测

利用挂钩技术,在调用相应的指定API之前,根据加载驱动程序过程中所记录的至少一个系统进程的进程ID获取至少一个系统进程的EPROCESS结构地址,同时获取新进程的EPROCESS结构地址;将新进程的EPROCESS结构地址中的Token域的指针值与至少一个系统进程的EPROCESS结构地址中的Token域的指针值进行比对;若新进程的EPROCESS结构地址中的Token域的指针值与其中一个系统进程的EPROCESS结构地址中的Token域的指针值比对一致,则检测出新进程存在提权行为。

这里,指定API可以为:创建进程(NtCreateUserProcess)、对其它进程内存创建以及读写(NtAllocateVirtualMemory/NtProtectVirtualMemory/NtReadVirtualMemory/NtWriteVirtualMemory)、打开其它进程/线程(NtOpenThread/NtOpenProcess/NtSetContextThread)、注册表读写、文件读写等等。

(3)Token属性值检测

利用挂钩技术,在调用相应的指定API之前,获取所述新进程的属性值;将所获取的新进程的属性值与在进程创建通知例程中所记录的新进程的属性值进行比对;若比对不一致,则检测出新进程存在提权行为。

在具体比对时,将获取的新进程的Privileges、TokenUser、和/或TokenOwner与在进程创建通知例程中所记录的新进程的Privileges、TokenUser、和/或TokenOwner进行比对,若其中有一项比对不一致,则检测出新进程存在提权行为。

这里,指定API指的是与Token相关的函数。

(4)Token属性值置空检测

利用挂钩技术,在调用相应的指定API之前,查询新进程的EPROCESS结构地址中的Token域内的ACL是否被置空;若是,则检测出新进程存在提权行为。

(5)内核ROP(Return Oriented Programming,基于代码复用技术的新型攻击)检测

目前常见的内核ROP用于关闭SMEP(Supervisor Mode Execution Protection,监督模式执行保护)或修改CR4寄存器,本方法利用挂钩技术,在调用栈对CR4寄存器进行操作之前,查看调用栈是否为允许调用CR4寄存器修改指令的调用栈,或者,检测调用栈是否调用禁用SMEP的指令;若是,则检测出新进程存在提权行为。

(6)Bitmap利用检测

对于利用Bitmap来将有限制的内核地址写操作转化为内核任意地址读写操作的行为,对这种行为进行检测,若存在,则检测出所述新进程存在提权行为。

步骤S408,根据检测结果生成日志文件,将日志文件存储到日志目录下。

按照预设格式打点生成日志,将日志插入到日志缓冲清单中。在日志记录线程中,持续不断地检查日志缓冲清单是否有新的日志插入,若有,则将新的日志追加写入到配置选项中指定路径的日志文件中,并释放日志缓冲清单中该新的日志的节点。

本方案打点检出日志生成形式为缓存方式打点。所检出的日志被暂存于日志缓冲清单中。日志记录线程轮询该日志缓冲清单并依照FIFO(先进先出)的方式依次处理各日志节点,将日志内容追加写入日志文件中,在检测完成后由外部相关调度模块进程获取并处理该日志文件。

本方案的打点数据包含:环境和文件基本信息,检出功能点触发数据等。环境和文件基本信息以流水日志等形式输出,检出功能点触发数据以行为日志的形式输出。其中环境和文件基本信息包含:样本进程文件MD5,样本文件路径,以及主要系统模块名称和文件版本等。对于HalDispatchTable检测,检出功能点触发数据包含:进程ID、线程ID、被篡改函数的名称、篡改后的指针值、检出时所在Hooked API(NtQueryIntervalProfile)等;对于Token替换检测,检出功能点触发数据包含:进程ID、线程ID、Token地址、命中系统进程名、检出时所在Hooked API等。对于Token属性值检测,检出功能点触发数据包含:进程ID、线程ID、Privileges掩码描述序列、UserSID、OwnerSID、检出时所在Hooked API等。其它检测方式的检出功能点触发数据与之类似,在此不再赘述。

本实施例提供的基于虚拟机的内核漏洞检测方法在虚拟机沙箱隔离环境下运行,根据用户层进程发送的样本文件的相关信息以及各检测功能点的开关信息,开启内核层行为监控总控开关;监控系统创建的新进程,对新进程的内核层各操作行为进行检测。本方法将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。本方法通过挂钩技术,针对用户层进程提供的各检测功能点对应的API设置钩子函数,在调用API之前,执行检测操作,能及时有效地发现提权和利用等问题,提升了内核漏洞检测的效率。

图5示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测进程保护方法的流程图。本实施例提供的方法主要是用于保护在虚拟机沙箱隔离环境下运行的检测进程的地址空间,防止被沙箱逃逸的恶意样本进程访问、释放或泄露,避免机密信息失窃。如图5所示,该方法包括如下步骤:

步骤S501,获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中。

在辅助检测进程加载核心检测进程的驱动程序之后,读取目标检测配置文件中的相关字段,解析得到一个或多个检测子进程的进程名,根据进程名获取各检测子进程的进程ID,通过IO控制码将各检测子进程的进程ID发送给核心检测进程。

核心检测进程接收辅助检测进程(用户层进程)通过IO控制码发送的各检测子进程的进程ID。具体地,核心检测进程在接收到标记为“进程ID过滤”的IO控制码后,从输入缓冲区中获取当次传递的进程ID,根据进程ID获取检测子进程的相关信息。本方法中,相关信息可具体为EPROCESS结构地址。核心检测进程获取各检测子进程的EPROCESS结构地址之后,将各检测子进程的EPROCESS结构地址写入进程过滤名单中。

步骤S502,利用挂钩技术,在调用指定API之前,获取当前上下背景文进程的相关信息和操作目标进程的相关信息。

本方法对关于进程、线程、内存地址空间操作的指定API进行挂钩,在Hook指定API后,在自定义函数中实现步骤S502-步骤S504。在步骤S502中,获取当前上下背景文进程的EPROCESS结构地址和操作目标进程的EPROCESS结构地址。

步骤S503,判断操作目标进程的相关信息是否记录在进程过滤名单中,且当前上下背景文进程的相关信息是否未记录在进程过滤名单中,若是,则执行步骤S504;若否,则执行步骤S505。

可选地,判断操作目标进程的EPROCESS结构地址是否记录在进程过滤名单中,且当前上下背景文进程的EPROCESS结构地址是否未记录在进程过滤名单中。

步骤S504,终止调用指定API。

若判断出操作目标进程的EPROCESS结构地址记录在进程过滤名单中,且当前上下背景文进程的EPROCESS结构地址未记录在进程过滤名单中,则表明存在其它进程试图访问某个检测子进程,则需要进行阻止。例如,返回拒绝访问的状态码,终止调用指定API。

步骤S505,继续调用指定API,向调用者返回指定API的返回值。

若判断出操作目标进程的EPROCESS结构地址未记录在进程过滤名单中,或者,当前上下背景文进程的EPROCESS结构地址记录在进程过滤名单中,则继续调用指定API,向调用者返回指定API的返回值。

根据本实施例提供的基于虚拟机的内核漏洞检测进程保护方法,将各检测子进程的相关信息写入进程过滤名单中,在调用指定API之前,利用挂钩获取当前上下背景文进程的相关信息和操作目标进程的相关信息,通过将当前上下背景文进程的相关信息和操作目标进程的相关信息与进程过滤名单相匹配,判定是否终止调用指定API。利用本方法,可保护在虚拟机沙箱隔离环境下运行的检测进程的地址空间,防止被沙箱逃逸的恶意样本进程访问,避免机密信息失窃,提升在虚拟机沙箱隔离环境下内核漏洞检测的安全性。

图6示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测文件保护方法的流程图。本实施例提供的方法主要是用于保护检测过程中所产生的检测文件,如日志文件等,防止被沙箱逃逸的恶意样本进程访问、篡改、加密或损毁,避免因此导致的检测失败或结果异常,维护沙箱系统的稳定和性能。如图6所示,该方法包括如下步骤:

步骤S601,获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中。

在辅助检测进程加载核心检测进程的驱动程序之后,读取目标检测配置文件中的相关字段,解析得到一个或多个检测子进程的进程名,根据进程名获取各检测子进程的进程ID,通过IO控制码将各检测子进程的进程ID发送给核心检测进程。

核心检测进程接收辅助检测进程(用户层进程)通过IO控制码发送的各检测子进程的进程ID。具体地,核心检测进程在接收到标记为“进程ID过滤”的IO控制码后,从输入缓冲区中获取当次传递的进程ID,根据进程ID获取检测子进程的相关信息。本方法中,相关信息可具体为EPROCESS结构地址。核心检测进程获取各检测子进程的EPROCESS结构地址之后,将各检测子进程的EPROCESS结构地址写入进程过滤名单中。

步骤S602,获取检测文件的存储路径信息,将检测文件的存储路径信息写入私有目录名单中。

在辅助检测进程加载核心检测进程的驱动程序之后,读取目标检测配置文件中的相关字段,解析得到一个或多个检测文件的存储路径,通过IO控制码将各检测文件的存储路径发送给核心检测进程。

核心检测进程接收辅助检测进程(用户层进程)通过IO控制码发送的各检测文件的存储路径。具体地,核心检测进程在接收到标记为“私有目录”的IO控制码后,从输入缓冲区中获取当次传递的检测文件的存储路径,根据检测文件的存储路径构造出字符串对象作为检测文件的存储路径信息,将检测文件的存储路径信息写入私有目录名单中。

步骤S603,当产生文件访问操作时,判断文件访问对象的存储路径信息是否记录在私有目录名单中。

本实施例实现检测文件保护主要是在IRP分发函数的函数体中实现。例如,在READ,WRITE,CREATE,SET_INFORMATION,DIRECTORY_CONTROL等分发函数的自实现函数体中,实现判断文件访问对象的存储路径信息是否记录在私有目录名单中,若是,则执行步骤S604;若否,执行步骤S606。

步骤S604,判断当前上下背景文进程的相关信息是否记录在所述进程过滤名单中。

若判断出文件访问对象的存储路径信息记录在私有目录名单中,则进一步判断当前上下背景文进程的相关信息是否记录在进程过滤名单中,具体地,判断当前上下背景文进程的EPROCESS结构地址是否记录在进程过滤名单中,若是,则执行步骤S606;若否,则执行步骤S605。

步骤S605,若判断出当前上下背景文进程的相关信息未记录在进程过滤名单中,则拒绝文件访问操作。

若文件访问对象的存储路径信息记录在私有目录名单,而当前上下背景文进程的相关信息未记录在进程过滤名单中,表明有其它进程试图访问检测文件,则IPR不再向下分发,拒绝文件访问操作。

步骤S606,若判断出文件访问对象的存储路径信息未记录在私有目录名单中,或者,判断出当前上下背景文进程的相关信息记录在所述进程过滤名单中,则继续响应文件访问操作。

若文件访问对象的存储路径信息未记录在私有目录名单,表明访问的不是需要保护的检测文件,则IPR继续向下分发,响应文件访问操作。若文件访问对象的存储路径信息记录在私有目录名单,且当前上下背景文进程的相关信息记录在进程过滤名单中,表明是检测子进程试图访问检测文件,则IPR继续向下分发,响应文件访问操作。

根据本实施例提供的基于虚拟机的内核漏洞检测文件保护方法,将各检测子进程的相关信息写入进程过滤名单中,将检测文件的存储路径信息写入私有目录名单中,当产生文件访问操作时,将文件访问对象的存储路径信息和当前上下背景文进程的相关信息分别与进程过滤名单和私有目录名单相匹配,判定是否拒绝文件访问操作。利用本方法,可保护在虚拟机沙箱隔离环境下产生的检测文件,防止被沙箱逃逸的恶意样本进程访问、篡改、加密或损毁,避免因此导致的检测失败或结果异常,维护沙箱系统的稳定和性能。

图7示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测装置的功能框图。本装置具体是在服务器端虚拟机沙箱隔离环境下运行,用于针对指定的样本文件进行动态的内核漏洞利用检测。如图7所示,该装置包括:通信代理模块701,调度管控模块702,辅助检测模块703,核心检测模块704。

通信代理模块701,适于启动通信代理进程,使通信代理进程监听指定端口,等待并接收虚拟机外部主机传输的检测包和样本文件,将检测包和样本文件分别存储到检测目录和临时目录下。通信代理进程是负责与虚拟机外部主机进行数据交互、文件传递的进程。当服务端虚拟机操作系统开机时,通信代理进程随之自启动。通信代理进程监听指定端口,等待并接收虚拟机外部主机的相关进程传输的检测包和样本文件。通信代理进程对检测包进行解压操作,将解压得到的文件存储到检测目录下;另外,通信代理进程将样本文件存储到临时目录下。随后,通信代理线程启动检测包中的调度管控进程。

调度管控模块702,适于启动检测包中的调度管控进程,使调度管控进程获取样本文件存储路径,识别样本文件类型,根据通用检测配置文件中的配置选项选择检测模式和各检测功能点,以创建针对所述样本文件的目标检测配置文件。在调度管控进程启动之后,调度管控进程获取样本文件存储路径,识别样本文件类型。接着,调度管控进程读取自身关联的通用检测配置文件,根据样本文件类型选择检测模式和各检测功能点,初始化自身各功能,创建针对样本文件的目标检测配置文件。随后,调度管控进程启动辅助检测进程,并将样本文件的存储路径(可为URL)通过参数的方式传递给辅助检测进程。

辅助检测模块703,适于启动辅助检测进程,使辅助检测进程利用目标检测配置文件控制各检测功能点的开关。在辅助检测进程启动之后,辅助检测进程根据目标检测配置文件进行初始化,加载核心检测进程的驱动程序,利用目标检测配置文件控制各检测功能点的开关。

核心检测模块704,适于启动核心检测进程,使核心检测进程接收辅助检测进程发送的样本文件的相关信息以及各检测功能点的开关信息,执行漏洞检测,根据检测结果生成日志文件,将日志文件存储到日志目录下。在辅助检测进程加载核心检测进程的驱动程序后,核心检测进程启动。核心检测进程接收辅助检测进程发送的样本文件的相关信息以及各检测功能点的开关信息,执行初始化操作。而后,根据样本文件的相关信息以及各检测功能点的开关信息执行样本文件的检测,根据检测结果生成日志文件,将日志文件存储到日志目录下。

通信代理模块701进一步适于:使通信代理进程创建消息通信线程,建立与所述调度管控进程之间的通信连接。在调度管控进程启动后,通信代理进程创建消息通信线程,可选地,通过RPC与调度管控进程建立通信连接。利用该通信连接,可将后续接收到的来自于调度管控进程的消息数据包实时转发至虚拟机外部主机。

调度管控模块702进一步适于:使调度管控进程创建屏幕截取线程,每隔预定时间截取屏幕图像;利用调度管控进程与通信代理进程之间建立的通信连接,将截取的屏幕图像实时发送给所述通信代理进程。

通信代理模块701进一步适于:使通信代理进程将所述截取的屏幕图像发送给虚拟机外部主机。

调度管控模块702进一步适于:使调度管控进程创建鼠标模拟点击线程,随机针对屏幕坐标模拟鼠标点击操作,以及针对特定控件模拟鼠标点击操作。

调度管控模块702进一步适于:使调度管控进程根据通用检测配置文件中的配置选项选择超时限制条件;在执行样本文件的检测过程中,判断是否满足超时限制条件,若是,则结束检测过程,将检测结果打包为数据包发送给所述通信代理进程,以供所述通信代理进程将所述数据包发送给虚拟机外部主机。

核心检测模块704进一步适于:使核心检测进程接收所述辅助检测进程通过IO控制码的方式发送的样本文件的相关信息以及各检测功能点的开关信息。

本实施例提供的基于虚拟机的内核漏洞检测装置在虚拟机沙箱隔离环境下运行,通过通信代理进程实现与虚拟机外部主机的数据交互和文件传递,借助调度管控进程和辅助检测进程来辅助核心检测进程实现样本文件的检测。本装置将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。本装置中,调度管控进程根据通用检测配置文件中的配置选项选择超时限制条件,通过配置超时限制条件,避免后续针对某个样本文件的检测占用过长时间,提升检测的效率。调度管控进程创建屏幕截取线程和/或鼠标模拟点击线程,能将服务器屏幕呈现的图像传递给虚拟机外部主机,供虚拟机外部主机的用户查看检测过程的进展和具体情况,可视化效果良好。

图8示出了根据本发明另一个实施例的基于虚拟机的内核漏洞检测装置的功能框图。该装置在虚拟机沙箱隔离环境下运行,如图8所示,该装置包括:加载模块801,接收模块802,启动模块803,添加模块804,检测模块805,日志存储模块806。

加载模块801,适于加载驱动程序。加载模块801在加载驱动程序时,初始化驱动程序所需的相关数据结构对象和变量。记录至少一个系统进程的进程ID,记录HAL例程地址表(HalDispatchTable)中存储的至少一项关键函数指针值,例如HALQuerySystemInformatica等函数指针值。

接收模块802,适于接收用户层进程发送的样本文件的相关信息以及各检测功能点的开关信息。本实施例中,用户层进程可以指的是上述实施例中描述的辅助检测进程。接收模块802接收辅助检测进程发送的各种IO控制码,对其进行解析获取样本文件的相关信息以及各检测功能点的开关信息。具体地,通过解析IO控制码识别出“内核利用监控”的标记,然后根据传入缓冲区(Buffer)的数据,选择进入对应的分发处理例程中。

启动模块803,适于根据各检测功能点的开关信息开启内核层行为监控总控开关。

添加模块804,适于当系统创建新进程时,将新进程添加到进程创建记录名单中。

检测模块805,适于对所述新进程的内核层各操作行为进行检测。

日志存储模块806,适于根据检测结果生成日志文件,将日志文件存储到日志目录下。

进一步的,该装置还包括:挂钩配置模块807,适于根据样本文件的相关信息以及各检测功能点的开关信息,挂钩SSDT中针对各功能检测点的指定API和NtQueryIntervalProfile。本装置通过挂钩技术实现对新进程的内核层各操作行为的检测。根据样本文件的相关信息以及各检测功能点的开关信息,挂钩SSDT中针对各功能检测点的指定API和NtQueryIntervalProfile。所挂钩的API具体为针对内存、特权、注册表、进程/线程、文件等操作的关键NTAPI。

进一步的,该装置还包括:例程设置模块808,适于设置进程创建通知例程;在所述进程创建通知例程中记录所创建的新进程的属性值。当系统创建新进程时,例程设置模块808在进程创建通知例程中记录所创建的新进程的属性值,例如:Privileges、UserSID、OwnerSID等属性值。

上述检测模块805进一步适于:利用挂钩技术,在调用NtQueryIntervalProfile之前,获取HAL例程地址表中存储的至少一项关键函数指针值;将所获取的HAL例程地址表中存储的至少一项关键函数指针值与加载驱动程序过程中所记录的HAL例程地址表中存储的至少一项关键函数指针值进行比对;若所述至少一项关键函数指针值比对不一致,则检测出所述新进程存在提权行为。

上述检测模块805进一步适于:利用挂钩技术,在调用相应的指定API之前,根据加载驱动程序过程中所记录的至少一个系统进程的进程ID获取至少一个系统进程的EPROCESS结构地址,同时获取所述新进程的EPROCESS结构地址;将所述新进程的EPROCESS结构地址中的Token域的指针值与至少一个系统进程的EPROCESS结构地址中的Token域的指针值进行比对;若所述新进程的EPROCESS结构地址中的Token域的指针值与其中一个系统进程的EPROCESS结构地址中的Token域的指针值比对一致,则检测出所述新进程存在提权行为。

上述检测模块805进一步适于:利用挂钩技术,在调用相应的指定API之前,获取所述新进程的属性值;将所获取的所述新进程的属性值与在所述进程创建通知例程中所记录的新进程的属性值进行比对;若比对不一致,则检测出所述新进程存在提权行为。

上述检测模块805进一步适于:将所述获取的新进程的Privileges、TokenUser、和/或TokenOwner与在所述进程创建通知例程中所记录的新进程的Privileges、UserSID、和/或OwnerSID进行比对。

上述检测模块805进一步适于:利用挂钩技术,在调用相应的指定API之前,查询所述新进程的EPROCESS结构地址中的Token域内的ACL是否被置空;若是,则检测出所述新进程存在提权行为。

上述检测模块805进一步适于:利用挂钩技术,在调用栈对CR4寄存器进行操作之前,查看所述调用栈是否为允许调用CR4寄存器修改指令的调用栈,或者,检测所述调用栈是否调用禁用SMEP的指令;若是,则检测出所述新进程存在提权行为。

上述检测模块805进一步适于:检测是否存在将有限制的内核地址写操作转化为内核任意地址读写操作的行为,若是,则检测出所述新进程存在提权行为。

本实施例提供的基于虚拟机的内核漏洞检测装置在虚拟机沙箱隔离环境下运行,根据用户层进程发送的样本文件的相关信息以及各检测功能点的开关信息,开启内核层行为监控总控开关;监控系统创建的新进程,对新进程的内核层各操作行为进行检测。本装置将内核漏洞的检测与外部隔离,为可疑样本提供了一个封闭的检测环境,即使可疑样本确实存在漏洞,也不会对服务器侧造成损害,提供了一种安全且高效地内核漏洞检测机制。本装置通过挂钩技术,针对用户层进程提供的各检测功能点对应的API设置钩子函数,在调用API之前,执行检测操作,能及时有效地发现提权和利用等问题,提升了内核漏洞检测的效率。

图9示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测进程保护的功能框图。本实施例提供的装置主要是用于保护在虚拟机沙箱隔离环境下运行的检测进程的地址空间,防止被沙箱逃逸的恶意样本进程访问、释放或泄露,避免机密信息失窃。如图9所示,该装置包括:写入模块901,挂钩处理模块902,判断模块903,终止模块904。可选地,还包括:接收模块905和调用模块906。

接收模块905,适于接收用户层进程发送的各检测子进程的进程ID。

在辅助检测进程加载核心检测进程的驱动程序之后,读取目标检测配置文件中的相关字段,解析得到一个或多个检测子进程的进程名,根据进程名获取各检测子进程的进程ID,通过IO控制码将各检测子进程的进程ID发送给核心检测进程。

核心检测进程内部的接收模块905接收辅助检测进程(用户层进程)通过IO控制码发送的各检测子进程的进程ID。具体地,接收模块905在接收到标记为“进程ID过滤”的IO控制码后,从输入缓冲区中获取当次传递的进程ID。

写入模块901,适于获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中。

写入模块901根据进程ID获取检测子进程的相关信息。其中,相关信息可具体为EPROCESS结构地址。写入模块901获取各检测子进程的EPROCESS结构地址之后,将各检测子进程的EPROCESS结构地址写入进程过滤名单中。

挂钩处理模块902,适于利用挂钩技术,在调用指定API之前,获取当前上下背景文进程的相关信息和操作目标进程的相关信息。

挂钩处理模块902对关于进程、线程、内存地址空间操作的指定API进行挂钩,在Hook指定API后,在自定义函数中实现判断模块903和终止模块904的功能。挂钩处理模块902首先获取当前上下背景文进程的EPROCESS结构地址和操作目标进程的EPROCESS结构地址。

判断模块903,适于判断所述操作目标进程的相关信息是否记录在所述进程过滤名单中,且所述当前上下背景文进程的相关信息是否未记录在所述进程过滤名单中。具体地,判断模块903判断操作目标进程的EPROCESS结构地址是否记录在进程过滤名单中,且当前上下背景文进程的EPROCESS结构地址是否未记录在进程过滤名单中。

终止模块904,适于若判断模块903判断出操作目标进程的相关信息记录在进程过滤名单中,且当前上下背景文进程的相关信息未记录在进程过滤名单中,终止调用指定API。

调用模块906,适于若判断模块903判断出操作目标进程的相关信息未记录在所述进程过滤名单中,或者,当前上下背景文进程的相关信息记录在进程过滤名单中,则继续调用指定API,向调用者返回所述指定API的返回值。

根据本实施例提供的基于虚拟机的内核漏洞检测进程保护装置,将各检测子进程的相关信息写入进程过滤名单中,在调用指定API之前,利用挂钩获取当前上下背景文进程的相关信息和操作目标进程的相关信息,通过将当前上下背景文进程的相关信息和操作目标进程的相关信息与进程过滤名单相匹配,判定是否终止调用指定API。利用本装置,可保护在虚拟机沙箱隔离环境下运行的检测进程的地址空间,防止被沙箱逃逸的恶意样本进程访问,避免机密信息失窃,提升在虚拟机沙箱隔离环境下内核漏洞检测的安全性。

图10示出了根据本发明一个实施例的基于虚拟机的内核漏洞检测文件保护的功能框图。本实施例提供的装置主要是用于保护检测过程中所产生的检测文件,如日志文件等,防止被沙箱逃逸的恶意样本进程访问、篡改、加密或损毁,避免因此导致的检测失败或结果异常,维护沙箱系统的稳定和性能。如图10所示,该装置包括:第一写入模块1001,第二写入模块1002,第一判断模块1003,第二判断模块1004,拒绝模块1005;可选地,该装置还包括:接收模块1006和响应模块1007。

接收模块1006,适于接收用户层进程发送的检测文件的存储路径。

在辅助检测进程加载核心检测进程的驱动程序之后,读取目标检测配置文件中的相关字段,解析得到一个或多个检测子进程的进程名以及一个或多个检测文件的存储路径,根据进程名获取各检测子进程的进程ID,通过IO控制码将各检测子进程的进程ID和各检测文件的存储路径发送给核心检测进程。

核心检测进程内部的接收模块1006接收辅助检测进程(用户层进程)通过IO控制码发送的各检测子进程的进程ID和各检测文件的存储路径。具体地,核心检测进程在接收到标记为“进程ID过滤”的IO控制码后,从输入缓冲区中获取当次传递的进程ID;核心检测进程在接收到标记为“私有目录”的IO控制码后,从输入缓冲区中获取当次传递的检测文件的存储路径。

第一写入模块1001,适于获取各检测子进程的相关信息,将各检测子进程的相关信息写入进程过滤名单中。

第一写入模块1001根据进程ID获取检测子进程的相关信息。本方法中,相关信息可具体为EPROCESS结构地址。第一写入模块1001获取各检测子进程的EPROCESS结构地址之后,将各检测子进程的EPROCESS结构地址写入进程过滤名单中。

第二写入模块1002,适于获取检测文件的存储路径信息,将检测文件的存储路径信息写入私有目录名单中。

第二写入模块1002根据检测文件的存储路径构造出字符串对象作为检测文件的存储路径信息,将检测文件的存储路径信息写入私有目录名单中。

第一判断模块1003,适于当产生文件访问操作时,判断文件访问对象的存储路径信息是否记录在私有目录名单中。

本实施例实现检测文件保护主要是在IRP分发函数的函数体中实现。例如,在READ,WRITE,CREATE,SET_INFORMATION,DIRECTORY_CONTROL等分发函数的自实现函数体中,实现判断文件访问对象的存储路径信息是否记录在私有目录名单中。

第二判断模块1004,若第一判断模块1003判断出文件访问对象的存储路径信息记录在私有目录名单中,则判断当前上下背景文进程的相关信息是否记录在所述进程过滤名单中。

若判断出文件访问对象的存储路径信息记录在私有目录名单中,则第二判断模块1004进一步判断当前上下背景文进程的相关信息是否记录在进程过滤名单中,具体地,判断当前上下背景文进程的EPROCESS结构地址是否记录在进程过滤名单中。

拒绝模块1005,适于若第二判断模块1004判断出当前上下背景文进程的相关信息未记录在进程过滤名单中,则拒绝文件访问操作。

若文件访问对象的存储路径信息记录在私有目录名单,而当前上下背景文进程的相关信息未记录在进程过滤名单中,表明有其它进程试图访问检测文件,则IPR不再向下分发,拒绝文件访问操作。

响应模块1007,适于若第一判断模块1003判断出文件访问对象的存储路径信息未记录在私有目录名单中,或者,第二判断模块1004判断出当前上下背景文进程的相关信息记录在进程过滤名单中,则继续响应文件访问操作。

若文件访问对象的存储路径信息未记录在私有目录名单,表明访问的不是需要保护的检测文件,则IPR继续向下分发,响应文件访问操作。若文件访问对象的存储路径信息记录在私有目录名单,且当前上下背景文进程的相关信息记录在进程过滤名单中,表明是检测子进程试图访问检测文件,则IPR继续向下分发,响应文件访问操作。

根据本实施例提供的基于虚拟机的内核漏洞检测文件保护装置,将各检测子进程的相关信息写入进程过滤名单中,将检测文件的存储路径信息写入私有目录名单中,当产生文件访问操作时,将文件访问对象的存储路径信息和当前上下背景文进程的相关信息分别与进程过滤名单和私有目录名单相匹配,判定是否拒绝文件访问操作。利用本装置,可保护在虚拟机沙箱隔离环境下产生的检测文件,防止被沙箱逃逸的恶意样本进程访问、篡改、加密或损毁,避免因此导致的检测失败或结果异常,维护沙箱系统的稳定和性能。

本发明可以应用于网络安全、终端安全、云安全、应用安全、安全管理和安全服务等多个领域。产品包括高中低端下一代防火墙、入侵防御系统、DDoS攻击防御系统、虚拟综合业务网关、沙箱、大数据安全分析系统等产品,以及相应的针对传统威胁及未知威胁的解决方案。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于虚拟机的内核漏洞检测装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1