一种漏洞扫描方法及装置与流程

文档序号:21319633发布日期:2020-06-30 20:50阅读:196来源:国知局
一种漏洞扫描方法及装置与流程

本申请涉及计算机技术领域,具体涉及一种漏洞扫描方法及装置。



背景技术:

随着因特网的发展,网络安全的问题变得愈发重要。漏洞扫描技术作为一种重要的网络安全技术,能够有效提高网络的安全性,发现网络中存在的潜在安全问题。

在对相关技术的研究和实践过程中,本申请的发明人发现,在实施漏洞扫描时,每个扫描任务都需要在相应的扫描节点上录入和执行,使得漏洞扫描效率低下,此外,当录入和执行扫描任务的扫描节点发生故障时,由于该扫描节点的故障会导致整个任务的失败,使得漏洞扫描的效率更加低下;而且,极易因为海量数据和网络瓶颈造成扫描任务的堵塞甚至失败,从而加剧了漏洞扫描效率的低下。



技术实现要素:

本申请实施例提供一种漏洞扫描方法及装置,可以提高漏洞扫描效率。

本申请实施例提供一种漏洞扫描方法,包括:

确定需要执行的漏洞扫描任务;

根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;

基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;

向所述扫描节点发送所述目标子漏洞扫描任务;

通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

相应的,本申请实施例还提供一种漏洞扫描装置,包括:

第一确定单元,用于确定需要执行的漏洞扫描任务;

划分单元,用于根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;

第二确定单元,用于基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;

第一发送单元,用于向所述扫描节点发送所述目标子漏洞扫描任务;

扫描单元,用于通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

在一实施例中,所述第一确定单元,包括:

配置子单元,用于配置所述漏洞扫描任务的任务信息;

扫描确定子单元,用于基于所述任务信息,确定所述漏洞扫描任务的扫描状态和时间状态;

任务确定子单元,用于根据所述扫描状态和所述时间状态,确定需要执行的漏洞扫描任务。

在一实施例中,所述任务信息包括扫描目标和扫描插件;所述划分单元,包括:

选择组合子单元,用于对所述漏洞扫描任务的扫描目标和所述扫描插件进行选择组合;

任务划分子单元,用于根据所述选择组合的结果对所述漏洞扫描任务进行划分;

任务获得子单元,用于基于所述划分的结果得到至少一个子漏洞扫描任务。

在一实施例中,所述扫描节点呈分布式的部署;所述第二确定单元,包括:

获取子单元,用于获取所述第一消息队列中各个子漏洞扫描任务的排列位置;

选择子单元,用于从所述第一消息队列中选择排列位置为预定位置的子漏洞扫描任务作为待分发的目标子漏洞扫描任务;

标志确定子单元,用于确定所述扫描节点的节点标志;

任务分配子单元,用于根据所述节点标志,确定所述待分发的目标子漏洞扫描任务为分配给扫描节点的目标子漏洞扫描任务。

在一实施例中,所述扫描单元,包括:

信息解析子单元,用于利用所述扫描节点解析所述目标子漏洞扫描任务的任务信息,确定待使用的扫描方式及待扫描的扫描目标;

扫描执行子单元,用于触发所述扫描节点基于所述扫描方式,对所述扫描目标执行漏洞扫描,生成所述漏洞扫描的扫描结果。

在一实施例中,所述扫描执行子单元,用于:

触发所述扫描节点根据所述扫描方式,确定待发送的检测数据;利用所述扫描节点发送所述待发送的检测数据到所述扫描目标,获得所述扫描目标返回的返回数据;通过所述扫描节点解析所述返回数据,获得所述漏洞扫描的扫描结果。

在一实施例中,漏洞扫描装置还包括:

第二发送单元,用于通过所述扫描节点发送所述扫描结果到第二消息队列;

汇总单元,用于基于所述第二消息队列中扫描结果的所属类别和排列位置,对相应的扫描结果进行汇总,得到所述漏洞扫描任务的扫描结果。

在一实施例中,所述汇总单元,包括:

类别确定子单元,用于确定所述扫描结果的所属类别;

结果发送子单元,用于若所述扫描结果的所属类别为待写入数据,则根据所述排列位置发送所述扫描结果到漏洞数据库;若所述扫描结果的所属类别为待分析数据,则根据所述排列位置发送所述扫描结果到日志分析系统。

在一实施例中,所述类别确定子单元,用于:

解析所述扫描结果,得到所述扫描结果的漏洞属性;若所述扫描结果的漏洞属性为存在漏洞,则确定所述扫描结果的所属类别为待写入数据;若所述扫描结果的漏洞属性为报错日志或不存在漏洞,则确定所述扫描结果的所属类别为待分析数据。

本申请实施例可以确定需要执行的漏洞扫描任务;根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;向所述扫描节点发送所述目标子漏洞扫描任务;通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

该方案可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障导致整个任务的失败,从而进一步提高了漏洞扫描效率;而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,因此使得漏洞扫描效率得到了更进一步的提升。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的漏洞扫描方法的场景示意图;

图2是本申请实施例提供的漏洞扫描方法的流程图;

图3是本申请实施例提供的漏洞扫描方法的漏洞扫描任务判断示意图;

图4是本申请实施例提供的漏洞扫描方法的漏洞扫描任务分发示意图;

图5是本申请实施例提供的漏洞扫描方法的扫描结果存储示意图;

图6是本申请实施例提供的漏洞扫描方法的整体架构示意图;

图7是本申请实施例提供的漏洞扫描方法的另一流程示意图;

图8是本申请实施例提供的漏洞扫描方法的漏洞扫描流程示意图;

图9是本申请实施例提供的漏洞扫描方法的任务信息配置示意图;

图10是本申请实施例提供的漏洞扫描方法的另一任务信息配置示意图;

图11是本申请实施例提供的漏洞扫描方法的扫描结果示意图;

图12是本申请实施例提供的漏洞扫描装置的结构示意图;

图13是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图14是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图15是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图16是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图17是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图18是本申请实施例提供的漏洞扫描装置的另一结构示意图;

图19是本申请实施例提供的计算机设备的结构示意图;

图20是本申请实施例提供的区块链系统的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一种漏洞扫描方法及装置。具体地,本申请实施例提供适用于计算机设备的的漏洞扫描装置。其中,该计算机设备可以为终端或服务器等设备,该终端可以为手机、平板电脑、笔记本电脑等设备。该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群。

本申请实施例将以漏洞扫描方法由服务器执行为例,来介绍漏洞扫描方法。

