终端系统漏洞扫描方法及装置与流程

文档序号:13073006阅读:307来源:国知局
终端系统漏洞扫描方法及装置与流程

本发明涉及系统安全技术领域,具体涉及一种终端系统漏洞扫描方法及装置。



背景技术:

终端设备的系统中包括了用于支撑系统运行的系统层和安装在系统层之上的多个第三方应用的应用层。不同的应用或系统可能由不同的厂商提供。由于厂商维护系统或第三方应用的周期长短不固定、维护需要再投入时间、成本等问题,可能导致现行使用的系统或第三方应用存在漏洞没有及时打上补丁进行修复或没有更新版本解决现有版本漏洞等问题。这样使得终端设备在一段时间内存在不安全的隐患,对终端设备用户的信息安全造成不良影响。

因此,需要一种可以对终端系统安全程度进行量化,对终端系统存在的漏洞进行扫描的方法及装置。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的终端系统漏洞扫描方法及装置。

根据本发明的一个方面,提供了一种终端系统漏洞扫描方法,其包括:

获取漏洞扫描所需的上下文信息;

根据上下文信息,初始化漏洞扫描所需的环境及文件;

启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成;

将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

根据本发明的另一方面,提供了一种终端系统漏洞扫描装置,其包括:

获取模块,适于获取漏洞扫描所需的上下文信息;

初始化模块,适于根据上下文信息,初始化漏洞扫描所需的环境及文件;

扫描模块,适于启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成;

结果汇总模块,适于将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

根据本发明提供的终端系统漏洞扫描方法及装置,获取到漏洞扫描所需的上下文信息,并根据上下文信息,初始化漏洞扫描所需的环境及文件。启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。将所有漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。其中,仅根据不同漏洞扫描对应的扫描要求、逻辑等获取对应的上下文信息,无需申请获取任何特殊的权限如root权限等和特殊资源,就可以实现对终端系统漏洞的扫描。根据不同漏洞获取的上下文信息,初始化得到漏洞扫描的所需的环境及文件后,启动漏洞扫描进程。完成对终端系统所有漏洞的扫描,并将漏洞扫描获取的结果汇总,得到漏洞扫描结果信息,从而了解终端系统当前的安全程度。进一步,也可以提醒终端系统用户当前终端系统存在的漏洞,便于终端系统用户对相应的漏洞打上补丁等。

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

附图说明

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

图1示出了根据本发明一个实施例的终端系统漏洞扫描方法的流程图;

图2示出了根据本发明另一个实施例的终端系统漏洞扫描方法的流程图;

图3示出了根据本发明一个实施例的终端系统漏洞扫描装置的功能框图;

图4示出了根据本发明另一个实施例的终端系统漏洞扫描装置的功能框图。

具体实施方式

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

图1示出了根据本发明一个实施例的终端系统漏洞扫描方法的流程图。如图1所示,终端系统漏洞扫描方法具体包括如下步骤:

步骤s101,获取漏洞扫描所需的上下文信息。

终端系统中存在的漏洞可能多种多样,每个漏洞在扫描时需要对应不同的扫描逻辑或扫描处理方式。根据不同漏洞的扫描逻辑或扫描处理方式,去获取漏洞扫描所需的上下文信息。其中,由于漏洞的不同,获取的上下文信息可能包括不同级别的上下文信息。获取时可以一次性获取到不同级别的上下文信息。

终端系统如安卓系统中的上下文信息即context。context描述了终端系统环境的信息,包括安卓系统中的应用在运行时所需要的环境如安卓系统给进程的分配资源、动态库、调用资源等。通过context还可以获取到具体的应用操作等。

步骤s102,根据上下文信息,初始化漏洞扫描所需的环境及文件。

根据获取的上下文信息,可以初始化得到漏洞扫描所需的环境及文件。初始化时,需要结合上下文信息及各个漏洞扫描处理方式,将不同漏洞扫描所需的进程分配资源、动态库、资源文件等释放至漏洞扫描所需的位置,以便漏洞扫描时使用。

步骤s103,启动漏洞扫描进程。

步骤s104,对终端系统进行漏洞扫描。

建立一个新的进程,该新的进程为漏洞扫描进程。启动该漏洞扫描进程,由该漏洞扫描进程执行对终端系统的漏洞扫描。对终端系统进行漏洞扫描,可以预先设置一个或多个漏洞扫描用例。在漏洞扫描进程中执行预先设置的漏洞扫描用例,依次扫描终端系统中对应的漏洞是否存在或是否已被修补。

步骤s105,判断终端系统所有漏洞是否扫描完成,若是,则执行步骤s106;否则执行步骤s104。

