未知程序异常请求的监控方法、装置、及电子装置与流程

文档序号:17741643发布日期:2019-05-24 20:11阅读:186来源:国知局
未知程序异常请求的监控方法、装置、及电子装置与流程

本发明涉及计算机安全防护领域,具体而言,涉及一种未知程序异常请求的监控方法、装置、及电子装置。



背景技术:

随着互联网日益普及,人们越来越依赖计算机来处理各种事务,防护计算机的操作系统安全越来越重要。某些恶意程序可能会通过磁盘直接读写的方式,在系统中植入一些病毒代码,特别是针对系统起始扇区mbr(masterbootrecord)的操作,恶意程序更改此位置的内容,就能植入rootkit。对于这种恶意程序,文件级别的监控无法捕获,因为磁盘直接读写会跳过文件级别去读写。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种未知程序异常请求的监控方法、装置、及电子装置。

根据本发明的一个实施例,提供了一种未知程序异常请求的监控方法,包括:利用文件系统的微过滤驱动在终端设备的驱动层监听是否接收到目标请求,其中,目标请求用于请求打开文件;在监听到目标请求的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为;在目标请求不是未知程序请求对磁盘读写的行为的情况下,允许执行目标请求;在目标请求是未知程序请求对磁盘读写的行为的情况下,拦截目标请求。

进一步地,根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为,包括:判断文件对象的文件名是否为空;判断设备对象是否存在;判断设备对象的设备名是否符合预设正则表达式;判断发起目标请求的进程是否符合预设进程的行为特征,其中,预设进程为允许执行磁盘读写行为的进程;其中,在判断结果满足以下条件的情况下,确定目标请求是未知程序请求对磁盘读写的行为:文件对象的文件名为空,且设备对象存在,且设备对象的设备名符合预设正则表达式,且发起目标请求的进程不符合预设进程的行为特征。

进一步地,判断发起目标请求的进程是否符合预设进程的行为特征,包括:对发送目标请求的进程进行内核栈回溯,得到进程的栈信息;将栈信息与预设栈特征进行匹配,判断是否匹配成功,其中,预设栈特征为预先收集的预设进程的栈特征。

进一步地,预设栈特征为操作系统的目标进程请求磁盘读写的栈行为链。

进一步地,预设栈特征为预设进程请求磁盘读写的栈行为链,将栈信息与预设栈特征进行匹配,包括:将栈信息分别与多个预设进程的栈行为链一一匹配,其中,在栈信息与任一栈行为链匹配成功的情况下,允许执行目标请求,在栈信息与多个栈行为链均匹配失败的情况下,拦截目标请求。

进一步地,在拦截目标请求之前,该方法还包括:获取目标请求的请求内容信息;将目标请求的请求内容信息发送至目标应用;通过目标应用在应用层判断是否拦截目标请求。

进一步地,通过目标应用在应用层判断是否拦截目标请求,包括:在目标应用的界面中显示目标请求的请求内容信息;通过目标应用的界面接收输入的选择操作;根据选择操作确定是否拦截目标请求。

进一步地,在利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为之前,该方法还包括:利用微过滤驱动判断目标应用是否已开启目标防护功能;其中,在目标应用未开启目标防护功能的情况下,允许执行目标请求;在目标应用已开启目标防护功能的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为。

根据本发明的另一个实施例,提供了一种未知程序异常请求的监控装置,包括:监听模块,用于利用文件系统的微过滤驱动在终端设备的驱动层监听是否接收到目标请求,其中,目标请求用于请求打开文件;第一判断模块,用于在监听到目标请求的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为;第一逻辑模块,用于在目标请求不是未知程序请求对磁盘读写的行为的情况下,允许执行目标请求;拦截模块,用于在目标请求是未知程序请求对磁盘读写的行为的情况下,拦截目标请求。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

根据上述任一实施例提供的技术方案,通过监听打开文件的请求,在驱动层利用一定的过滤规则判断目标请求是否为未知程序读写磁盘的请求,从而根据判断结果确定允许执行目标请求或拦截目标请求,解决了相关技术中文件级别的监控方法无法防止恶意程序直接读写磁盘的问题,能够实时监控磁盘直接读写的行为,防止恶意程序跳过文件级别直接读写磁盘,特别是针对系统起始扇区的操作,与操作系统的兼容性好,运行稳定,误报率低。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种计算机设备的硬件结构框图;