参考图1,本申请实施例提供的漏洞扫描系统包括扫描节点10,该扫描节点可以对扫描目标20执行漏洞扫描,并获得该漏洞扫描的扫描结果。具体地,扫描节点10在获得任务后,可以根据该任务中的任务数据确定待使用的漏洞扫描技术,并使用该漏洞扫描技术对扫描目标20执行漏洞扫描;在执行漏洞扫描后,扫描节点10可以获得该漏洞扫描的扫描结果。

其中,该漏洞扫描系统,可以确定需要执行的漏洞扫描任务;根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;向所述扫描节点发送所述目标子漏洞扫描任务;通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

本申请实施例提供的一种漏洞扫描方法,该方法可以由服务器执行,也可以由服务器和终端共同执行;本申请实施例以漏洞扫描方法由服务器执行为例来进行说明,具体的,由集成在服务器中的漏洞扫描装置来执行,如图2所述,该漏洞扫描方法的具体流程可以如下:

101、确定需要执行的漏洞扫描任务。

其中,漏洞扫描任务包括对执行漏洞扫描时所需信息的描述,可以通过确定执行漏洞扫描时所需信息来新建漏洞扫描任务。具体地,所需信息可以包括任务名称:用于区分不同的任务;可以包括扫描目标:用于确定待扫描的目标互联网协议地址(internetprotocoladdress,ip地址)和目标端口;可以包括扫描插件:用于设置需要检测的漏洞类型;可以包括开始时间:用于设置任务执行的时间,等等。

其中,漏洞也称脆弱性,为计算机系统在硬件、软件、协议的具体事项或系统安全策略上存在缺陷和不足;漏洞的类型可以有多种,比如,可以为弱口令漏洞、上传漏洞、权限绕过等等。漏洞扫描为基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测行为,比如,在执行漏洞扫描时,可以通过扫描端口来发现远程主机开放的端口以及服务,进而对可能存在的漏洞进行扫描。

其中,可以通过设置筛选条件对生成的漏洞扫描任务进行筛选,从而确定需要执行的漏洞扫描任务。具体地,该筛选条件可以为多种情况,比如,可以设置筛选条件为:选择扫描插件为“未加密登录请求”的漏洞扫描任务作为需要执行的漏洞扫描任务;又比如,可以设置筛选条件为:选择开始时间为2020年2月23日18:00:00的漏洞扫描任务作为需要执行的漏洞扫描任务,等等。

在一实施例中,可以创建两个漏洞扫描任务:“任务一”和“任务二”。其中,“任务一”的扫描目标对系统内置的ip地址集中的全端口执行“未加密登录请求”的漏洞扫描,且“任务一”的开始时间为2020年2月12日18:00:00;“任务二”的扫描目标为对系统内置的ip地址集中的全端口执行“文件上传漏洞”的漏洞扫描,且“任务二”的开始时间为2020年3月13日18:00:00。具体地,可以设置漏洞扫描任务的筛选条件为,选择开始时间为2020年3月13日18:00:00的漏洞扫描任务作为需要执行的漏洞扫描任务,因此,确定需要执行的漏洞扫描任务为“任务一”。

在本实施例中,可以通过确定执行漏洞扫描时所需信息来新建漏洞扫描任务,并且,可以通过设置筛选条件,从生成的漏洞扫描任务中确定需要执行的漏洞扫描任务。具体地,步骤“确定需要执行的漏洞扫描任务”,可以包括:

配置该漏洞扫描任务的任务信息;

基于任务信息,确定该漏洞扫描任务的扫描状态和时间状态;

根据扫描状态和所述时间状态,确定需要执行的漏洞扫描任务。

其中,漏洞扫描任务的任务信息可以用于描述执行漏洞扫描时所需的数据,比如,任务信息可以包括任务名称、扫描目标、扫描周期、开始时间、扫描插件等数据。

具体地,任务名称可以用于区分不同的漏洞扫描任务,比如,可以使用非空字符串来确定任务名称,譬如,任务名称可以为“task1”、“task2”等。

具体地,扫描目标可以用于描述该漏洞扫描任务的目标扫描对象。扫描目标可以包括目标ip和目标端口;其中,目标ip可以为自定义输入的ip地址,也可以为系统内置的ip地址集;其中,目标端口可以为系统预设的缺省端口、全端口、也可以为自定义端口。比如,可以通过确认目标ip、以及该ip地址下的目标端口来确定扫描目标,譬如,在一实施例中,扫描目标的设置可以为如下:目标ip的地址为10.0.0.154;目标端口的端口号为22。

具体地,扫描周期可以用于描述该漏洞扫描任务执行的周期,在实际应用中,可以提供至少一个扫描周期,比如,可以为每天、每周、每月等。

具体地,开始时间可以用于描述每个周期内该漏洞扫描任务开始执行的时间。开始时间可以有多种表现形式,比如,可以包括日期信息和时刻信息,譬如,日期信息可以为2019-01-02,时刻信息可以为18:06:16。

具体地,扫描插件可以用于设置需要检测的漏洞类型,在实际应用中,可以提供多种方式进行扫描插件的确定,比如,可以选择至少一个扫描插件,也可以选择所有扫描插件,譬如,可以选择“ssh弱口令”以及“redis未授权访问”两个扫描插件,则该选择的两个扫描插件即为待检测的漏洞类型。

在本实施例中,可以通过创建任务名称为“任务1”的漏洞扫描任务,其中,“任务1”的扫描目标中,目标ip设置为系统内置的ip地址集,该ip地址集中包括ip1、ip2和ip3,目标端口则自定义设置为6379端口和6380端口;该漏洞扫描任务的扫描周期设置为每天;该漏洞扫描任务的开始时间中,日期信息设置为2019-12-27,时刻信息设置为00:00:00;该漏洞扫描任务的扫描插件设置为“redis未授权访问”,通过确定上述描述执行漏洞扫描时所需的数据来创建一个漏洞扫描任务。

其中,漏洞扫描任务的扫描状态用于描述该任务是否为需要执行的漏洞扫描任务,扫描状态的值可以包括确认执行和取消执行。比如,可以设置所有目标ip为10.0.0.154的任务扫描状态为取消执行,以实现取消对该ip的漏洞扫描计划,相应地,可以设置所有目标ip为10.0.0.154以外的任务扫描状态为确认执行,以确认对其余目标ip的漏洞扫描照常进行。

其中,漏洞扫描任务的时间状态用于描述该漏洞扫描任务的开始时间是否匹配当前时间,若该漏洞扫描任务的开始时间与当前时间相匹配,则确定该漏洞扫描任务的时间状态为时间相符;若该漏洞扫描任务的开始时间与当前时间不匹配,则确定该漏洞扫描任务的时间状态为时间不符。比如,漏洞扫描任务的开始时间设置为2019-12-27的00:00:00,若当前时间为2019-12-2700:00:00,则确定该漏洞扫描任务的时间状态为时间相符;再如,漏洞扫描任务的开始时间设置为2019-12-28的00:00:00,若当前时间为2019-12-2700:00:00,则确定该漏洞扫描任务的时间状态为时间不符。