若对终端系统进行漏洞扫描时,漏洞扫描进程需要执行多个漏洞扫描用例,判断终端系统所有漏洞是否扫描完成即在每执行完一个漏洞扫描用例后,判断是否已经执行完所有的漏洞扫描用例。若判断终端系统所有漏洞扫描完成,执行步骤s106,否则,继续执行步骤s104,对终端系统进行漏洞扫描。

步骤s106,将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

将对终端系统漏洞扫描获取的结果如xx处存在xx漏洞、xx漏洞已被修复等扫描结果进行汇总,得到本次漏洞扫描结果信息。将漏洞扫描结果信息显示给用户,以提醒用户根据漏洞扫描结果信息进行相应的漏洞修复。

需要说明的是,在执行以上各步骤时,不需要专门申请任何特殊权限、获取任何特殊资源。使用普通用户权限获取普通用户权限下可以获取的资源进行漏洞扫描即可。

根据本发明提供的终端系统漏洞扫描方法,获取到漏洞扫描所需的上下文信息,并根据上下文信息,初始化漏洞扫描所需的环境及文件。启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。将所有漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。其中,仅根据不同漏洞扫描对应的扫描要求、逻辑等获取对应的上下文信息,无需申请获取任何特殊的权限如root权限等和特殊资源,就可以实现对终端系统漏洞的扫描。根据不同漏洞获取的上下文信息,初始化得到漏洞扫描的所需的环境及文件后,启动漏洞扫描进程。完成对终端系统所有漏洞的扫描,并将漏洞扫描获取的结果汇总,得到漏洞扫描结果信息,从而了解终端系统当前的安全程度。进一步,也可以提醒终端系统用户当前终端系统存在的漏洞,便于终端系统用户对相应的漏洞打上补丁等。

图2示出了根据本发明另一个实施例的终端系统漏洞扫描方法的流程图。如图2所示,终端系统漏洞扫描方法具体包括如下步骤:

步骤s201,获取漏洞扫描所需的上下文信息。

根据漏洞扫描的逻辑或扫描处理的方式,获取到其所需的上下文信息。上下文信息中描述了各种资源信息。

步骤s202,根据上下文信息,初始化漏洞扫描所需的环境及文件。

根据上下文信息,可以初始化得到具体的支持漏洞扫描运行时环境所需的资源、动态库及资源文件等信息,并将其释放至漏洞扫描所需的位置,以便漏洞扫描时使用。

步骤s203,获取被扫描设备的设备信息。

由于不同的被扫描设备使用的系统应用的版本、系统应用的内核、处理器架构等存在不同,在漏洞扫描时,漏洞扫描的处理逻辑由于以上种种不同,也会使得在处理时略有不同。因此,需要根据被扫描设备的具体设备信息,对被扫描设备进行漏洞扫描。

步骤s204,启动漏洞扫描进程,并监听漏洞扫描进程。

建立一个新的进程,该新的进程为漏洞扫描进程。启动该漏洞扫描进程,由该漏洞扫描进程执行对终端系统的漏洞扫描。同时,漏洞扫描进程在漏洞扫描时,会涉及大量的指针及内存操作。这些操作可能会导致有异常情况发生,如系统内存溢出、空指针等情况。如果不对这些异常情况进行处理,一方面可能会使得漏洞扫描进程无法继续执行,另一方面当出现异常时,被扫描设备可能会相应的弹出异常信息,如“应用停止运行”等对话框,对普通用户而言,不知道该如何处理弹出的异常信息,使得整个过程使用体验不佳。因此,在启动漏洞扫描进程的同时,对漏洞扫描进程进行监听,以便处理漏洞扫描进程执行时可能产生的异常信息。

步骤s205,结合被扫描设备的设备信息,对终端系统进行漏洞扫描。

结合之前获取到的被扫描设备的设备信息,对终端系统进行漏洞扫描。扫描时,可以预先设置一个或多个漏洞扫描用例。在漏洞扫描进程中执行预先设置的漏洞扫描用例,依次扫描终端系统中对应的漏洞是否存在或是否已被修补。

具体的,由于终端系统的各层架构及各个应用的权限不同等特性,使得位于不同架构层面的应用中的漏洞会有不同的类型和特征。终端系统的系统层用于支撑整个终端系统的运行,大多采用如c语言进行编写。终端系统的应用层包括了多个安装在终端系统的系统层之上的第三方应用,大多采用java语言进行编写。因此,扫描时,对终端系统的应用层和系统层分别进行漏洞扫描。各层的漏洞扫描处理逻辑、扫描方式存在不同。漏洞扫描时可以对终端系统的系统层和终端系统的应用层一起进行扫描,也可以先扫描其中任何一层,具体扫描顺序不做限定。