图2是根据本发明实施例的一种可选的打开文件的控制方法的流程图;

图3是根据本发明实施例的一种可选的打开文件的控制装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例一所提供的方法实施例可以在移动终端、计算机设备、服务器或者类似的运算装置中执行。以运行在计算机设备上为例,图1是本发明实施例的一种计算机设备的硬件结构框图。如图1所示,计算机设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述计算机设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机设备的结构造成限定。例如,计算机设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的打开文件的控制方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机设备的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种打开文件的控制方法,图2是根据本发明实施例的打开文件的控制方法的流程图,如图2所示,该流程包括如下步骤:

步骤201,利用文件系统的微过滤驱动在终端设备的驱动层监听是否接收到目标请求,其中,目标请求用于请求打开文件;

步骤202,在监听到目标请求的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为;

步骤203,在目标请求不是未知程序请求对磁盘读写的行为的情况下,允许执行目标请求;

步骤204,在目标请求不是未知程序请求对磁盘读写的行为的情况下,拦截目标请求。

文件系统的微过滤驱动(minifilter)可以通过在过滤管理器中注册需要过滤的一些操作,然后提供指定格式的回调函数让过滤管理器调用。对于一种操作或请求等指令,minifilter可以注册一个“过滤前”和“过滤后”被调用的回调函数。

举例而言,对于windows操作系统,可以在监测到操作系统中发生irp_mj_create事件时,利用微过滤驱动中的回调函数执行过滤,判断文件对象和文件对象对应的设备对象是否符合预设条件。其中,irp_mj_create事件用于请求打开文件。

需要说明的是,在文件对象和文件对象对应的设备对象符合一定条件的情况下,能够确定目标请求是用于请求在磁盘中直接读写。

具体的,在磁盘中直接读写时,是跳过文件级别读写的,需要逐步调用应用程序编程接口(api)函数,从应用层到驱动层,其中,在应用层会牵涉到几个模块,如发起请求的进程到操作系统的kernebase、ntdll、nt、fltmgr等模块,最后进入文件系统的过滤管理器。

对于磁盘直接读写,文件对象的文件名是空的,并且,能够确定文件对象对应的设备对象的设备名,且设备名满足一定的表达规则,例如,\\device\\harddisk0\\dr0,其中,harddisk后面的数字对应不同的物理磁盘。

相应的,为了对目标请求是否是未知程序请求磁盘读写的行为进行判断,执行如下的判断操作:

(1)判断文件对象的文件名是否为空;

(2)判断设备对象是否存在;

(3)判断设备对象的设备名是否符合预设正则表达式,例如:预设正则表达式为\\device\\harddisk?\\dr?,其中,符号“?”表示一个字符;

(4)判断发起目标请求的进程是否符合预设进程的行为特征,其中,预设进程为允许执行磁盘读写行为的进程;

其中,只有在判断结果满足以下条件的情况下,确定目标请求是未知程序请求对磁盘读写的行为:

文件对象的文件名为空,且设备对象存在,且设备对象的设备名符合预设正则表达式,且发起目标请求的进程不符合预设进程的行为特征。

上述判断(1)~(3)是用于判断目标请求是否请求对磁盘读写,不分执行顺序,在判断(1)~(3)的判断结果均为是的情况下,确定目标请求是请求磁盘读写行为。如果不是磁盘读写行为,则可以不用执行判断(4),直接放行目标请求。进一步地,如果是磁盘读写,还需要进一步对发起目标请求的进程进行识别,进一步判断发起目标请求的进程是否被允许执行磁盘读写行为,如果不是被允许磁盘读写行为的进程,则拦截目标请求,如果是被允许磁盘读写行为的进程,则允许目标请求。

或者,也可以是先执行判断(4),如果确定发起目标请求的进程符合预设进程的行为特征,则允许执行目标请求,如果不符合,再执行判断(1)~(3)。具体的判断逻辑流程可以根据实际情况设置,本发明实施例对判断逻辑流程不做具体限定。