在一实施例中,参考图3,可以通过“是否待扫描任务”的判断获得漏洞扫描任务的扫描状态、通过“是否匹配配置时间”的判断获得漏洞扫描任务的时间状态。具体地,仅在漏洞扫描任务为待扫描任务,即漏洞扫描任务的扫描状态为确认执行;以及漏洞扫描任务匹配配置时间,即漏洞扫描任务的时间状态为时间相符的情况下,确定任务分发、即该漏洞扫描任务为需要执行的漏洞扫描任务。

在本实施例中,可以设置所有漏洞扫描任务的默认扫描状态为确认扫描,若当前时间为2019年12月27日的00:00:00,则由于“任务1”的开始时间与当前时间相匹配,即可判断“任务1”的时间状态为时间相符,从而可以确定“任务1”为需要执行的漏洞扫描任务。

102、根据该漏洞扫描任务的任务信息将该漏洞扫描任务划分成至少一个子漏洞扫描任务,并将至少一个子漏洞扫描任务添加到第一消息队列中。

其中,在确定需要执行的漏洞扫描任务后,可以根据该漏洞扫描任务的任务信息将该漏洞扫描任务划分成至少一个子漏洞扫描任务;比如,可以基于任务信息的扫描目标和扫描插件对任务进行划分生成至少一个子漏洞扫描任务,使得生成的每个子漏洞扫描任务都包括了该漏洞扫描任务的部分任务信息,而生成的至少一个子漏洞扫描任务包括了该任务的全部任务信息。

其中,消息为计算机间传送的数据单位,消息的形式可以有多种,比如,可以为包括简单的文本字符串,也可以为包括多层嵌套数据的信息等等。消息队列是在消息的传输过程中保存消息的容器,可以作为进程间通信或同一进程的不同线程间的通信方式,比如,可以使用消息队列实现消息生产者和消息消费者之间的通信,譬如,消息生产者可以将消息发送到消息队列中,相应地,消息消费者可以从该消息队列中获取消息。

在本实施例中,该漏洞扫描任务的任务信息中包括了执行漏洞扫描时所需的数据,参考图4,可以根据该漏洞扫描任务的任务信息将该漏洞扫描任务划分成至少一个子漏洞扫描任务,并将生成的至少一个子漏洞扫描任务添加到第一消息队列中,以利用该第一消息队列实现子漏洞扫描任务的分发。具体地,该任务信息包括扫描目标和扫描插件,步骤“根据该漏洞扫描任务的任务信息将该漏洞扫描任务划分成至少一个子漏洞扫描任务”,可以包括:

对该漏洞扫描任务的扫描目标和扫描插件进行选择组合;

根据选择组合的结果对该漏洞扫描任务进行划分;

基于划分的结果得到至少一个子漏洞扫描任务。

其中,可以基于该漏洞扫描任务的任务信息,获得该漏洞扫描任务的扫描目标信息和扫描插件信息,比如,在本实施例中,可以获得“任务一”的扫描目标中,目标ip包括ip1、ip2和ip3,目标端口为6379和6380;扫描插件为“redis未授权访问”。

其中,选择组合的方式可以有多种,比如,可以基于扫描目标和扫描插件中包括的多个元素进行目标元素选择,将选择得到的多个目标元素按照预定的规则进行组合,从而得到该选择组合的结果。譬如,可以基于扫描目标与扫描插件进行集合相乘,得到该集合相乘的笛卡尔积,其中,该笛卡尔积中包括的多个元素即为该选择组合的结果。

在一实施例中,在获得该选择组合的结果后,可以基于该结果对该漏洞扫描任务进行划分。比如,可以基于扫描目标与扫描插件集合相乘的结果,对该漏洞扫描任务进行划分,进一步地,可以基于该划分的结果得到至少一个子漏洞扫描任务。

在本实施例中,可以根据扫描目标和扫描插件的选择组合划分“任务1”,得到至少一个子漏洞扫描任务,其中,扫描目标包括目标ip和目标端口。具体地,“任务1”的目标ip包括ip1,ip2和ip3;目标端口包括6379和6380;扫描插件包括“redis未授权访问”。对“任务1”的扫描目标和扫描插件进行选择组合,可以设置选择组合的规范为集合乘法,因此通过对扫描目标和扫描插件进行集合乘法所得到的笛卡尔积对该漏洞扫描任务进行划分,可以得到6个子漏洞扫描任务,将划分结果以集合的形式表示,得到的6个子漏洞扫描任务分别为:

子漏洞扫描任务1:{ip1,6379,redis未授权访问};

子漏洞扫描任务2:{ip2,6379,redis未授权访问};

子漏洞扫描任务3:{ip3,6379,redis未授权访问};

子漏洞扫描任务4:{ip1,6380,redis未授权访问};

子漏洞扫描任务5:{ip2,6380,redis未授权访问};

以及子漏洞扫描任务6:{ip3,6380,redis未授权访问}。

103、基于第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,该扫描节点呈分布式的部署。

其中,扫描节点为执行漏洞扫描的节点,比如,可以在扫描节点录入待执行的扫描任务,扫描节点可以通过解析该扫描任务的数据,获得执行漏洞扫描的相关信息以执行漏洞扫描。譬如,在获得扫描任务之后,扫描节点可以通过解析该扫描任务的数据,获得待扫描的扫描目标、待使用的漏洞扫描技术,进而使用该漏洞扫描技术对该扫描目标执行漏洞扫描,以获得扫描结果。进一步地,扫描节点可以返回生成的扫描结果。

其中,扫描节点的构建方式可以有多种,具体地,可以采用分布式架构来构建扫描节点,从而得到至少一个分布式的扫描节点。比如,可以采用分布式架构来构建扫描节点,生成的至少一个扫描节点可以通过网络进行通信与协调,以完成共同的任务工作,譬如,在一实施例中,可以利用至少一个分布式的扫描节点实现至少一个扫描任务的执行。

其中,触发第一消息队列确定目标子漏洞扫描任务的事件可以有多种,比如,可以为当接收扫描节点发送的扫描任务请求时。具体地,扫描任务请求可以为由扫描节点发送的请求数据,该请求数据可以用于请求待执行的扫描任务;比如,扫描节点可以作为消息消费者,通过发送扫描任务请求来向该第一消息队列请求子漏洞扫描任务。