对终端系统的应用层进行漏洞扫描时,在不获取任何特殊权限如root权限的前提下,第三方应用中有些代码或组件无法被访问,对漏洞扫描进程而言是不可见的,即不能与第三方应用中的代码或组件进行数据交互。因此,针对不同的情况,在对终端系统的应用层进行漏洞扫描时,使用如下两种方式进行扫描:

对于第三方应用中可见的代码或组件,即可以进行数据交互的代码或组件,在扫描其可能存在的漏洞时,可以利用漏洞本身已知的原理,根据漏洞本身已知的原理对其进行无害验证。还可以编写漏洞验证代码(proofofconcept,poc),执行漏洞验证代码进行无害验证,扫描漏洞是否存在。或者编写漏洞利用代码(exploit)对漏洞进行攻击,扫描漏洞是否存在。以上三种方式都可以对第三方应用的可见代码或组件进行无害验证,根据无害验证的结果,从而获取到对应的漏洞扫描结果。执行无害验证时即触发第三方应用中可能存在的漏洞,但不会导致被扫描设备的终端系统或第三方应用崩溃、重启、宕机等现象,也不影响普通用户对被扫描设备的正常使用。若漏洞存在,执行无害验证会相应的返回漏洞存在的结果,反之,返回漏洞不存在的结果。

对于第三方应用中不可见的代码或组件,即不可以进行数据交互的代码或组件,无法访问其具体的代码或组件。在扫描其可能存在的漏洞时,根据已知的其可能存在的漏洞和漏洞对应的补丁信息,来得到漏洞扫描结果。由于补丁信息是可见的,若扫描到第三方应用已经打过补丁,即补丁对应的漏洞已经被修复,不存在漏洞。若没有扫描到第三方应用中存在补丁,即补丁对应的漏洞还没有被修复,存在漏洞。在扫描补丁信息时,根据补丁信息中的存在的特征值,与第三方应用中的补丁信息进行静态匹配。补丁的特征值包括如特征字符串、特征函数、特征成员变量、特征汇编指令等,通过扫描第三方应用的补丁信息中是否存在以上特征值,确定第三方应用中是否存在漏洞。若扫描第三方应用中存在补丁信息的特征值,即扫描到第三方应用已经打过补丁,不存在漏洞;反之,扫描到第三方应用中存在漏洞。需要注意的是,此处扫描的为第三方应用中的补丁信息,而没有扫描第三方应用中不可见的代码或组件。

对终端系统的系统层进行漏洞扫描时,可以利用漏洞本身已知的原理,根据漏洞本身已知的原理对其进行无害验证。还可以编写漏洞验证代码(proofofconcept,poc),执行漏洞验证代码进行无害验证,扫描漏洞是否存在。或者编写漏洞利用代码(exploit)对漏洞进行攻击,扫描漏洞是否存在。以上三种方式都可以对终端系统的系统层进行无害验证,根据无害验证的结果,从而获取到对应的漏洞扫描结果。

对终端系统的系统层进行漏洞扫描时,还可以根据已知的其可能存在的漏洞和漏洞对应的补丁信息,来得到漏洞扫描结果。由于补丁信息是可见的,若扫描到终端系统的系统层已经打过补丁,即补丁对应的漏洞已经被修复,不存在漏洞。若没有扫描到终端系统的系统层中存在补丁,即补丁对应的漏洞还没有被修复,存在漏洞。在扫描补丁信息时,根据补丁信息中的存在的特征值,与终端系统的系统层中的补丁信息进行静态匹配。补丁的特征值包括如特征字符串、特征函数、特征成员变量、特征汇编指令等,通过扫描终端系统的系统层的补丁信息中是否存在以上特征值,确定终端系统的系统层中是否存在漏洞。若扫描终端系统的系统层中存在补丁信息的特征值,即扫描到终端系统的系统层已经打过补丁,不存在漏洞;反之,扫描到终端系统的系统层中存在漏洞。需要注意的是,此处扫描的为终端系统的系统层中的补丁信息,而没有扫描终端系统的系统层中具体的代码或组件。