需要执行判断(4)的原因是,一些非恶意程序也会进行磁盘读写,比如,windows的程序svchost.exe,securityhealthservice.exe,compattelrunner.exe,vds.exe,waasmedic.exe,msmpeng.exe等,因此,需要在发起磁盘读写的请求的情况中排除掉是这些程序发送的情况。

但是,如果直接利用程序名或程序路径进行检测,可能会出现利用这些程序(如在动态库中注入这些合法的程序去磁盘直接读写)的情况。因此,可以采用回溯栈行为,通过栈行为特征匹配的方式识别发起请求的进程是否是被允许磁盘读写行为的进程。具体的,对发送目标请求的进程进行内核栈回溯,得到进程的栈信息,进而将栈信息与被允许执行磁盘读写行为的预设进程的预设栈特征进行匹配,其中,在匹配成功的情况下,确定目标请求符合预设进程的行为特征,在匹配失败的情况下,确定目标请求不符合预设进程的行为特征。

上述的预设栈特征是在预设进程的栈信息中提取出的特征,预设进程是被允许执行磁盘直接读写的程序,也即白名单程序,可选的,可以是操作系统中的一些进程,例如上述的windows操作系统的进程svchost.exe,securityhealthservice.exe,compattelrunner.exe,vds.exe,waasmedic.exe,msmpeng.exe等。栈特征可以使进程请求磁盘读写的栈行为链。通过发起目标请求的进程的回溯栈信息与白名单程序请求磁盘读写的栈行为链进行比对,如果匹配成功,则确定发起目标请求的进程是白名单程序的进程,如果匹配不成功,则确定发起目标请求的程序不属于白名单程序。

可选的,可以预先收集多个白名单进程(预设进程)请求磁盘读写的栈行为链,并可以存储在栈特征库中,进而,可以将发送目标请求的进程内核栈回溯得到的栈信息分别与多个预设进程的栈行为链一一匹配,其中,在栈信息与任一栈行为链匹配成功的情况下,允许执行目标请求,在栈信息与多个栈行为链均匹配失败的情况下,拦截目标请求。

在一种可选的实施例中,如果利用微过滤驱动,根据请求的文件对象和文件对象对应的设备对象,判断出目标请求是未知程序请求对磁盘读写的行为,在拦截目标请求之前,还可以继续利用目标应用进行进一步的判断。

具体而言,在本可选的实施例中,在拦截目标请求之前,获取目标请求的请求内容信息(如发起请求的进程号、线程号,请求的文件路径等)并发送至目标应用,通过目标应用判断是否拦截目标请求。也即,通过目标应用在应用层再执行一次过滤,如果在驱动层判断出目标请求是磁盘读写行为,且不符合已知的非恶意进程的行为特征,可以在应用层进行进一步的判断。

在利用目标应用判断是否拦截目标请求时,可以由用户在目标应用的界面中设置是同步或异步过滤。如果是同步过滤,则需要用户的干预,将目标请求的相关信息(如进程号、线程号、文件路径等)等显示在界面中,由用户选择放行或拦截目标请求。可选的,如果在规定的时间之内用户没有操作,则执行默认的行为,默认行为可以预先设置,也可以由用户设置或修改。如果设置为异步过滤,则每次目标请求上传至目标应用的界面时,直接执行默认的行为,如放行或拦截,同时在界面中显示目标请求的相关信息,如进程号、线程号、磁盘设备名等。

本发明实施例提供的方法可以由终端设备上安装的软件执行,可选的,可以通过开启和关闭目标防护功能来控制是否利用微过滤驱动过滤打开文件的请求。具体的,在利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为之前,利用微过滤驱动判断目标应用是否已开启目标防护功能,如果在目标应用中未开启目标防护功能,允许执行目标请求,也即,直接放过目标请求,不对目标请求是否是未知程序请求对磁盘读写的行为进行判断,反之,如果在目标应用中,目标防护功能已被开启,则利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为。