其中,可以基于消息队列获得消息的顺序,添加消息到消息队列中,相应地,在接受到消息消费者的消息请求后,可以基于该顺序确定分配给消息消费者的消息。比如,可以遵循先进先出(firstinputfirstoutput,fifo)的顺序来确定待分发的消息。

譬如,在本实施例中,在添加子漏洞扫描任务到第一消息队列时,可以将最先获得的子漏洞扫描任务保留在队列首,随后获得的子漏洞扫描任务则依照获得顺序相应添加到第一消息队列中;而第一消息队列在获得来自扫描节点的子漏洞扫描任务请求后,可以将处于队列首部的子漏洞扫描任务分发出去,其中,子漏洞扫描任务一旦被分发出去则不再存在于该第一消息队列中,相应地,排在后面的子漏洞扫描任务则在队列中前移,等待新的子漏洞扫描任务请求。

在一实施例中,可以基于第一消息队列中子漏洞扫描任务的排列顺序为扫描节点确定待分发的子漏洞扫描任务,其中,该扫描节点呈分布式的部署,具体地,步骤“基于第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务”,可以包括:

获取第一消息队列中各个子漏洞扫描任务的排列位置;

从第一消息队列中选择排列位置为预定位置的子漏洞扫描任务作为待分发的目标子漏洞扫描任务;

确定该扫描节点的节点标志;

根据节点标志,确定待分发的目标子漏洞扫描任务为分配给该扫描节点的目标子漏洞扫描任务。

其中,第一消息队列可以基于预定的规则添加子漏洞扫描任务,比如,可以基于时间顺序,将先获得的子漏洞扫描任务设置为靠前的排列位置,将后获得的子漏洞扫描任务设置为靠后的排列位置,等等。在获取第一消息队列中各个子漏洞扫描任务的排列位置后,可以从该第一消息队列中选择预定位置的子漏洞扫描任务,比如,可以选择位于队列首的子漏洞扫描任务作为待分发的目标子漏洞扫描任务。

其中,第一消息队列可以获得至少一个扫描任务请求,比如,可以获得至少一个来自不同扫描节点发送的扫描任务请求。扫描节点发送的扫描任务请求中可以包括区分该扫描节点的节点标志,比如,可以包括请求发送时间的信息和请求发送节点的标志序列(identitydocument,id),等等。可以通过解析该扫描任务请求获得节点标志,从而确定发送该扫描任务请求的扫描节点。例如,当有至少一个扫描节点向第一消息队列发送扫描任务请求时,第一消息队列可以通过节点标志确定目标扫描节点,从而准确无误地分发目标子漏洞扫描任务。

在一实施例中,第一消息队列中可以包括至少一个子漏洞扫描任务,该第一消息队列可以基于获得子漏洞扫描任务的时间顺序将获得的至少一个子任务进行排列,具体地,可以遵循fifo原则,使得越先获得的子漏洞扫描任务越早被分发。因此,第一消息队列在获得扫描任务请求时,可以首先考虑排在队列首部的子漏洞扫描任务为待分发的目标子漏洞扫描任务。可选地,在确定排在队列首部的子漏洞扫描任务为待分发的目标子漏洞扫描任务之前,可以对该子漏洞扫描任务进行白名单检测:

若该白名单中包括该子漏洞扫描任务,则说明系统给予该子漏洞扫描任务信任的权限,无需对基于该子漏洞扫描任务执行漏洞扫描,从而可以将该子漏洞扫描任务从第一消息队列中删去,删去后同理可对新的队列首部子漏洞扫描任务进行白名单检测,从而确定该子漏洞扫描任务是否为待分发的目标子漏洞扫描任务;

若该白名单中不包括该子漏洞扫描任务,则说明需要基于该子漏洞扫描任务执行漏洞扫描,因此可以确定该排在队列首的子漏洞扫描任务为待分发的目标子漏洞扫描任务。

104、向该扫描节点发送目标子漏洞扫描任务。

其中,在确定待分发的目标子漏洞扫描任务后,第一消息队列可以向请求扫描任务的扫描发送该目标子漏洞扫描任务。

例如,在一实施例中,基于“任务1”得到六个子漏洞扫描任务:子漏洞扫描任务1~子漏洞扫描任务6。可以将该六个子漏洞扫描任务依序添加到第一消息队列中,其中,位于队列首的是子漏洞扫描任务1、位于队列尾的是子漏洞扫描任务6。当接收来自扫描节点1的扫描任务请求时,该第一消息队列可以遵循fifo的原则,确定子漏洞扫描任务1为分配给该扫描节点的目标子漏洞扫描任务,向扫描节点1发送子漏洞扫描任务1。

进而,可以将子漏洞扫描任务1从第一消息队列中删除,使得子漏洞扫描任务2相应地成为队列首的子漏洞扫描任务,后续若接收到新的扫描任务请求,该第一消息队列可以确定子漏洞扫描任务2为待分发的目标子漏洞扫描任务,同理向发送扫描任务请求的扫描节点发送该目标子漏洞扫描任务。

105、通过该扫描节点执行目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

其中,扫描节点作为消费者获取到目标子漏洞扫描任务后,扫描节点将针对扫描目标进行漏洞扫描获得扫描结果。具体地,针对不同的漏洞类型,扫描节点可以采用不同的扫描方式对扫描目标进行漏洞扫描,比如,可以使用基于版本判断的扫描方式、基于信息判断的扫描方式、基于命令执行的扫描方式、基于回连判断的扫描方式等等。

其中,在扫描节点作为消费者消耗完一个目标子漏洞扫描任务、即执行完一个目标子漏洞扫描任务后,该扫描节点可以获得生成的扫描结果,扫描结果中可以包括多类信息,比如,可以包括漏洞名称、目标ip、目标端口,等等。

在一实施例中,在第一消息队列确定分配给该扫描节点的目标子漏洞扫描任务后,可以通过触发该扫描节点基于获得的目标子漏洞扫描任务,针对扫描目标进行漏洞扫描得到扫描结果,具体地,步骤“通过该扫描节点执行目标子漏洞扫描任务,以针对扫描目标进行漏洞扫描得到扫描结果”,可以包括:

利用该扫描节点解析目标子漏洞扫描任务的任务信息,确定待使用的扫描方式及待扫描的扫描目标;

触发该扫描节点基于扫描方式,对扫描目标执行漏洞扫描,生成漏洞扫描的扫描结果。

其中,目标子漏洞扫描任务的任务信息可以包括对基于该目标子漏洞扫描任务执行漏洞扫描时所需信息的描述,比如,该任务信息中可以包括扫描目标和扫描插件,具体地,扫描节点可以根据扫描插件确定待使用的扫描方式。