除以上两种扫描终端系统的系统层的方式外,还可以根据已知的漏洞对应的补丁信息,进行扫描。漏洞的补丁信息一般包括漏洞存在的问题及补丁修复后解决的问题。因此,根据漏洞的补丁信息,可以查找到该漏洞具体对应的系统层中的具体函数。在漏洞扫描进程中创建一个子进程,由该子进程来动态执行该函数,并获取对应的执行结果。若终端系统的系统层中已经打过该漏洞对应的补丁,则执行结果应当返回正确的执行结果,不会再返回漏洞存在的问题如越界、空指针等。若终端系统的系统层中没有打过该漏洞对应的补丁,则执行结果应当返回漏洞存在问题的结果。从而,根据执行结果得到相应的漏洞扫描结果。

步骤s206,判断获取漏洞扫描进程的异常信息是否为可逆异常信息,若是,则执行步骤s207;否则,执行步骤s208。

实时对漏洞扫描进程进行监听时,若获取到漏洞扫描进程的异常信息,进一步去判断异常信息是否为可逆异常信息。可逆异常信息即异常信息不影响漏洞扫描进程继续执行的异常信息,如终端系统应用层执行漏洞验证代码进行无害验证出现的异常信息,不影响漏洞扫描进程继续执行。判断异常信息为可逆异常信息时,捕获该可逆异常信息,可以忽略该可逆异常信息,不对其进行处理。继续执行后续步骤。若该已经执行完一个漏洞扫描测试用例,继续执行步骤s207,若没有执行完该漏洞扫描测试用例,可以继续执行该漏洞扫描测试用例,继续执行步骤s205(图中未示出)。

判断异常信息不是可逆异常信息时,即该异常信息可能导致直接退出整个漏洞扫描过程,此时,捕获该异常信息,对其进行处理,不在继续进行漏洞扫描。直接跳转至步骤s208。

步骤s207,判断终端系统所有漏洞是否扫描完成,若是,则执行步骤s208;否则,执行步骤s205。

若对终端系统进行漏洞扫描时,漏洞扫描进程需要执行多个漏洞扫描用例,判断终端系统所有漏洞是否扫描完成即在每执行完一个漏洞扫描用例后,判断是否已经执行完所有的漏洞扫描用例。若判断终端系统所有漏洞扫描完成,执行步骤s208,否则,继续执行步骤s205,对终端系统进行漏洞扫描。

步骤s208,将被扫描设备的设备信息与漏洞扫描获取的结果进行汇总,得到被扫描设备的漏洞扫描结果信息。

将对终端系统漏洞扫描获取的结果如xx处存在xx漏洞、xx漏洞已被修复等扫描结果进行汇总,并结合被扫描设备的设备信息,得到本次漏洞扫描结果信息。如设备xx,使用的系统版本为xx,其中,xx处存在xx漏洞、xx漏洞已被修复等。将漏洞扫描结果信息显示给用户,以提醒用户根据漏洞扫描结果信息进行相应的漏洞修复。

根据本发明提供的终端系统漏洞扫描方法,根据被扫描设备的设备信息,针对性的完成终端设备的应用层、系统层的漏洞扫描。在漏洞扫描时,根据终端设备的应用层、系统层的不同类型、权限、特征等各个方法,使用不同的漏洞扫描处理方式、处理逻辑来完成。对于第三方应用中不可见的代码或组件,通过对补丁信息的特征值进行静态匹配来验证漏洞是否存在,而不需要去申请任何特殊的权限或资源。同时,监听漏洞扫描进程,对漏洞扫描过程中可能出现的异常情况进行处理,将异常情况对普通用户屏蔽,提升用户体验效果。

图3示出了根据本发明一个实施例的终端系统漏洞扫描装置的功能框图。如图3所示,终端系统漏洞扫描装置包括如下模块:

获取模块310,适于获取漏洞扫描所需的上下文信息。

终端系统中存在的漏洞可能多种多样,每个漏洞在扫描时需要对应不同的扫描逻辑或扫描处理方式。获取模块310根据不同漏洞的扫描逻辑或扫描处理方式,去获取漏洞扫描所需的上下文信息。其中,由于漏洞的不同,获取模块310获取的上下文信息可能包括不同级别的上下文信息。获取模块310获取时可以一次性获取到不同级别的上下文信息。

终端系统如安卓系统中的上下文信息即context。context描述了终端系统环境的信息,包括安卓系统中的应用在运行时所需要的环境如安卓系统给进程的分配资源、动态库、调用资源等。获取模块310通过context还可以获取到具体的应用操作等。

初始化模块320,适于根据上下文信息,初始化漏洞扫描所需的环境及文件。

初始化模块320根据获取模块310获取的上下文信息,可以初始化得到漏洞扫描所需的环境及文件。初始化模块320初始化时,需要结合上下文信息及各个漏洞扫描处理方式,将不同漏洞扫描所需的进程分配资源、动态库、资源文件等释放至漏洞扫描所需的位置,以便漏洞扫描时使用。

