本发明涉及网络安全技术领域,尤其涉及一种基于内核模块的恶意软件拦截方法及装置。
背景技术:
linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix和unix的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
随着linux系统的广泛应用,越来越多的恶意软件针对linux系统的内核模块进行攻击,从而给linux系统的系统安全带来了极大的危害,现有技术采用如下手段进行处理:
1、扫描本地文件系统,检测恶意软件的特征文件,从而确认本地文件系统是否有被恶意软件入侵过。2、扫描当前系统上的所有进程,通过检测是否有隐藏进程,从而确认是否有恶意软件隐藏了进程。3、扫描当前系统上的端口,以检查是否有外连进程,从而检测出异常进程,进而确认是否存在恶意软件入侵。4、转储内存镜像,通过分析内存镜像,进而确认是否存在恶意软件入侵。
但上述几种技术方案都存在一定缺陷,即都是在恶意软件加载到内核模块之后,通过检测方式来确认是否存在恶意软件攻击;无法实现及时应对恶意软件攻击,且在检测存在恶意软件攻击后,还需要通过人工运维处理,从而消除恶意软件攻击带来的不利影响。
技术实现要素:
针对现有技术存在的问题,本发明实施例提供一种基于内核模块的恶意软件拦截方法及装置。
本发明实施例提供一种基于内核模块的恶意软件拦截方法,包括:
确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
其中,在所述确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果之前,所述基于内核模块的恶意软件拦截方法还包括:
利用系统钩子在检测到内核注入行为时,对所述内核模块信息进行预检测。
其中,所述对内核模块信息进行合法性检测,获得合法性检测结果,包括:
若确定所述内核模块信息中不存在所述反初始化函数,则确定所述合法性检测结果为不合法。
其中,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定所述内核模块信息中存在所述反初始化函数,则检测在内核链表中是否存在所述内核模块;
确定在内核链表中不存在所述内核模块,则确定所述合法性检测结果为不合法。
其中,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定在内核链表中存在所述内核模块,则检测导致触发内核模块加载通知的待检测软件是否在黑名单中;
确定待检测软件在所述黑名单中,则确定所述合法性检测结果为不合法。
其中,所述对内核模块信息进行合法性检测,还包括:
确定待检测软件不在所述黑名单中,则检测所述待检测软件是否在白名单中;
确定待检测软件不在所述白名单中,则调用用户态层继续对所述内核模块信息进行合法性检测。
其中,所述调用用户态层继续对所述内核模块信息进行合法性检测,包括:
调用所述用户态层中的、由用户维护的用户态黑名单,并检测所述待检测软件是否在所述用户态黑名单中;
确定待检测软件在所述用户态黑名单中,则确定所述合法性检测结果为不合法。
其中,所述恶意软件为rootkit。
本发明实施例提供一种基于内核模块的恶意软件拦截装置,包括:
检测单元,用于确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
拦截单元,用于确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,
所述处理器执行所述程序时实现如下方法步骤:
确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时实现如下方法步骤:
确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本发明实施例提供的基于内核模块的恶意软件拦截方法及装置,通过内核模块加载通知触发对内核模块信息进行合法性检测,且至少包括检测是否存在反初始化函数,若合法性检测结果为不合法,则确定存在恶意软件加载内核模块,能够实现及时拦截恶意软件,进而避免在内核模块被恶意软件加载后进行的事后检测及修复。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于内核模块的恶意软件拦截方法实施例流程图;
图2为本发明实现内核模块的恶意软件拦截方法另一实施例示意图;
图3为本发明基于内核模块的恶意软件拦截装置实施例结构示意图;
图4为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明基于内核模块的恶意软件拦截方法实施例流程图,如图1所示,本发明实施例提供的一种基于内核模块的恶意软件拦截方法,包括以下步骤:
s101:确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数。
具体的,确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数。执行该方法步骤的可以是计算机设备,具体可以是终端。需要说明的是,当产生内核注入行为时,就会触发内核模块加载通知,终端通过检测该内核模块加载通知,可以实现对内核注入行为的监测,此时,终端还无法进一步确定该内核模块加载通知是否是由于恶意软件加载内核模块导致的,因此,需要对内核模块信息进行合法性检测。
内核模块信息可以包括、但不限于如下信息:反初始化函数、内核链表、黑名单和白名单等,其中,黑名单可以是已记录的、确定为恶意软件的表单,白名单可以是已记录的、确定不为恶意软件的表单。合法性检测至少可以包括检测是否存在反初始化函数,还可以包括检测在内核链表中是否存在内核模块、检测导致触发内核模块加载通知的待检测软件是否在黑名单中等。
内核中的反初始化函数,示例如下:
linux对于可卸载的内核模块,必须具备反初始化函数,其声明类似如下:
对于待检测软件触发内核模块加载通知,说明如下:
linux对于任何想要加载到内核中的新模块,都会触发内核的模块加载通知,这个是内核自身具备的功能。
s102:确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
具体的,确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。即如果合法性检测结果为不合法,则确定存在恶意软件加载内核模块,需要拦截该恶意软件,从而使得恶意软件无法加载到内核模块中,从而保证linux系统的信息安全。如果合法性检测结果为合法,则确定不存在恶意软件加载内核模块,可以放行导致触发内核模块加载通知的待检测软件,即该待检测软件不是恶意软件,可以使其加载到内核模块中。本发明实施例对拦截恶意软件的具体拦截方式不作具体限定。
进一步地,该恶意软件可以为rootkit,rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较常见是:rootkit一般都和木马、后门等其他恶意程序结合使用。
linux下的rootkit通常具备以下几个特性:
1、在本地创建“类系统文件”,以便让用户误认为该文件是系统自身的文件。2、替换linux常用系统命令(ps,pstree,netstat,top,lsof)或者加载内核模块,从而隐藏自身进程、线程、通信端口和二进制程序等信息。
本发明实施例提供的基于内核模块的恶意软件拦截方法,通过内核模块加载通知触发对内核模块信息进行合法性检测,且至少包括检测是否存在反初始化函数,若合法性检测结果为不合法,则确定存在恶意软件加载内核模块,能够实现及时拦截恶意软件,进而避免在内核模块被恶意软件加载后进行的事后检测及修复。
在上述实施例的基础上,在所述确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果之前,所述基于内核模块的恶意软件拦截方法还包括:
具体的,利用系统钩子在检测到内核注入行为时,对所述内核模块信息进行预检测。
本发明实施例提供的基于内核模块的恶意软件拦截方法,能够全面地对内核模块信息进行检测,进而保证合法性检测的正常进行。
在上述实施例的基础上,所述对内核模块信息进行合法性检测,获得合法性检测结果,包括:
若确定所述内核模块信息中不存在所述反初始化函数,则确定所述合法性检测结果为不合法。
具体的,若确定所述内核模块信息中不存在所述反初始化函数,则确定所述合法性检测结果为不合法。即如果内核模块信息不存在反初始化函数,则直接确定合法性检测结果为不合法。对反初始化进行如下说明:
swift里面有自动内存管理机制(arc),当实例被销毁的时候,可以自动清理内存。但是,有时候用户需要手动释放内存,想要在内存释放之前做一些操作,如:当用户自定义的类的一个实例打开一个文件写入数据的时候,需要在这个实例销毁(deallocated)之前将文件关闭,这时候就需要反初始化(deinitialization)。与初始化不同,每个类最多有一个反初始化方法。反初始化函数可以理解为实现反初始化的函数。
如果存在该反初始化函数,则还不能直接确定合法性检测结果,需要后续步骤进行进一步判断。即当恶意软件加载内核模块时,通常会存在删除反初始化函数的行为,且判断反初始化函数是否存在,无需遍历大量数据,因此,首先基于反初始化函数进行合法性检测,可以优化该方法执行过程,减少遍历大量数据过程中的资源开销。
对于如何确定是否存在反初始化函数:
本发明实施例在检测到内核模块的加载操作后,会主动获取该内核模块相关的二进制文件,并对该文件做解析,通过检测该二进制文件的函数列表,来确定该模块是否存在反初始化函数。
本发明实施例提供的基于内核模块的恶意软件拦截方法,通过先基于反初始化函数进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定所述内核模块信息中存在所述反初始化函数,则检测在内核链表中是否存在所述内核模块。
具体的,若确定所述内核模块信息中存在所述反初始化函数,则检测在内核链表中是否存在所述内核模块。对内核链表进行如下说明:
普通的链表是将next指针定义成为与该结构体一样的类型,这样做通用性不好。与普通的链表的定义和使用方式不一样,内核链表定义成为了一种通用的结构。在内核链表中,仅仅定义了next和prev指针,用于寻找链表中的下一个节点和前一个节点(双向链表)。通常内核使用双向循环链表来表示相关的数据。
确定在内核链表中不存在所述内核模块,则确定所述合法性检测结果为不合法。
具体的,确定在内核链表中不存在所述内核模块,则确定所述合法性检测结果为不合法。即当恶意软件加载内核模块时,也会存在删除内核链表中内核模块的行为,且判断内核链表中是否存在内核模块,需要遍历该内核链表中的数据,遍历数据量多于反初始化函数的数据量,因此,可以在基于反初始化函数进行合法性检测之后,再基于内核链表进行合法性检测,可以优化该方法执行过程,减少遍历大量数据过程中的资源开销。
如果存在该内核模块,则还不能确定合法性检测结果,需要后续步骤进行进一步判断。
本发明实施例提供的基于内核模块的恶意软件拦截方法,通过再基于内核链表进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定在内核链表中存在所述内核模块,则检测导致触发内核模块加载通知的待检测软件是否在黑名单中。
具体的,若确定在内核链表中存在所述内核模块,则检测导致触发内核模块加载通知的待检测软件是否在黑名单中。黑名单可参照上述说明,不再赘述。
确定待检测软件在所述黑名单中,则确定所述合法性检测结果为不合法。
具体的,确定待检测软件在所述黑名单中,则确定所述合法性检测结果为不合法。即如果在黑名单中,则说明该待检测软件为恶意软件;如果不在黑名单中,则还不能说明该待检测软件为恶意软件,需要后续步骤进行进一步判断。通常在黑名单中需要不断增加恶意软件,导致黑名单的数据量较大,因此,可以将该步骤在基于内核链表进行合法性检测之后执行,可以优化该方法执行过程,尽量减少资源开销。
如果不在所述黑名单中,则还不能确定合法性检测结果,需要后续步骤进行进一步判断。
本发明实施例提供的基于内核模块的恶意软件拦截方法,通过再基于黑名单进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
确定待检测软件不在所述黑名单中,则检测所述待检测软件是否在白名单中。
具体的,确定待检测软件不在所述黑名单中,则检测所述待检测软件是否在白名单中。白名单可参照上述说明,不再赘述。
确定待检测软件不在所述白名单中,则调用用户态层继续对所述内核模块信息进行合法性检测。
具体的,确定待检测软件不在所述白名单中,则调用用户态层继续对所述内核模块信息进行合法性检测。可以采用报文的方式(采用linux下常用的netlink通信机制)调用用户态层。图2为本发明实现内核模块的恶意软件拦截方法另一实施例示意图,如图2所示,为了更好地实施本发明实施例,可以采用模块化的设计方式,调用用户态层之前的上述步骤可以在内核层(对应图2中的kernel)的内核检测拦截模块中实现。调用用户态层之后的步骤可以在用户层(对应图2中的user)的用户态检测及告警模块中实现。相应的,内核层可以将内核模块信息上报给用户态层,由用户态层继续进行合法性检测。
需要说明的是,在上述确定不合法的合法性检测结果之后,也可以将该合法性检测结果告知用户态层。
如果在白名单中,则说明待检测软件不为恶意软件,合法性检测结果为合法。
本发明实施例在内核中无法确定相应待加载的内核模块是否合法时,会以报文的方式(采用linux下常用的netlink通信机制)来将模块信息传给用户态,并等待用户态返回检测结果。
本发明实施例提供的基于内核模块的恶意软件拦截方法,通过调用用户态层继续对内核模块信息进行合法性检测,不仅能够实现及时拦截恶意软件,还保证了全面和准确地拦截恶意软件。
在上述实施例的基础上,所述调用用户态层继续对所述内核模块信息进行合法性检测,包括:
调用所述用户态层中的、由用户维护的用户态黑名单,并检测所述待检测软件是否在所述用户态黑名单中。
具体的,调用所述用户态层中的、由用户维护的用户态黑名单,并检测所述待检测软件是否在所述用户态黑名单中。由于,用户态黑名单由用户维护,因此,其中的恶意软件名单会比上述黑名单要全面,进而可以出现恶意软件不在上述黑名单、但是在该用户态黑名单中的情况。
确定待检测软件在所述用户态黑名单中,则确定所述合法性检测结果为不合法。
具体的,确定待检测软件在所述用户态黑名单中,则确定所述合法性检测结果为不合法。可以将不合法的合法性检测结果告知内核层,由内核层对该恶意软件进行拦截。如果不在用户态黑名单中,则确定合法性检测结果为合法。
本发明实施例提供的基于内核模块的恶意软件拦截方法,进一步保证了全面和准确地拦截恶意软件。
在上述实施例的基础上,所述恶意软件为rootkit。可参照上述说明,不再赘述。
还可以对本发明实施例进行如下测试步骤:
1.在需要防护的linux主机上部署本发明实施例的软件程序及内核模块。
2.在另外一台机器上部署告警接收服务。
3.在该主机上加载带有内核注入的rootkit以模拟攻击。
4.在上述另外一台机器上查看是否有告警信息。
本发明实施例具有如下优点:
1.准确率高
本发明实施例结合用户层检测与内核层检测等多种机制,并基于行为对rootkit注入进行检测,准确率高。
2.响应及时
本发明实施例采用的内核检测拦截机制,可以在rootkit内核注入时直接进行检测拦截,避免了事后检测带来的响应不及时问题。
3.稳定性好
本发明实施例采用的检测与拦截技术全部采用的是公开且可靠的接口,没有采用任何入侵式的拦截防护技术,稳定性好。
本发明实施例提供的基于内核模块的恶意软件拦截方法,能够实现及时拦截rootkit,进而避免在内核模块被rootkit加载后进行的事后检测及修复。
图3为本发明基于内核模块的恶意软件拦截装置实施例结构示意图,如图3所示,本发明实施例提供了一种基于内核模块的恶意软件拦截装置,包括检测单元301和拦截单元302,其中:
检测单元301用于确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;拦截单元302用于确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
具体的,检测单元301用于确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;拦截单元302用于确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本发明实施例提供的基于内核模块的恶意软件拦截装置,通过内核模块加载通知触发对内核模块信息进行合法性检测,且至少包括检测是否存在反初始化函数,若合法性检测结果为不合法,则确定存在恶意软件加载内核模块,能够实现及时拦截恶意软件,进而避免在内核模块被恶意软件加载后进行的事后检测及修复。
在上述实施例的基础上,在所述确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果之前,所述基于内核模块的恶意软件拦截装置还用于:
利用系统钩子在检测到内核注入行为时,对所述内核模块信息进行预检测。
本发明实施例提供的基于内核模块的恶意软件拦截装置,能够全面地对内核模块信息进行检测,进而保证合法性检测的正常进行。
在上述实施例的基础上,所述检测单元301具体用于:若确定所述内核模块信息中不存在所述反初始化函数,则确定所述合法性检测结果为不合法。
本发明实施例提供的基于内核模块的恶意软件拦截装置,通过先基于反初始化函数进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述检测单元301还具体用于:若确定所述内核模块信息中存在所述反初始化函数,则检测在内核链表中是否存在所述内核模块;确定在内核链表中不存在所述内核模块,则确定所述合法性检测结果为不合法。
本发明实施例提供的基于内核模块的恶意软件拦截装置,通过再基于内核链表进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述检测单元301还具体用于:若确定在内核链表中存在所述内核模块,则检测导致触发内核模块加载通知的待检测软件是否在黑名单中;确定待检测软件在所述黑名单中,则确定所述合法性检测结果为不合法。
本发明实施例提供的基于内核模块的恶意软件拦截装置,通过再基于黑名单进行合法性检测,不仅能够实现及时拦截恶意软件,还节省了执行技术方案过程中的资源开销。
在上述实施例的基础上,所述检测单元301还具体用于:确定待检测软件不在所述黑名单中,则检测所述待检测软件是否在白名单中;确定待检测软件不在所述白名单中,则调用用户态层继续对所述内核模块信息进行合法性检测。
本发明实施例提供的基于内核模块的恶意软件拦截装置,通过调用用户态层继续对内核模块信息进行合法性检测,不仅能够实现及时拦截恶意软件,还保证了全面和准确地拦截恶意软件。
在上述实施例的基础上,所述检测单元301还具体用于:调用所述用户态层中的、由用户维护的用户态黑名单,并检测所述待检测软件是否在所述用户态黑名单中;确定待检测软件在所述用户态黑名单中,则确定所述合法性检测结果为不合法。
本发明实施例提供的基于内核模块的恶意软件拦截装置,进一步保证了全面和准确地拦截恶意软件。
在上述实施例的基础上,所述恶意软件为rootkit。
本发明实施例提供的基于内核模块的恶意软件拦截装置,能够实现及时拦截rootkit,进而避免在内核模块被rootkit加载后进行的事后检测及修复。
本发明实施例提供的基于内核模块的恶意软件拦截装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图4为本发明实施例提供的电子设备实体结构示意图,如图4所示,所述电子设备包括:处理器(processor)401、存储器(memory)402和总线403;
其中,所述处理器401、存储器402通过总线403完成相互间的通信;
所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种基于内核模块的恶意软件拦截方法,其特征在于,包括:
确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
2.根据权利要求1所述的基于内核模块的恶意软件拦截方法,其特征在于,在所述确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果之前,所述基于内核模块的恶意软件拦截方法还包括:
利用系统钩子在检测到内核注入行为时,对所述内核模块信息进行预检测。
3.根据权利要求1所述的基于内核模块的恶意软件拦截方法,其特征在于,所述对内核模块信息进行合法性检测,获得合法性检测结果,包括:
若确定所述内核模块信息中不存在所述反初始化函数,则确定所述合法性检测结果为不合法。
4.根据权利要求3所述的基于内核模块的恶意软件拦截方法,其特征在于,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定所述内核模块信息中存在所述反初始化函数,则检测在内核链表中是否存在所述内核模块信息对应的内核模块;
确定在内核链表中不存在所述内核模块,则确定所述合法性检测结果为不合法。
5.根据权利要求4所述的基于内核模块的恶意软件拦截方法,其特征在于,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
若确定在内核链表中存在所述内核模块,则检测导致触发内核模块加载通知的待检测软件是否在黑名单中;
确定待检测软件在所述黑名单中,则确定所述合法性检测结果为不合法。
6.根据权利要求5所述的基于内核模块的恶意软件拦截方法,其特征在于,所述对内核模块信息进行合法性检测,获得合法性检测结果,还包括:
确定待检测软件不在所述黑名单中,则检测所述待检测软件是否在白名单中;
确定待检测软件不在所述白名单中,则调用用户态层继续对所述内核模块信息进行合法性检测。
7.根据权利要求6所述的基于内核模块的恶意软件拦截方法,其特征在于,所述调用用户态层继续对所述内核模块信息进行合法性检测,包括:
调用所述用户态层中的、由用户维护的用户态黑名单,并检测所述待检测软件是否在所述用户态黑名单中;
确定待检测软件在所述用户态黑名单中,则确定所述合法性检测结果为不合法。
8.根据权利要求1至7任一所述的基于内核模块的恶意软件拦截方法,其特征在于,所述恶意软件为rootkit。
9.一种基于内核模块的恶意软件拦截装置,其特征在于,包括:
检测单元,用于确定检测到内核模块加载通知,对内核模块信息进行合法性检测,获得合法性检测结果;所述合法性检测至少包括检测是否存在反初始化函数;
拦截单元,用于确定合法性检测结果为不合法,则确定存在恶意软件加载内核模块,并拦截所述恶意软件。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述方法的步骤。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时实现如权利要求1至8任一项所述方法的步骤。
技术总结