其中,待使用的扫描方式可以有多种,比如,可以为基于版本判断的扫描方式、基于信息判断的扫描方式、基于命令执行的扫描方式、基于回连判断的扫描方式等等。扫描节点在确定了扫描方式以后,可以利用该扫描方式对扫描目标执行漏洞扫描。

其中,待扫描的扫描目标可以包括目标ip和目标端口,可以通过确认目标ip、以及该ip地址下的目标端口来确定扫描目标。

在一实施例中,扫描节点在获得目标子漏洞扫描任务后,可以通过解析目标子漏洞扫描任务的任务信息,确定对ip为10.0.0.154的设备下的22号端口执行基于版本判断的漏洞扫描。

其中,扫描节点在确定待使用的扫描方式以及待扫描的扫描目标后,可以基于该扫描方式,对扫描目标执行漏洞扫描,生成漏洞扫描的扫描结果,具体地,步骤“触发该扫描节点基于扫描方式,对扫描目标执行漏洞扫描,生成漏洞扫描的扫描结果”,可以包括:

触发该扫描节点根据扫描方式,确定待发送的检测数据;

利用该扫描节点发送待发送的检测数据到扫描目标,获得该扫描目标返回的返回数据;

通过该扫描节点解析返回数据,获得漏洞扫描的扫描结果。

其中,检测数据为由扫描节点向扫描目标发送的用于执行漏洞扫描所需的数据,具体地,检测数据可以在进行请求和响应时用于交换信息。检测数据可以为多种形式的数据包;比如,可以为预设的扫描报文、预设的检测报文,等等。譬如,检测数据可以为网络控制报文协议(internetcontrolmessageprotocol,icmp)回应请求报文,利用该检测数据可以执行漏洞扫描以确定扫描目标主机是否存活。

其中,返回数据为由扫描目标向扫描节点发送的用于返回漏洞扫描结果的数据。返回数据携带的信息可以为多种;比如,返回数据中可以包括漏洞的区别特征、扫描目标的服务版本、扫描目标执行无害化命令的结果,等等。譬如,返回数据可以为icmp回应回复报文,该返回数据确定了扫描目标主机的存活状态。

在一实施例中,可以触发该扫描节点采用基于版本判断的扫描方式。在确定待发送的数据包后,通过网络发包的形式将该数据包发送到扫描目标,并获得该扫描目标返回的返回数据。可以通过该扫描节点解析返回数据,提取扫描目标的服务版本信息,随后,可以基于该服务版本信息在漏洞数据库中检索相应的漏洞,得到漏洞扫描的结果。

在另一实施例中,可以触发该扫描节点采用基于信息判断的扫描方式。在确定待发送的扫描报文后,将该扫描报文发送到扫描目标,并获取该扫描目标返回的返回数据,其中,该返回数据中包括有关漏洞存在的关键信息。可以通过该扫描节点解析该关键信息,判断该关键信息是否描述了漏洞的特征,从而判断漏洞是否存在,得到漏洞扫描的结果。

在另一实施例中,可以触发该扫描节点采用基于命令执行的扫描方式。首先,可以确定待发送的检测报文,其中,该检测报文可以触发扫描目标所在的系统执行特定的无害化命令。随后,可以获取该扫描目标返回的返回数据,其中,该返回数据可以为该扫描目标所在的系统执行无害化命令的执行结果。可以通过该扫描节点解析该返回结果来判断漏洞是否存在,从而得到漏洞扫描的结果。

在另一实施例中,可以触发该扫描节点采用基于回连判断的扫描方式。首先,可以确定待发送的检测报文,其中,该检测报文可以触发扫描目标所在的目标系统主动回连上扫描节点所在扫描系统上预定的接口、或者触发目标系统向扫描系统发起一个域名系统(domainnamesystem,dns)请求。随后,可以获得该扫描目标返回的返回数据,其中,该返回数据可以包括接口请求记录或dns请求记录。可以通过该扫描节点解析该返回信息来判断漏洞是否存在,从而得到漏洞扫描的结果。

在实际应用中,进行漏洞扫描得到扫描结果后,可以根据请求扫描任务的扫描节点的扫描结果,得到该漏洞扫描任务的扫描结果。

其中,在请求扫描任务的扫描节点完成目标子漏洞扫描任务后,该扫描节点可以作为消息生产者,将执行漏洞扫描得到的扫描结果通过消息队列发送,以实现对扫描结果的汇总。

其中,该漏洞扫描任务在被划分成至少一个子漏洞扫描任务,并且在利用消息队列相继地把生成的至少一个子漏洞扫描任务发送到至少一个分布式的扫描节点进行漏洞扫描后,相应地生成至少一个子漏洞扫描任务的扫描结果。可以通过将至少一个子漏洞扫描任务的扫描结果进行汇总,来得到该漏洞扫描任务的扫描结果。

其中,该漏洞扫描任务的扫描结果可以为至少一个分布式的扫描节点针对该漏洞扫描任务中的扫描目标执行漏洞扫描之后获得的结果,具体地,扫描结果可以包括漏洞名称、目标ip、目标端口、漏洞等级、漏洞详情和解决方案等信息。譬如,扫描节点返回的扫描结果确定了漏洞名称为“redis未授权访问”,目标ip为10.0.0.154,目标端口为6379,漏洞等级为“i级”,漏洞详情为“无限制,可以任意访问”,解决方案为“设置防火墙策略”。

在一实施例中,参考图5,可以根据至少一个分布式的扫描节点执行各个子漏洞扫描任务,从而得到漏洞扫描任务的扫描结果。具体地,漏洞扫描方法还包括:

通过该扫描节点发送扫描结果到第二消息队列;

基于第二消息队列中扫描结果的所属类别和排列位置,对相应的扫描结果进行汇总,得到漏洞扫描任务的扫描结果。

其中,第二消息队列可以作为扫描结果传输过程中保存扫描结果的容器,比如,扫描节点可以作为消息生产者将扫描结果发送到第二消息队里,利用第二消息队列实现对扫描结果的分发。

其中,第二消息队列的消息分发机制可以有多种,比如,可以遵循点对点的模式分发消息、可以遵循发布订阅的模式分发消息,等等。譬如,第二消息队列可以遵循点对点的模式对扫描结果进行发送,使得每个扫描结果都只能被一个消息消费者获得,例如,可以在确定了待发送的扫描结果后,将该扫描结果发送到漏洞数据库、且该扫描结果仅被该漏洞数据库获得;也可以将该扫描结果发送到日志分析系统、且该扫描结果仅被该日志分析系统获得,等等。