扫描模块330,适于启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。

扫描模块330建立一个新的进程,该新的进程为漏洞扫描进程。扫描模块330启动该漏洞扫描进程,由该漏洞扫描进程执行对终端系统的漏洞扫描。扫描模块330在对终端系统进行漏洞扫描时,可以预先设置一个或多个漏洞扫描用例。扫描模块330在漏洞扫描进程中执行预先设置的漏洞扫描用例,依次扫描终端系统中对应的漏洞是否存在或是否已被修补,直至终端系统所有漏洞扫描完成。

结果汇总模块340,适于将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

结果汇总模块340将对终端系统漏洞扫描获取的结果如xx处存在xx漏洞、xx漏洞已被修复等扫描结果进行汇总,得到本次漏洞扫描结果信息。结果汇总模块340还可以将漏洞扫描结果信息显示给用户,以提醒用户根据漏洞扫描结果信息进行相应的漏洞修复。

需要说明的是,在执行以上各模块时,不需要专门申请任何特殊权限、获取任何特殊资源。使用普通用户权限获取普通用户权限下可以获取的资源进行漏洞扫描即可。

根据本发明提供的终端系统漏洞扫描装置,获取到漏洞扫描所需的上下文信息,并根据上下文信息,初始化漏洞扫描所需的环境及文件。启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。将所有漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。其中,仅根据不同漏洞扫描对应的扫描要求、逻辑等获取对应的上下文信息,无需申请获取任何特殊的权限如root权限等和特殊资源,就可以实现对终端系统漏洞的扫描。根据不同漏洞获取的上下文信息,初始化得到漏洞扫描的所需的环境及文件后,启动漏洞扫描进程。完成对终端系统所有漏洞的扫描,并将漏洞扫描获取的结果汇总,得到漏洞扫描结果信息。从而了解终端系统当前的安全程度,进一步,也可以提醒终端系统用户当前终端系统存在的漏洞,便于终端系统用户对相应的漏洞打上补丁等。

图4示出了根据本发明另一个实施例的终端系统漏洞扫描装置的流程图。如图4所示,与图3相比,终端系统漏洞扫描装置还包括如下模块:

监听模块350,适于监听漏洞扫描进程,获取漏洞扫描进程的异常信息。

扫描模块330扫描时,由于启动的漏洞扫描进程会涉及大量的指针及内存操作。这些操作可能会导致有异常情况发生,如系统内存溢出、空指针等情况。如果不对这些异常情况进行处理,一方面可能会使得漏洞扫描进程无法继续执行,另一方面当出现异常时,被扫描设备可能会相应的弹出异常信息,如“应用停止运行”等对话框,对普通用户而言,不知道该如何处理弹出的异常信息,使得整个过程使用体验不佳。因此,在扫描模块330启动漏洞扫描进程的同时,监听模块350对漏洞扫描进程进行监听,以便处理漏洞扫描进程执行时可能产生的异常信息。

异常处理模块360,适于若异常信息为可逆异常信息,继续执行漏洞扫描进程;否则,停止执行漏洞扫描进程。

监听模块350实时对漏洞扫描进程进行监听,若获取到漏洞扫描进程的异常信息时,异常处理模块360进一步去判断异常信息是否为可逆异常信息。可逆异常信息即异常信息不影响漏洞扫描进程继续执行的异常信息,如终端系统应用层执行漏洞验证代码进行无害验证出现的异常信息,不影响漏洞扫描进程继续执行。异常处理模块360判断异常信息为可逆异常信息时,捕获该可逆异常信息,可以忽略该可逆异常信息,不对其进行处理。继续运行扫描模块330。若该扫描模块330运行完毕,则运行结果汇总模块340。

当异常处理模块360判断异常信息不是可逆异常信息时,即该异常信息可能导致直接退出整个漏洞扫描过程,此时,异常处理模块360捕获该异常信息,对其进行处理,不在继续进行运行扫描模块330,直接跳转运行结果汇总模块340。

进一步,由于不同的被扫描设备使用的系统应用的版本、系统应用的内核、处理器架构等存在不同,在扫描模块330扫描漏洞时,漏洞扫描的处理逻辑由于以上种种不同,也会使得在处理时略有不同。因此,本装置还包括了设备获取模块370。设备获取模块370获取被扫描设备的设备信息。如系统应用的版本、系统应用的内核、处理器架构信息等。扫描模块330结合被扫描设备的设备信息,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。结果汇总模块340将被扫描设备的设备信息与漏洞扫描获取的结果进行汇总,得到被扫描设备的漏洞扫描结果信息。