需要说明的是,本发明实施例提供的方法需要部署在具有微过滤驱动的操作系统中,如win7或win10的x86或x64环境中。本发明实施例及可选的实施方式提供的打开文件的控制方法与操作系统的兼容性好,运行稳定,能够实时监控控制磁盘直接读写的行为,误报率低,交互性好,操作方便,并且还可以通过日志详细记录行为。

需要说明的是,虽然本发明实施例提供的打开文件的控制方法需要在内核驱动层的过滤,但是也可以导出应用层的接口,例如,可以在头文件中提供定义方式,相应的,客户端应用只需要通过接口调用本发明实施例提供的时间处理方法就可以实现无缝集成。

本发明实施例提供的打开文件的控制方法通过监听打开文件的请求,在驱动层利用一定的过滤规则判断目标请求是否为未知程序读写磁盘的请求,从而根据判断结果确定允许执行目标请求或拦截目标请求,解决了相关技术中文件级别的监控方法无法防止恶意程序直接读写磁盘的问题,能够实时监控磁盘直接读写的行为,防止恶意程序跳过文件级别直接读写磁盘,特别是针对系统起始扇区的操作,与操作系统的兼容性好,运行稳定,误报率低。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种打开文件的控制装置,该装置用于实现上述实施例及优选实施方式,包括客户端、服务器等,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的一种可选的打开文件的控制装置的结构框图,如图3所示,该装置包括:监听模块10,第一判断模块20,第一逻辑模块30和拦截模块40。

其中,监听模块用于利用文件系统的微过滤驱动在终端设备的驱动层监听是否接收到目标请求,其中,目标请求用于请求打开文件;第一判断模块用于在监听到目标请求的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为;第一逻辑模块用于在目标请求不是未知程序请求对磁盘读写的行为的情况下,允许执行目标请求;拦截模块用于在目标请求是未知程序请求对磁盘读写的行为的情况下,拦截目标请求。

可选的,第一判断模块包括:第一判断单元,用于判断文件对象的文件名是否为空;第二判断单元,用于判断设备对象是否存在;第三判断单元,用于判断设备对象的设备名是否符合预设正则表达式;第四判断单元,用于判断发起目标请求的进程是否符合预设进程的行为特征,其中,预设进程为允许执行磁盘读写行为的进程;逻辑单元,用于在确定判断结果满足以下条件的情况下,确定目标请求是未知程序请求对磁盘读写的行为:文件对象的文件名为空,且设备对象存在,且设备对象的设备名符合预设正则表达式,且发起目标请求的进程不符合预设进程的行为特征。

可选的,第四判断单元包括:回溯单元,用于在拦截目标请求之前,对发送目标请求的进程进行内核栈回溯,得到进程的栈信息;匹配单元,用于将栈信息与预设栈特征进行匹配;第五判断单元,用于判断是否匹配成功,其中,预设栈特征为预先收集的预设进程的栈特征。

可选的,预设栈特征为操作系统的目标进程请求磁盘读写的栈行为链。

可选的,预设栈特征为预设进程请求磁盘读写的栈行为链,匹配单元还用于,将栈信息分别与多个预设进程的栈行为链一一匹配,其中,在栈信息与任一栈行为链匹配成功的情况下,允许执行目标请求,在栈信息与多个栈行为链均匹配失败的情况下,拦截目标请求。

可选的,该装置还包括:获取模块,用于获取目标请求的请求内容信息;发送模块,用于将目标请求的请求内容信息发送至目标应用;第二判断模块,用于通过目标应用在应用层判断是否拦截目标请求。

可选的,第二判断模块包括:显示单元,用于在目标应用的界面中显示目标请求的请求内容信息;接收单元,用于通过目标应用的界面接收输入的选择操作;确定单元,用于根据选择操作确定是否拦截目标请求。

可选的,该装置还包括:第三判断模块,用于在利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为之前,利用微过滤驱动判断目标应用是否已开启目标防护功能,其中,在目标应用未开启目标防护功能的情况下,允许执行目标请求;在目标应用已开启目标防护功能的情况下,利用微过滤驱动根据请求的文件对象和文件对象对应的设备对象判断目标请求是否为未知程序请求对磁盘读写的行为。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

实施例4

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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