其中,扫描结果的所属类别用于描述扫描结果的类别,可以使用扫描结果的所属类别为扫描结果进行分类,比如,扫描结果的所属类别可以包括待写入数据类别和待分析数据类别。其中,待写入数据类别的扫描结果可以为扫描出漏洞,因此需要将该扫描结果写入数据库;待分析数据类别的扫描结果可以为未扫描出漏洞,但仍然具有分析价值。

其中,第二消息队列可以基于获得扫描结果的顺序,依序添加扫描结果到第二消息队列中,相应地,可以基于该顺序确定待发送的扫描结果。比如,可以基于扫描结果在第二消息队列中的排列顺序,遵循轮询分发的原则对扫描结果进行分发,又比如,可以遵循公平分发的原则对扫描结果进行分发,等等。

在一实施例中,扫描节点基于获得的子漏洞扫描任务执行漏洞扫描,获得扫描结果后,将该扫描结果发送到第二消息队列;第二消息队列可以基于接收到的扫描节点的所属类别和排列位置,发送扫描结果到漏洞数据库或日志分析系统,以实现对该扫描结果的汇总;

在由漏洞扫描任务拆分得到的至少一个子漏洞扫描任务均被扫描节点消费后,相应地可以得到至少一个扫描结果,进一步地,在第二消息队列将至少一个扫描节点均发送到漏洞数据库或日志分析系统后,即为实现了基于该漏洞扫描任务执行漏洞扫描,并且得到了该漏洞扫描任务的扫描结果。具体地,步骤“基于第二消息队列中扫描结果的所属类别和排列位置,对相应的扫描结果进行汇总”,可以包括:

确定扫描结果的所属类别;

若扫描结果的所属类别为待写入数据,则根据排列位置发送扫描结果到漏洞数据库;

若扫描结果的所属类别为待分析数据,则根据排列位置发送扫描结果到日志分析系统。

基于扫描结果的所属类别,可以更精确地将扫描结果进行汇总,比如:

若扫描结果的所属类别为待写入数据,可以结合该扫描结果在第二消息队列中的排列位置将该扫描结果发送到漏洞数据库;

譬如,参考图6,可以通过第二消息队列,将所属类别为待写入数据且排列位置为预设位置内的扫描结果发送到结果同步引擎,该结果同步引擎可以通过利用应用程序接口(applicationprogramminginterface,api)实现将待写入数据存储到数据库中;具体地,该第二消息队列可以为基于远程字典服务(remotedictionaryserver,redis)实现的消息队列,该api接口可以利用超文本预处理器(hypertextpreprocessor,php)语言编写的接口程序,该数据库可以为关系型数据库管理系统(mysql)。

若扫描结果的所属类别为待分析数据,可以结合该扫描结果在第二消息队列中的排列位置,将该扫描结果发送到日志分析系统;

譬如,参考图6,可以通过第二消息队列,将所属类别为待分析数据且排列位置为预设位置内的扫描结果发送到结果同步引擎,进而利用该结果同步引擎将扫描结果发送到预定的日志分析系统(elasticsearchlogstashkibana,elk)。

在本实施例中,可以在确定扫描结果的所属类别后,实现对扫描结果执行准确地汇总,具体地,步骤“确定扫描结果的所属类别”,可以包括:

解析扫描结果,得到该扫描结果的漏洞属性;

若该扫描结果的漏洞属性为存在漏洞,则确定该扫描结果的所属类别为待写入数据;

若该扫描结果的漏洞属性为报错日志或不存在漏洞,则确定该扫描结果的所属类别为待分析数据。

其中,扫描结果的漏洞属性可以为:报错日志、存在漏洞、或不存在漏洞;具体地,可以基于扫描结果的漏洞属性,判断该扫描结果的所属类别,比如:

若该扫描结果的漏洞属性为存在漏洞,则可以确定该扫描结果为待写入数据类型;若该扫描结果的漏洞属性为报错日志或不存在漏洞,则可以确定该扫描结果为待分析数据类型。

在一实施例中,扫描节点在基于获得的子漏洞扫描任务针对扫描目标执行漏洞扫描后,可以相应地获得扫描结果。经过对该扫描结果的解析,确定该扫描结果为存在漏洞,则可以确定扫描目标中存在漏洞,因此可以将该扫描结果归类到待写入数据,以实现对漏洞的记录。

由上可知,本实施例可以确定需要执行的漏洞扫描任务;根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;向所述扫描节点发送所述目标子漏洞扫描任务;通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

该方案可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障而导致整个任务的失败,使得系统的容灾能力得到提升,从而进一步提高了漏洞扫描效率。

而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送、以及将至少一个扫描结果发送到存储单元进行存储,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,使得漏洞扫描效率得到了更进一步的提升。

并且,当待扫描的目标数量增加时,可以通过增加分布式扫描节点的数量来实现弹性扩容,使得漏洞扫描系统具备弹性扩容的能力,从而从另一方面提升了漏洞扫描效率。

另外,对于执行大量子漏洞扫描任务而获得的至少一个扫描结果,通过对扫描消进行分类,把存在漏洞的扫描结果写入到漏洞数据库,其他情况的扫描结果写入到日志分析系统,实现了日志分流,避免大量无用日志造成系统无效负载,使得漏洞扫描的效率相应也得到提升。

根据上面实施例所描述的方法,以下将举例进一步详细说明。

在本实施例中,将以漏洞扫描装置集成在服务器与终端为例进行说明,该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。

如图7所示,一种漏洞扫描方法,具体流程如下:

201、服务器确定需要执行的漏洞扫描任务。

其中,扫描漏洞任务的任务信息可以在服务器的控制界面配置,比如,参考图7,可以在前端页面中实现任务信息的配置,从而创建一个漏洞扫描任务。在实际应用中,数据的交互可以通过基于php语言实现的网络(web)接口来实现;譬如,通过web接口将漏洞扫描任务的任务信息数据写入到mysql数据库及elk日志分析系统中。

又如,参考图9,可以在该控制界面中配置任务信息中的扫描名称、目标ip、扫描周期、开始时间和目标端口;参考图10,可以在该控制界面中配置任务信息中的扫描插件,继而通过确认添加任务实现任务信息的配置,也相应创建了一个漏洞扫描任务。其中,参考图8,可以通过创建一个漏洞扫描任务也相应地实现了该示意图中的创建任务功能。

在一实施例中,可以通过判断该漏洞扫描任务的扫描状态和时间状态,可以确定该漏洞扫描任务是否为需要执行的漏洞扫描任务,例如,若该漏洞扫描任务的扫描状态为确认执行,且时间状态为时间相符,则可以确定该漏洞扫描任务为需要执行的漏洞扫描任务。具体地,参考图8,通过该漏洞扫描任务的扫描状态和时间状态可以确定该漏洞扫描任务是否为需要执行的漏洞扫描任务,也相应地实现了该示意图中的任务调度功能。