由于终端系统的各层架构及各个应用的权限不同等特性,使得位于不同架构层面的应用中的漏洞会有不同的类型和特征。终端系统的系统层用于支撑整个终端系统的运行,大多采用如c语言进行编写。终端系统的应用层包括了多个安装在终端系统的系统层之上的第三方应用,大多采用java语言进行编写。因此,扫描模块330具体的包括了应用层扫描模块331和系统层扫描模块332。应用层扫描模块331对终端系统的应用层进行漏洞扫描,系统层扫描模块332对终端系统的系统层进行漏洞扫描。各模块的漏洞扫描处理逻辑、扫描方式不同。扫描模块330可以同时执行应用层扫描模块331和系统层扫描模块332,也可以先运行其中任一模块,具体扫描执行顺序不做限定。

应用层扫描模块331包括了应用层验证模块3311和应用层匹配模块3312。对终端系统的应用层进行漏洞扫描时,在不获取任何特殊权限如root权限的前提下,应用层的第三方应用中有些代码或组件无法被访问,对漏洞扫描进程而言是不可见的,即应用层扫描模块331不能与第三方应用中的代码或组件进行数据交互。因此,应用层扫描模块331在对终端系统的应用层进行漏洞扫描时,使用应用层验证模块3311和应用层匹配模块3312分别进行扫描:

对于第三方应用中可见的代码或组件,即可以进行数据交互的代码或组件,在扫描其可能存在的漏洞时,应用层验证模块3311利用漏洞本身已知的原理,根据漏洞本身已知的原理对其进行无害验证。应用层验证模块3311还可以编写漏洞验证代码(proofofconcept,poc),执行漏洞验证代码进行无害验证,扫描漏洞是否存在。或者应用层验证模块3311编写漏洞利用代码(exploit)对漏洞进行攻击,扫描漏洞是否存在。应用层验证模块3311可以使用以上三种方式对第三方应用的可见代码或组件进行无害验证,根据无害验证的结果,从而获取到对应的漏洞扫描结果。应用层验证模块3311执行无害验证时即触发第三方应用中可能存在的漏洞,但不会导致被扫描设备的终端系统或第三方应用崩溃、重启、宕机等现象,也不影响普通用户对被扫描设备的正常使用。若漏洞存在,应用层验证模块3311执行无害验证会相应的返回漏洞存在的结果,反之,返回漏洞不存在的结果。

对于第三方应用中不可见的代码或组件,即不可以进行数据交互的代码或组件,无法访问其具体的代码或组件。在扫描其可能存在的漏洞时,应用层匹配模块3312根据已知的其可能存在的漏洞和漏洞对应的补丁信息,来得到漏洞扫描结果。由于补丁信息是可见的,若应用层匹配模块3312扫描到第三方应用已经打过补丁,即补丁对应的漏洞已经被修复,不存在漏洞。若应用层匹配模块3312没有扫描到第三方应用中存在补丁,即补丁对应的漏洞还没有被修复,存在漏洞。应用层匹配模块3312在扫描补丁信息时,根据补丁信息中的存在的特征值,与第三方应用中的补丁信息进行静态匹配。补丁的特征值包括如特征字符串、特征函数、特征成员变量、特征汇编指令等。应用层匹配模块3312通过扫描第三方应用的补丁信息中是否存在以上特征值,确定第三方应用中是否存在漏洞。若应用层匹配模块3312扫描第三方应用中存在补丁信息的特征值,即扫描到第三方应用已经打过补丁,不存在漏洞;反之,应用层匹配模块3312扫描到第三方应用中存在漏洞。需要注意的是,此处应用层匹配模块3312扫描的为第三方应用中的补丁信息,而没有扫描第三方应用中不可见的代码或组件。

系统层扫描模块332对终端系统的系统层进行漏洞扫描时,包括了系统层动态验证模块3321、系统层验证模块3322和系统层匹配模块3323。

系统层动态验证模块3321,适于根据漏洞对应的补丁信息,查找到漏洞对应的函数。动态执行函数并获取对应的执行结果,根据执行结果得到漏洞扫描结果。系统层动态验证模块3321根据已知的漏洞对应的补丁信息,进行扫描。漏洞的补丁信息一般包括漏洞存在的问题及补丁修复后解决的问题。因此,系统层动态验证模块3321根据漏洞的补丁信息,可以查找到该漏洞具体对应的系统层中的具体函数。系统层动态验证模块3321在漏洞扫描进程中创建一个子进程,由该子进程来动态执行该函数,并获取对应的执行结果。若系统层动态验证模块3321执行结果返回正确的执行结果,不会再返回漏洞存在的问题如越界、空指针等问题,即终端系统的系统层中已经打过该漏洞对应的补丁,不存在漏洞。若系统层动态验证模块3321执行结果应当返回漏洞存在问题的结果,则终端系统的系统层中没有打过该漏洞对应的补丁,存在对应的漏洞。从而,系统层动态验证模块3321根据执行结果得到相应的漏洞扫描结果。

