发明内容
有鉴于此,本发明提供一种漏洞检测方法及装置,主要目的在于能够缩短技术人员检测未知漏洞的范围,简化漏洞检测的流程以及节省检测所消耗的时间,从而能够提升漏洞检测的效率。
依据本发明第一方面,提供了一种漏洞检测方法,包括:
对终端设备的系统进行虚拟化处理;
利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;
若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。
可选地,所述利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规,包括:
利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为访问的物理内存页面进行监控;
检测所述访问的物理内存页面是否符合预设条件;
若符合,则确定所述操作行为发生内存访问违规。
可选的,所述检测所述访问的物理内存页面是否符合预设条件,包括:
检测所述访问的物理内存页面是否属于第一物理内存页面集合且属于第二物理内存页面集合,所述第一物理内存页面集合为所述系统中各个物理内存页面的集合,所述第二物理内存页面集合为所述系统中不具有写入权限的物理内存页面的集合;
所述若发生内存访问违规,则确定检测到疑似未知漏洞,包括:
若是,则确定所述操作行为发生内存写入违规,并确定检测到疑似的未知漏洞提权操作。
进一步地,所述检测所述访问的物理内存页面是否符合预设条件之前,所述方法还包括:
枚举所述系统的各个物理内存页面,并枚举所述系统的各个系统进程控制域对应的物理内存页面;
根据所述系统的各个物理内存页面,构建所述第一物理内存页面集合;
根据所述各个系统进程控制域对应的物理内存页面,构建所述第二物理内存页面集合。
可选地,所述检测所述访问的物理内存页面是否符合预设条件,包括:
检测所述访问的物理内存页面是否属于第三物理内存页面集合但不属于第四物理内存页面集合,所述第三物理内存页面集合为所述系统中各个物理内存页面的集合,所述第四物理内存页面集合为所述系统中具有执行权限的物理内存页面的集合;
所述若发生内存访问违规,则确定检测到疑似未知漏洞,包括:
若是,则确定所述操作行为发生内存执行违规,并确定检测到疑似的未知漏洞shellcode操作。
进一步地,所述检测所述访问的物理内存页面是否符合预设条件之前,所述方法还包括:
枚举所述系统的各个物理内存页面,并枚举所述系统各个已经载入内存的可执行模块;
根据所述系统的各个物理内存页面,构建所述第三物理内存页面集合;
根据所述可执行模块对应的物理内存页面,构建所述第四物理内存页面集合。
进一步地,所述确定检测到疑似未知漏洞之后,所述方法还包括:
对所述操作行为进行拦截处理。
可选地,所述上下文环境包括中央处理器寄存器信息、进程模块信息、调用堆栈信息,所述将所述操作行为对应的上下文环境进行保存,包括:
利用虚拟机控制域获取所述中央处理器寄存器信息,利用内存访问违规的代码虚拟地址获取所述进程模块信息,并利用预设栈回溯函数获取所述调用堆栈信息;
将所述中央处理器寄存器信息、所述进程模块信息和所述调用堆栈信息保存到共享内存。
依据本发明第二方面,提供了一种漏洞检测装置,包括:
处理单元,用于对终端设备的系统进行虚拟化处理;
检测单元,用于利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;
确定单元,用于若所述检测单元检测所述操作行为发生内存访问违规,则确定检测到疑似未知漏洞;
保存单元,用于将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。
可选地,所述检测单元包括:
监控模块,用于利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为访问的物理内存页面进行监控;
检测模块,用于检测所述访问的物理内存页面是否符合预设条件;
确定模块,用于若所述检测模块检测所述访问的物理内存页面符合预设条件,则确定所述操作行为发生内存访问违规。
可选地,所述检测单元包括:
监控模块,用于利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为访问的物理内存页面进行监控;
检测模块,用于检测所述访问的物理内存页面是否符合预设条件;
确定模块,用于若所述检测模块检测所述访问的物理内存页面符合预设条件,则确定所述操作行为发生内存访问违规。
进一步地,所述检测单元还包括:
第一枚举模块,用于枚举所述系统的各个物理内存页面,并枚举所述系统的各个系统进程控制域对应的物理内存页面;
第一构建模块,用于根据所述系统的各个物理内存页面,构建所述第一物理内存页面集合;并根据所述各个系统进程控制域对应的物理内存页面,构建所述第二物理内存页面集合。
可选地,所述检测模块,具体用于检测所述访问的物理内存页面是否属于第三物理内存页面集合但不属于第四物理内存页面集合,所述第三物理内存页面集合为所述系统中各个物理内存页面的集合,所述第四物理内存页面集合为所述系统中具有执行权限的物理内存页面的集合;
所述确定单元,具体用于若所述检测模块检测所述访问的物理内存页面属于第三物理内存页面集合但不属于第四物理内存页面集合,则确定所述操作行为发生内存执行违规,并确定检测到疑似的未知漏洞shellcode操作。
进一步地,所述检测单元还包括:
第二枚举模块,用于枚举所述系统的各个物理内存页面,并枚举所述系统各个已经载入内存的可执行模块;
第二构建模块,用于根据所述系统的各个物理内存页面,构建所述第三物理内存页面集合;并根据所述可执行模块对应的物理内存页面,构建所述第四物理内存页面集合。
可选地,所述处理单元,还用于对所述操作行为进行拦截处理。
可选地,所述保存单元,具体用于当所述上下文环境包括中央处理器寄存器信息、进程模块信息、调用堆栈信息时,利用虚拟机控制域获取所述中央处理器寄存器信息,利用内存访问违规的代码虚拟地址获取所述进程模块信息,并利用预设栈回溯函数获取所述调用堆栈信息;并将所述中央处理器寄存器信息、所述进程模块信息和所述调用堆栈信息保存到共享内存。
依据本发明第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
对终端设备的系统进行虚拟化处理;
利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;
若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。
依据本发明第四方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
对终端设备的系统进行虚拟化处理;
利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;
若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。
本发明提供一种漏洞检测方法及装置,与目前通常采用代码审查、黑盒测试、文档研究等方式进行系统未知漏洞检测相比,本发明通过对终端设备的系统进行虚拟化处理,能够利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,并检测所述操作行为是否发生内存访问违规。与此同时,在确定所述操作行为发生内存访问违规时,能够确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测,通过上下文环境能够精确的定位发生内存访问违规的代码地址,能够缩小未知漏检测洞的搜索范围,简化漏洞检测的流程以及节省检测所消耗的时间,从而能够提升漏洞检测的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如背景技术所述,目前,通常采用代码审查、黑盒测试、文档研究等方式进行系统未知漏洞检测。具体地,采用源代码扫描、反汇编扫描、环境错误注入等漏洞检技术进行检测。然而,通过上述方式进行未知漏洞检测,漏洞检测的范围比较大,漏洞检测的流程较复杂且需要耗费大量的时间进行分析、研究、测试等,造成漏洞检测的效率较低。
为了解决上述技术问题,本发明实施例提供了一种漏洞检测方法,如图1所示,所述方法包括:
101、对终端设备的系统进行虚拟化处理。
对于本发明实施例,如图2所示,在对终端设备的系统进行虚拟化之前,所述终端设备的系统状态可以包括:应用程序→操作系统→物理硬件。在对所述终端设备的系统进行虚拟化处理之前,先进入虚拟化准备工作:先检测系统是否支持虚拟化,若支持虚拟化,则设置MSR(Microsoft Reserved Partition,微软保留分区)位图,设置IO(Input output,输入输出)位图,初始化全局物理内存快照,初始化MTT(Mean Time To Restoration,平均恢复时间)。
需要说明的是,对所述终端设备的系统进行虚拟化处理的过程可以为CPU(Central Processing Unit,中央处理器)逐个虚拟化的过程,CPU虚拟化的具体过程包括:获取当前CPU→构建EPT(Extended Page Tables,扩展页表)页表,让HPA(Host PhysicalAddress,宿主机的物理地址)和GPA(Guest Physical Address,客户机的物理地址)一一对应→申请连续HyperVisor(虚拟机监视器)栈空间→初始化VMCS(Virtual-MachineControl Structure,虚拟机控制块)\VMXON内存区域→Vmxon进入虚拟化初始化→VMCSVMXCLEAR、VMXPTRLD加载虚拟机→填充VMCS控制块→VMXLAUNCH。对终端设备的系统进行虚拟化之后,所述终端设备的系统状态可以包括:应用程序→HyperVisor层→操作系统→物理硬件。即通过对CPU逐个虚拟化,可以将整个终端设备的系统置于虚拟环境之中,在操作系统之下产生一个新的HyperVisor层,HyperVisor层权限高于操作系统层和应用层,从而能够对所述操作系统层和所述应用层的内存操作等关键行为进行实时监控。
102、利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规。
其中,对所述终端设备对应的操作行为可以为应用程序对所述终端设备操作的行为。若所述操作行为具有内存权限,则所述操作行为对所述终端设备的系统内存的访问是合法的;若所述操作行为不具有内存权限,则所述操作行为对所述终端设备的系统内存的访问是违规的,此时发生内存访问违规。对所述终端设备的系统内存的访问可以包括:读取物理内存页面、写入物理内存页面和执行物理内存页面。本发明实施例可以通过所述操作行为访问的物理内存页面对应的权限,检测所述操作行为是否具有内存权限,以及是否发生内存访问违规。
103、若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存。
其中,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。具体地,通过保存所述上下文环境,所述终端设备的操作系统层可以读取所述上下文环境,技术人员通过直接对所述上下文环境进行分析,能够精确定位到内存访问违规的代码地址,并根据定位的代码地址进一步分析,对所述疑似未知漏洞进行去伪存真,确定真正的漏洞。技术人员在确定真正的漏洞后,可以将漏洞添加到漏洞名单中,以便后续对终端设备进行安全扫描,以保证终端设备的安全。
本发明实施例的提供一种漏洞检测方法,与目前通常采用代码审查、黑盒测试、文档研究等方式进行系统未知漏洞检测相比,本发明实施例通过对终端设备的系统进行虚拟化处理,能够利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,并检测所述操作行为是否发生内存访问违规。与此同时,在确定所述操作行为发生内存访问违规时,能够确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测,通过上下文环境能够精确的定位发生内存访问违规的代码地址,能够缩小未知漏检测洞的搜索范围,简化漏洞检测的流程以及节省检测所消耗的时间,从而能够提升漏洞检测的效率。
进一步的,为了更好的说明上述漏洞检测的过程,作为对上述实施例的细化和扩展,本发明实施例提供了另一种漏洞检测方法,如图3所示,但不限于此,具体如下所示:
201、对终端设备的系统进行虚拟化处理。
202、利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为访问的物理内存页面进行监控。
对于本发明实施例,可以通过在HyperVisor层修改EPT页表设置内存访问权限异常回调函数对所述访问的物理内存页面进行监控。具体地,当所述访问的物理内存页面发生异常,如发生读取异常、写入异常或者执行异常时,所述内存访问权限异常回调函数会被执行,从而能够实现对所述访问的物理内存页面的监控。
203、检测所述访问的物理内存页面是否符合预设条件。若是,则执行步骤204。
其中,所述物理内存页面可以为内存中的内存区域,所述预设条件可以为根据所述终端设备的内存条件设置,所述预设条件可以为所述物理内存页面为所述系统中的物理内存页面且为所述系统中不具有执行权限的物理内存页面,或者所述预设条件可以为所述物理内存页面为所述系统的物理内存页面且为所述系统中不具有写入权限的物理内存页面。通过检测所述访问的物理内存页面是否符合预设条件,可以检测所述操作行为是否具有访问内存的权限。
对于本发明实施例,所述步骤203具体可以包括:检测所述访问的物理内存页面是否属于第一物理内存页面集合且属于第二物理内存页面集合,所述第一物理内存页面集合为所述系统中各个物理内存页面的集合,所述第二物理内存页面集合为所述系统中不具有写入权限的物理内存页面的集合。若所述访问的物理内存页面属于第一物理内存页面集合且属于第二物理内存页面集合,则确定所述访问的物理内存页面为所述系统中的物理内存页面且所述系统中不具有写入权限的物理内存页面,确定所述操作行为发生内存写入违规,并确定检测到疑似的未知漏洞提权操作。所述第一物理内存页面集合保存有所述系统的所有物理内存页面,所述第二物理内存页面保存有所述系统中所有不具有写入执行权限的物理内存页面。
具体地,可以通过在HyperVisor层配置EPT页表,抹掉不应该具有写入权限的物理内存页面的写入权限,并设置内存写入权限异常回调函数检测检测所述访问的物理内存页面是否属于第一物理内存页面集合且属于第二物理内存页面集合,以检测所述操作行为写入的物理内存页面是否为不具有写入权限的物理内存页面,一旦被抹掉写入权限的物理内存页面发生了内存写入,或者一旦不应该被修改的内存区域发生了内存写入,设置的内存写入权限异常回调函数就会被执行,即可以检测所述操作行为写入的物理内存页面不具有写入权限,发生了内存写入违规。
需要说明的是,当所述预设条件为所述物理内存页面为所述系统中的物理内存页面且为所述系统中不具有写入权限的物理内存页面时,所述步骤203之前所述方法还包括:枚举所述系统的各个物理内存页面,并枚举所述系统的各个系统进程控制域对应的物理内存页面;根据所述系统的各个物理内存页面,构建所述第一物理内存页面集合;根据所述各个系统进程控制域对应的物理内存页面,构建所述第二物理内存页面集合。
对于本发明实施例,所述步骤203具体还可以包括:检测所述访问的物理内存页面是否属于第三物理内存页面集合但不属于第四物理内存页面集合,所述第三物理内存页面集合为所述系统中各个物理内存页面的集合,所述第四物理内存页面集合为所述系统中具有执行权限的物理内存页面的集合。所述第三物理页面集合与所述第一物理页面集合相同,均为所述系统中所有物理内存页面的集合。若检测所述访问的物理内存页面属于第三物理内存页面集合但不属于第四物理内存页面集合,则确定所述访问的物理内存页面为所述系统中不具有执行权限的物理内存页面,确定所述操作行为发生内存执行违规,并确定检测到疑似的未知漏洞shellcode操作,所述Shellcode实可以一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。
具体地,可以通过在HyperVisor层配置EPT页表,抹掉不应该具有执行权限的物理内存页面的执行入权限,并设置内存执行权限异常回调函数检测检测所述访问的物理内存页面是否属于第三物理内存页面集合,但不属于第四物理内存页面集合,以检测所述操作行为执行的物理内存页面是否为不具有写入执行权限的物理内存页面,一旦被抹掉执行权限的物理内存页面发生了内存执行,或者一旦不应该执行代码的内存区域发生了代码执行,设置的内存执行权限异常回调函数就会被执行,即可以检测所述操作行为执行的物理内存页面不具有执行权限,发生了内存执行违规。
需要说明的是,当所述预设条件为所述物理内存页面为所述系统中的物理内存页面且为所述系统中不具有执行权限的物理内存页面时,所述步骤203之前,所述方法还包括:枚举所述系统的各个物理内存页面,并枚举所述系统各个已经载入内存的可执行模块;根据所述系统的各个物理内存页面,构建所述第三物理内存页面集合;根据所述可执行模块对应的物理内存页面,构建所述第四物理内存页面集合。
204、确定所述操作行为发生内存访问违规,确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存。
其中,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。所述上下文环境可以包括中央处理器寄存器信息、进程模块信息、调用堆栈信息,所述将所述操作行为对应的上下文环境进行保存的步骤具体可以包括:利用虚拟机控制域获取所述中央处理器寄存器信息,利用内存访问违规的代码虚拟地址获取所述进程模块信息,并利用预设栈回溯函数获取所述调用堆栈信息;将所述中央处理器寄存器信息、所述进程模块信息和所述调用堆栈信息保存到共享内存。所述预设栈回溯函数可以为RtlWalkFrameChain函数。通过将上述信息保存在共享内存,所述终端设备的操作系统层的相关模块可以读取或者保存上述信息,使得技术人员可以进一步去伪存真,区分应用程序的正常操作行为和异常操作行为。
对于本发明实施例,为了保证所述终端设备的安全性,在确定检测到疑似未知漏洞之后,所述方法还包括:对所述操作行为进行拦截处理。具体地,当疑似未知漏洞为疑似的未知漏洞写入操作时,可以利用设置的内存写入权限异常回调函数获取所述操作行为对应的系统上下文关键信息,拦截所述写入操作。当疑似未知漏洞为疑似的未知漏洞执行操作时,可以利用设置的内存执行权限异常回调函数获取所述操作行为对应的系统上下文关键信息,拦截所述执行操作。
对于本发明实施例,还提供如下应用场景,但不限定于此,包括:如图4所示,集合可以为第二物理内存页面集合,集合B可以为第一物理内存页面集合或者第三物理内存页面集合、集合A可以为第四物理内存页面集合。在所述终端设备进入虚拟化后,可以执行如下操作:枚举系统所有已经载入内存的可执行模块;将可执行模块对应的物理内存页面加入集合A;枚举系统所有物理内存页面加入集合B;枚举系统所有进程;定位每个进程中控制权限的物理内存页面;并将相应的物理内存页面加入集合C;设置进程回调函数,监控新进程对应的物理内存页面,具体地,在监控到新进程启动时,可以枚举当前进程的所有可执行模块,并将可执行模块对应的物理内存页面加入集合A,定位当前进程权限控制域物理内存页面区域加入集合C。在HyperVisor层通过修改EPT页表设置内存访问权限异常回调;在HyperVisor层移除集合B中除集合A之外的所有物理内存页面的可执行权限;在HyperVisor层移除集合B中除集合C之外的所有物理内存页面的可写入权限。
当检测访问的物理内存页面属于集合B也属于集合C时,说明不应该被写入的物理内存页面被写入,设置内存访问权限异常回调函数被执行时,此时检测到内存写入违规,并检测到到疑似的未知漏洞执行操作;当检测访问的物理内存页面属于集合B但不属于集合A时,说明不应该被执行的物理内存页面被执行,设置内存访问权限异常回调函数被执行时,此时检测到内存执行违规,并检测到疑似的未知漏洞shellcode操作。
本发明实施例的提供另一种漏洞检测方法,与目前通常采用代码审查、黑盒测试、文档研究等方式进行系统未知漏洞检测相比,本发明实施例通过对终端设备的系统进行虚拟化处理,能够利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,并检测所述操作行为是否发生内存访问违规。与此同时,在确定所述操作行为发生内存访问违规时,能够确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测,通过上下文环境能够精确的定位发生内存访问违规的代码地址,能够缩小未知漏检测洞的搜索范围,简化漏洞检测的流程以及节省检测所消耗的时间,从而能够提升漏洞检测的效率。
进一步地,作为图1的具体实现,本发明实施例提供了一种漏洞检测装置,如图5所示,所述装置包括:处理单元31、检测单元32、确定单元33和保存单元34。
所述处理单元31,可以用于对终端设备的系统进行虚拟化处理。所述处理单元31是本装置中对终端设备的系统进行虚拟化处理的功能模块。
所述检测单元32,可以用于利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规。所述检测单元32是本装置中利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规的功能模块,也是核心模块。
所述确定单元33,可以用于若所述检测单元32检测所述操作行为发生内存访问违规,则确定检测到疑似未知漏洞。所述确定单元33是本装置中若所述检测单元32检测所述操作行为发生内存访问违规,则确定检测到疑似未知漏洞的功能模块。
所述保存单元34,可以用于将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。所述保存单元34是本装置将所述操作行为对应的上下文环境进行保存的功能模块。
对于本发明实施例,为了检测所述操作行为是否发生内存写入违规,所述检测单元32可以包括:监控模块321、检测模块322和确定模块323,如图6所示。
所述监控模块321,可以用于利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为访问的物理内存页面进行监控。
所述检测模块322,可以用于检测所述访问的物理内存页面是否符合预设条件。
所述确定模块323,可以用于若所述检测模块检测所述访问的物理内存页面符合预设条件,则确定所述操作行为发生内存访问违规。
所述检测模块322,具体可以用于检测所述访问的物理内存页面是否属于第一物理内存页面集合且属于第二物理内存页面集合,所述第一物理内存页面集合为所述系统中各个物理内存页面的集合,所述第二物理内存页面集合为所述系统中不具有写入权限的物理内存页面的集合。
所述确定单元33,具体可以用于若所述检测模块322检测所述访问的物理内存页面属于第一物理内存页面集合且属于第二物理内存页面集合,则确定所述操作行为发生内存写入违规,并确定检测到疑似的未知漏洞提权操作。
在具体应用场景中,所述检测单元32还包括:第一枚举模块324和第一构建模块325。
所述第一枚举模块324,可以用于枚举所述系统的各个物理内存页面,并枚举所述系统的各个系统进程控制域对应的物理内存页面。
所述第一构建模块325,可以用于根据所述系统的各个物理内存页面,构建所述第一物理内存页面集合;并根据所述各个系统进程控制域对应的物理内存页面,构建所述第二物理内存页面集合。
对于本发明实施例,为了检测所述操作行为是否发生内存执行违规,所述检测模块322,具体可以用于检测所述访问的物理内存页面是否属于第三物理内存页面集合但不属于第四物理内存页面集合,所述第三物理内存页面集合为所述系统中各个物理内存页面的集合,所述第四物理内存页面集合为所述系统中具有执行权限的物理内存页面的集合。
所述确定单元33,具体可以用于若所述检测模块322检测所述访问的物理内存页面属于第三物理内存页面集合但不属于第四物理内存页面集合,则确定所述操作行为发生内存执行违规,并确定检测到疑似的未知漏洞shellcode操作。
在具体应用场景中,所述检测单元32还可以包括:第二枚举模块326和第二构建模块327。
所述第二枚举模块326,可以用于枚举所述系统的各个物理内存页面,并枚举所述系统各个已经载入内存的可执行模块;
所述第二构建模块327,可以用于根据所述系统的各个物理内存页面,构建所述第三物理内存页面集合;并根据所述可执行模块对应的物理内存页面,构建所述第四物理内存页面集合。
对于本发明实施例,为了提升终端设备的安全性,所述处理单元31,还可以用于对所述操作行为进行拦截处理。
在具体应用场景中,为了使得终端设备的操作系统相关模块读取并保存疑似未知漏洞的相关信息,方便技术人员对疑似未知漏洞进一步检测,所述保存单元34,具体可以用于当所述上下文环境包括中央处理器寄存器信息、进程模块信息、调用堆栈信息时,利用虚拟机控制域获取所述中央处理器寄存器信息,利用内存访问违规的代码虚拟地址获取所述进程模块信息,并利用预设栈回溯函数获取所述调用堆栈信息;并将所述中央处理器寄存器信息、所述进程模块信息和所述调用堆栈信息保存到共享内存。
需要说明的是,本发明实施例提供的一种漏洞检测装置所涉及各功能模块的其他相应描述,可以参考图1所示方法的对应描述,在此不再赘述。
基于上述如图1所示方法,相应的,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:对终端设备的系统进行虚拟化处理;利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。
基于上述如图1所示方法和如图5所示漏洞检测装置的实施例,本发明实施例还提供了一种计算机设备的实体结构图,如图7所示,该设备包括:处理器41、存储器42、及存储在存储器42上并可在处理器上运行的计算机程序,其中存储器42和处理器41均设置在总线43上所述处理器41执行所述程序时实现以下步骤:对终端设备的系统进行虚拟化处理;利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,以检测所述操作行为是否发生内存访问违规;若发生内存访问违规,则确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测。该设备还包括:总线43,被配置为耦接处理器41及存储器42。
通过本发明的技术方案,通过对终端设备的系统进行虚拟化处理,能够利用虚拟化后的虚拟机监视器对所述终端设备对应的操作行为进行内存权限监控,并检测所述操作行为是否发生内存访问违规。与此同时,在确定所述操作行为发生内存访问违规时,能够确定检测到疑似未知漏洞,并将所述操作行为对应的上下文环境进行保存,所述上下文环境用于对所述疑似未知漏洞检测进一步检测,通过上下文环境能够精确的定位发生内存访问违规的代码地址,能够缩小未知漏检测洞的搜索范围,简化漏洞检测的流程以及节省检测所消耗的时间,从而能够提升漏洞检测的效率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的漏洞检测装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。