202、服务器根据漏洞扫描任务的任务信息将该漏洞扫描任务划分成至少一个子漏洞扫描任务,并将至少一个子漏洞扫描任务添加到第一消息队列中。

其中,在配置了扫描任务的任务信息、以及确定了需要执行的漏洞扫描任务后,服务器可以将该漏洞扫描任务划分成至少一个子漏洞扫描任务。例如,参考图7,可以利用任务同步引擎通过api接口从数据库中拉取漏洞扫描任务的任务信息,并且将基于该任务信息生成的至少一个子漏洞消息任务发送到基于redis实现的第一消息队列中。

在实际应用中,参考图7,若需要执行的漏洞扫描任务中包括大量的数据时,任务同步引擎可以采用分片拉取的方式从api接口中获得任务信息数据,避免单次请求的数据量过大。此外,还可以设置redis监控引擎,以实现在添加子漏洞扫描任务到第一消息队列时对第一消息队列的监控;设置数据库监控引擎,以实现从数据库中请求任务信息数据时对数据库的监控;设置任务同步监控引擎以实现对任务同步引擎的监控。

又如,参考图8,通过基于该漏洞扫描任务生成至少一个子漏洞扫描任务,并将生成的至少一个子扫描任务发送给到第一消息队列中,可以实现该示意图中的任务分发功能。

203、服务器基于第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署。

在一实施例中,参考图7,扫描节点可以包括执行引擎、配置同步引擎、心跳上报引擎及控制引擎等多个引擎。其中,可以通过执行引擎触发扫描节点执行获得的子漏洞扫描任务;通过配置同步引擎可以基于接收到的子漏洞扫描任务,为扫描节点同步执行漏洞扫描所需的配置;通过心跳上报引擎可以触发扫描节点主动地定期向扫描系统报告存活状态;可以通过控制引擎来控制扫描节点的启动、关闭、运行速率等。其中,对于至少一个分布式的扫描节点,均对每个扫描节点提供上述的引擎配置。例如,当接受到的扫描任务请求时,服务器可以基于该扫描任务请求来确定请求子漏洞扫描任务的扫描节点。进一步地,可以将第一消息队列中排列位置为预定位置的子漏洞扫描任务确定为待分配的目标子漏洞扫描任务。

204、服务器向扫描节点发送目标子漏洞扫描任务。

其中,在确定了分配给该扫描节点的目标子漏洞扫描任务后,服务器可以利用第一消息队列实现目标子漏洞扫描任务的发送。例如,参考图7,可以利用基于redis实现的第一消息队列,将目标子漏洞扫描任务发送到对应的扫描节点。

205、服务器通过扫描节点执行目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

其中,目标子漏洞扫描任务的任务信息中可以包括待扫描的终端扫描目标、以及待使用的扫描方式,参考图7,可以利用扫描节点中的执行引擎来执行漏洞扫描。

具体地,可以触发该执行引擎发送预设的检测数据到终端扫描目标,该终端扫描目标可以基于获得的扫描数据向扫描引擎发送返回数据,其中,该返回数据中可以包括漏洞的区别特征、扫描目标的服务版本、扫描目标执行无害化命令的结果,等等。扫描节点可以通过解析该返回数据来得到扫描结果。

例如,参考图8,通过扫描节点执行目标子漏洞扫描任务,也相应地实现了该示意图中的漏洞扫描功能。

206、服务器通过扫描节点发送扫描结果到第二消息队列。

其中,在扫描节点基于获得的目标子漏洞扫描任务执行完漏洞扫描后,可以作为消息生产者将扫描结果发送到第二消息队列。例如,参考图7,扫描节点可以将扫描结果发送到基于redis实现的第二消息队列中。

207、服务器基于第二消息队列中扫描结果的所属类别和排列位置,对相应的扫描结果进行汇总,得到漏洞扫描任务的扫描结果。

例如,若该扫描结果为报错日志或不存在漏洞,则该扫描结果属于待分析数据类别,服务器可以基于该扫描结果在第二消息队列中的排列位置,发送该扫描结果到日志分析系统;又如,若该扫描结果为存在漏洞,则该扫描结果属于待写入数据类别,服务器可以基于该扫描结果在第二消息队列中的排列位置,发送该扫描结果到漏洞数据库。

例如,参考图7,基于redis实现的第二消息队列可以根据扫描结果的排列位置,将至少一个扫描节点的扫描结果发送到存储单元。具体地,可以利用结果同步引擎,基于扫描结果的所属类别准确地将不同类别的扫描结果发送到数据库或日志分析系统。

又如,参考图8,利用第二消息队列执行扫描结果的发送,并且将扫描结果进行存储,可以实现该示意图中的结果存储功能。

在实际应用中,可以通过展示页面将该漏洞扫描任务的扫描结果进行展示,在一实施例中,参考图11,该扫描结果描述了目标ip为10.0.0.154下的6379端口和22端口的两处漏洞信息,其中,包括漏洞详情、任务名称、发现时间、状态、以及提供的操作信息。其中,参考图8,将该漏洞扫描任务的扫描结果进行可视化的展示,也相应地实现了该示意图中的结果展示功能。

由上可知,本申请实施例可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障导致整个任务的失败,从而进一步提高了漏洞扫描效率。

而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,因此使得漏洞扫描效率得到了更进一步的提升。

另外,提供了接口协助实现漏洞扫描过程中的数据读写,使得漏洞扫描系统可以不需要直接读写数据库,从而既实现了数据操作的解耦,又使得漏洞扫描的效率得到了提升。

为了更好地实施以上方法,相应的,本申请实施例还提供一种漏洞扫描装置,其中,该漏洞扫描装置可以集成在服务器或终端中。该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。

例如,如图12所示,该漏洞扫描装置可以包括第一确定单元301,划分单元302,第二确定单元303,第一发送单元304以及扫描单元305,如下:

第一确定单元301,用于确定需要执行的漏洞扫描任务;

划分单元302,用于根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;

第二确定单元303,用于基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;

第一发送单元304,用于向所述扫描节点发送所述目标子漏洞扫描任务;

扫描单元305,用于通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

在一实施例中,参考图13,所述第一确定单元301,包括:

配置子单元3011,用于配置所述漏洞扫描任务的任务信息;

扫描确定子单元3012,用于基于所述任务信息,确定所述漏洞扫描任务的扫描状态和时间状态;

任务确定子单元3013,用于根据所述扫描状态和所述时间状态,确定需要执行的漏洞扫描任务。