系统层验证模块3322,适于利用漏洞验证代码和/或漏洞利用代码验证终端系统的系统层,得到对应的漏洞扫描结果。系统层验证模块3322可以利用漏洞本身已知的原理,根据漏洞本身已知的原理对其进行无害验证。系统层验证模块3322还可以编写漏洞验证代码(proofofconcept,poc),执行漏洞验证代码进行无害验证,扫描漏洞是否存在。或者系统层验证模块3322编写漏洞利用代码(exploit)对漏洞进行攻击,扫描漏洞是否存在。以上三种方式都可以对终端系统的系统层进行无害验证,根据无害验证的结果,从而获取到对应的漏洞扫描结果。需要注意的是,此处系统层验证模块3322均使用自身创建的子进程去执行漏洞验证代码、漏洞利用代码进行验证。

系统层匹配模块3323,适于根据漏洞对应的补丁信息,对补丁信息中的特征值进行静态匹配,得到对应的漏洞扫描结果。系统层匹配模块3323根据已知的其可能存在的漏洞和漏洞对应的补丁信息,来得到漏洞扫描结果。由于补丁信息是可见的,若系统层匹配模块3323扫描到终端系统的系统层已经打过补丁,即补丁对应的漏洞已经被修复,不存在漏洞。若系统层匹配模块3323没有扫描到终端系统的系统层中存在补丁,即补丁对应的漏洞还没有被修复,存在漏洞。系统层匹配模块3323在扫描补丁信息时,根据补丁信息中的存在的特征值,与终端系统的系统层中的补丁信息进行静态匹配。补丁的特征值包括如特征字符串、特征函数、特征成员变量、特征汇编指令等。系统层匹配模块3323通过扫描终端系统的系统层的补丁信息中是否存在以上特征值,确定终端系统的系统层中是否存在漏洞。若系统层匹配模块3323扫描终端系统的系统层中存在补丁信息的特征值,即扫描到终端系统的系统层已经打过补丁,不存在漏洞;反之,系统层匹配模块3323扫描到终端系统的系统层中存在漏洞。需要注意的是,此处系统层匹配模块3323扫描的为终端系统的系统层中的补丁信息,而没有扫描终端系统的系统层中具体的代码或组件。

图4中初始化模块320、结果汇总模块340、监听模块350、异常处理模块360、设备获取模块370以上各模块均与扫描模块330双向箭头相连,即以上各模块均与扫描模块330中包括的各个模块如应用层扫描模块331中的应用层验证模块3311和应用层匹配模块3312,系统层扫描模块332中的系统层动态验证模块3321、系统层验证模块3322和系统层匹配模块3323之间存在数据交互。

根据本发明提供的终端系统漏洞扫描装置,根据被扫描设备的设备信息,针对性的完成终端设备的应用层、系统层的漏洞扫描。在漏洞扫描时,根据终端设备的应用层、系统层的不同类型、权限、特征等各个方法,使用不同的漏洞扫描处理方式、处理逻辑来完成。对于第三方应用中不可见的代码或组件,通过对补丁信息的特征值进行静态匹配来验证漏洞是否存在,而不需要去申请任何特殊的权限或资源。同时,监听漏洞扫描进程,对漏洞扫描过程中可能出现的异常情况进行处理,将异常情况对普通用户屏蔽,提升用户体验效果。

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

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

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

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

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

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

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

本发明公开了:a1.一种终端系统漏洞扫描方法,其包括:

获取漏洞扫描所需的上下文信息;

根据所述上下文信息,初始化漏洞扫描所需的环境及文件;

启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成;

将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

a2.根据a1所述的方法,其中,在所述启动漏洞扫描进程之后,所述方法还包括:

监听所述漏洞扫描进程,获取所述漏洞扫描进程的异常信息;

若所述异常信息为可逆异常信息,继续执行所述漏洞扫描进程;否则,停止执行所述漏洞扫描进程。

a3.根据a1所述的方法,其中,所述方法还包括:获取被扫描设备的设备信息;

所述启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成进一步包括:结合所述被扫描设备的设备信息,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成;

所述将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息进一步包括:将所述被扫描设备的设备信息与漏洞扫描获取的结果进行汇总,得到所述被扫描设备的漏洞扫描结果信息。