在一实施例中,参考图14,所述任务信息包括扫描目标和扫描插件;所述划分单元302,包括:

选择组合子单元3021,用于对所述漏洞扫描任务的扫描目标和所述扫描插件进行选择组合;

任务划分子单元3022,用于根据所述选择组合的结果对所述漏洞扫描任务进行划分;

任务获得子单元3023,用于基于所述划分的结果得到至少一个子漏洞扫描任务。

在一实施例中,参考图15,所述扫描节点呈分布式的部署;所述第二确定单元303,包括:

获取子单元3031,用于获取所述第一消息队列中各个子漏洞扫描任务的排列位置;

选择子单元3032,用于从所述第一消息队列中选择排列位置为预定位置的子漏洞扫描任务作为待分发的目标子漏洞扫描任务;

标志确定子单元3033,用于确定所述扫描节点的节点标志;

任务分配子单元3034,用于根据所述节点标志,确定所述待分发的目标子漏洞扫描任务为分配给扫描节点的目标子漏洞扫描任务。

在一实施例中,参考图16,所述扫描单元305,包括:

信息解析子单元3051,用于利用所述扫描节点解析所述目标子漏洞扫描任务的任务信息,确定待使用的扫描方式及待扫描的扫描目标;

扫描执行子单元3052,用于触发所述扫描节点基于所述扫描方式,对所述扫描目标执行漏洞扫描,生成所述漏洞扫描的扫描结果。

在一实施例中,所述扫描执行子单元3052,用于:

触发所述扫描节点根据所述扫描方式,确定待发送的检测数据;利用所述扫描节点发送所述待发送的检测数据到所述扫描目标,获得所述扫描目标返回的返回数据;通过所述扫描节点解析所述返回数据,获得所述漏洞扫描的扫描结果。

在一实施例中,参考图17,漏洞扫描装置还可以包括:

第二发送单元306,用于通过所述扫描节点发送所述扫描结果到第二消息队列;

汇总单元307,用于基于所述第二消息队列中扫描结果的所属类别和排列位置,对相应的扫描结果进行汇总,得到所述漏洞扫描任务的扫描结果。

在一实施例中,参考图18,所述汇总单元307,包括:

类别确定子单元3071,用于确定所述扫描结果的所属类别;

结果发送子单元3072,用于若所述扫描结果的所属类别为待写入数据,则根据所述排列位置发送所述扫描结果到漏洞数据库;若所述扫描结果的所属类别为待分析数据,则根据所述排列位置发送所述扫描结果到日志分析系统。

在一实施例中,所述类别确定子单元3071,用于:

解析所述扫描结果,得到所述扫描结果的漏洞属性;若所述扫描结果的漏洞属性为存在漏洞,则确定所述扫描结果的所属类别为待写入数据;若所述扫描结果的漏洞属性为报错日志或不存在漏洞,则确定所述扫描结果的所属类别为待分析数据。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由上可知,本实施例的漏洞扫描装置中第一确定单元301确定需要执行的漏洞扫描任务;由划分单元302根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;由第二确定单元303基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;由第一发送单元304向所述扫描节点发送所述目标子漏洞扫描任务;由扫描单元305通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

该方案可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障导致整个任务的失败,从而进一步提高了漏洞扫描效率;而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,因此使得漏洞扫描效率得到了更进一步的提升。

此外,本申请实施例还提供一种计算机设备,该计算机设备可以为服务器或终端等设备,如图19所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:

该计算机设备可以包括有一个或一个以上计算机可读存储介质的存储器401、输入单元402、显示单元403、包括有一个或者一个以上处理核心的处理器404、以及电源405等部件。本领域技术人员可以理解,图19中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

存储器401可用于存储软件程序以及模块,处理器404通过运行存储在存储器401的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器401可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器401还可以包括存储器控制器,以提供处理器404和输入单元402对存储器401的访问。

输入单元402可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元402可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器404,并能接收处理器404发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元402还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元403可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元403可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器404以确定触摸事件的类型,随后处理器404根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图19中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

处理器404是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器401内的软件程序和/或模块,以及调用存储在存储器401内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器404可包括一个或多个处理核心;优选的,处理器404可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器404中。

计算机设备还包括给各个部件供电的电源405(比如电池),优选的,电源可以通过电源管理系统与处理器404逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源405还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管未示出,终端还可以包括蓝牙模块等,在此不再赘述。具体在本实施例中,计算机设备中的处理器404会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器401中,并由处理器404来运行存储在存储器401中的应用程序,从而实现各种功能,如下:

确定需要执行的漏洞扫描任务;根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;向所述扫描节点发送所述目标子漏洞扫描任务;通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

由上可知,本实施例的计算机设备可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障导致整个任务的失败,从而进一步提高了漏洞扫描效率;而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,因此使得漏洞扫描效率得到了更进一步的提升。

在一实施例中,可以将执行该漏洞扫描方法得到的扫描结果储存在区块链中,如图20所示,该计算机设备可以为分布式系统500中的一个节点501,其中,该分布式系统可以为区块链系统,该区块链系统可以是由多个节点通过网络通信的形式连接形成的分布式系统,节点之间可以组成点对点(p2p,peertopeer)网络,任意形式的计算机设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点,其中,区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。

由以上可知,本实施例可以将需要执行的漏洞扫描任务拆分成至少一个子漏洞扫描任务,通过发送至少一个子漏洞扫描任务到至少一个扫描节点同时进行,提高了该任务的漏洞扫描效率,此外,可以避免因为单个扫描节点的故障导致整个任务的失败,从而进一步提高了漏洞扫描效率;而且,通过利用消息队列将漏洞扫描任务的检测数据分发到至少一个扫描节点进行发送,可以在面临海量数据时大大地减轻数据分发的压力,从而可以有效避免数据发送过程中出现的网络瓶颈问题,因此使得漏洞扫描效率得到了更进一步的提升。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种漏洞扫描方法中的步骤。例如,该指令可以执行如下步骤:

确定需要执行的漏洞扫描任务;根据所述漏洞扫描任务的任务信息将所述漏洞扫描任务划分成至少一个子漏洞扫描任务,并将所述至少一个子漏洞扫描任务添加到第一消息队列中;基于所述第一消息队列中子漏洞扫描任务的排列位置确定分配给扫描节点的目标子漏洞扫描任务,其中,所述扫描节点呈分布式的部署;向所述扫描节点发送所述目标子漏洞扫描任务;通过所述扫描节点执行所述目标子漏洞扫描任务,进行漏洞扫描得到扫描结果。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种漏洞扫描方法中的步骤,因此,可以实现本申请实施例所提供的任一种漏洞扫描方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种漏洞扫描方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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