a4.根据a1所述的方法,其中,所述根据所述上下文信息,初始化漏洞扫描所需的环境及文件进一步包括:

根据所述上下文信息及各个漏洞扫描处理方式,初始化得到漏洞扫描所需的进程分配资源、动态库和/或资源文件。

a5.根据a1所述的方法,其中,所述对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成进一步包括:

对终端系统的应用层进行漏洞扫描和/或对终端系统的系统层进行漏洞扫描。

a6.根据a5所述的方法,其中,所述对终端系统的应用层进行漏洞扫描进一步包括:

利用漏洞原理、漏洞验证代码和/或漏洞利用代码验证终端系统的应用层中第三方应用程序,得到对应的漏洞扫描结果。

a7.根据a5所述的方法,其中,所述对终端系统的应用层进行漏洞扫描进一步包括:

根据漏洞对应的补丁信息,对补丁信息中的特征值进行静态匹配,得到对应的漏洞扫描结果。

a8.根据a5所述的方法,其中,所述对终端系统的系统层进行漏洞扫描进一步包括:

根据漏洞对应的补丁信息,查找到漏洞对应的函数;

动态执行所述函数并获取对应的执行结果;

根据所述执行结果得到漏洞扫描结果。

a9.根据a5所述的方法,其中,所述对终端系统的系统层进行漏洞扫描进一步包括:

利用漏洞验证代码和/或漏洞利用代码验证终端系统的系统层,得到对应的漏洞扫描结果。

a10.根据a5所述的方法,其中,所述对终端系统的系统层进行漏洞扫描进一步包括:

根据漏洞对应的补丁信息,对补丁信息中的特征值进行静态匹配,得到对应的漏洞扫描结果。

本发明还公开了:b11.一种终端系统漏洞扫描装置,其包括:

获取模块,适于获取漏洞扫描所需的上下文信息;

初始化模块,适于根据所述上下文信息,初始化漏洞扫描所需的环境及文件;

扫描模块,适于启动漏洞扫描进程,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成;

结果汇总模块,适于将漏洞扫描获取的结果进行汇总,得到漏洞扫描结果信息。

b12.根据b11所述的装置,其中,所述装置还包括:

监听模块,适于监听所述漏洞扫描进程,获取所述漏洞扫描进程的异常信息;

异常处理模块,适于若所述异常信息为可逆异常信息,继续执行所述漏洞扫描进程;否则,停止执行所述漏洞扫描进程。

b13.根据b11所述的装置,其中,所述装置还包括:

设备获取模块,适于获取被扫描设备的设备信息;

所述扫描模块进一步适于:

结合所述被扫描设备的设备信息,对终端系统进行漏洞扫描,直至终端系统所有漏洞扫描完成。

所述结果汇总模块进一步适于:

将所述被扫描设备的设备信息与漏洞扫描获取的结果进行汇总,得到所述被扫描设备的漏洞扫描结果信息。

b14.根据b11所述的装置,其中,所述初始化模块进一步适于:

根据所述上下文信息及各个漏洞扫描处理方式,初始化得到漏洞扫描所需的进程分配资源、动态库和/或资源文件。

b15.根据b11所述的装置,其中,所述扫描模块包括:

应用层扫描模块,适于对终端系统的应用层进行漏洞扫描;

系统层扫描模块,适于对终端系统的系统层进行漏洞扫描。

b16.根据b15所述的装置,其中,所述应用层扫描模块包括:

应用层验证模块,适于利用漏洞原理、漏洞验证代码和/或漏洞利用代码验证终端系统的应用层中第三方应用程序,得到对应的漏洞扫描结果。

b17.根据b15所述的装置,其中,所述应用层扫描模块包括:

应用层匹配模块,适于根据漏洞对应的补丁信息,对补丁信息中的特征值进行静态匹配,得到对应的漏洞扫描结果。

b18.根据b15所述的装置,其中,所述系统层扫描模块包括:

系统层动态验证模块,适于根据漏洞对应的补丁信息,查找到漏洞对应的函数;动态执行所述函数并获取对应的执行结果;根据所述执行结果得到漏洞扫描结果。

b19.根据b15所述的装置,其中,所述系统层扫描模块包括:

系统层验证模块,适于利用漏洞验证代码和/或漏洞利用代码验证终端系统的系统层,得到对应的漏洞扫描结果。

b20.根据b15所述的装置,其中,所述系统层扫描模块包括:

系统层匹配模块,适于根据漏洞对应的补丁信息,对补丁信息中的特征值进行静态匹配,得到对应的漏洞扫描结果。

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