一种基于POC脚本的分布式漏洞扫描方法及系统技术方案

技术编号:29401772 阅读:17 留言:0更新日期:2021-07-23 22:39
本申请实施例公开了一种基于POC脚本的分布式漏洞扫描方法,该方法包括:采用可扩展标记语言的脚本描述文档封装POC脚本,其中确定POC脚本返回值的验证方式;以及调用端口扫描目标信息进行资产识别和开放端口探测,获取存活资产和开放端口,对存活资产和开放端口进行拆分,获得资产/端口对并分配给POC脚本扫描器多线程并发扫描;以及基于资产/端口对和脚本信息,响应于确定POC脚本是否适用于目标资产/端口对,以及获取POC脚本执行的结果;还包括预先设置控制台,控制台获取用户下发的任务,任务配置有节点地址,响应于确定任务是本地扫描任务或远程任务,分布式部署、可以在不同网络之间发起扫描。

【技术实现步骤摘要】
一种基于POC脚本的分布式漏洞扫描方法及系统
本专利技术属于计算机
,具体涉及一种基于POC脚本的分布式漏洞扫描方法及系统。
技术介绍
现如今,随着信息技术的发展,互联网已经覆盖到人们生活、生产的方方面面,网络安全问题也随之凸显。虽然很多公共企事业单位部署了网络安全产品,并进行周期性的资产漏洞扫描和修复,但网络安全涉及技术面广、网络资产数量繁多、“0day”漏洞层出不穷,常规漏洞扫描存在准确度低、难以检测某些最新漏洞等问题,所以近年仍有曝出诸如“勒索软件”之类的重大网络安全事件。因此,利用“POC(Proofofconcept,指漏洞验证程序)”脚本扫描高危和最新漏洞,形成对常规漏洞扫描的补充,已经成为众多网络安全产品和团队常用技术方案。“RPC(RemoteProcessCall)”即远程过程调用,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,可实现分布式服务的通信功能。然而,目前业界利用POC脚本执行漏洞扫描的工具,大多仍存在以下问题:(1)框架基于Python(或其它单一编程语言)编写,并要求POC脚本也使用Python(或其它单一编程语言),对不熟悉该语言的技术人员来说使用门槛较高;(2)POC脚本需实现框架规定的方法,传参和返回都是固定格式,不能灵活调用;(3)POC脚本未限定操作系统或者端口等范围,执行批量扫描时脚本会在每个目标上都执行,效率偏低;(4)不支持分布式扫描,无法适应复杂网络环境。
技术实现思路
本申请的目的在于提出一种基于POC脚本的分布式漏洞扫描方法及系统,可实现灵活调用多种编程语言POC脚本,对脚本的参数和返回不做严格限制,限定脚本的使用范围以及多节点部署以实现分布式扫描,解决了上述
技术介绍
存在的问题。第一方面,本申请实施例提供了一种基于POC脚本的分布式漏洞扫描方法,该方法包括以下步骤:S100、采用可扩展标记语言的脚本描述文档封装POC脚本,其中确定POC脚本返回值的验证方式;以及S200、调用端口扫描目标信息进行资产识别和开放端口探测,获取存活资产和开放端口,对存活资产和开放端口进行拆分,获得资产/端口对并分配给POC脚本扫描器多线程并发扫描;以及S300、基于资产/端口对和脚本信息,响应于确定POC脚本是否适用于目标资产/端口对,以及获取POC脚本执行的结果。在一些实施例中,步骤S300具体包括S301、基于资产/端口对和述POC脚本的描述文档信息,POC脚本扫描器预先判断POC脚本是否适用于目标资产/端口对,若POC脚本适用于目标资产/端口对,则执行步骤S302,若POC脚本不适用于目标资产/端口对,则执行步骤S303;S302、基于POC脚本适用于目标资产/端口对,生成POC脚本调用命令,执行POC脚本调用命令并获取POC脚本执行的结果,基于POC脚本返回值的验证方式,确定POC脚本在资产/端口上是否存在漏洞,并保存结果;S303、基于POC脚本不适用于目标资产/端口对,将扫描结果设为不适用状态并保存结果,不执行后续的POC脚本扫描工作。通过该操作限定了脚本的使用范围,可以在扫描时避免无意义的脚本执行,从而提升扫描效率。在一些实施例中,在步骤S302中,使用正则表达式验证POC脚本返回值,响应于确定POC脚本执行结果是否匹配正则表达式,基于确定匹配正则表达式,确定资产/端口对上存在漏洞。通过该方式检测扫描目标是否存在漏洞,进而提高扫描效率。在一些实施例中,该方法还包括以下步骤:S401、预先设置控制台,控制台获取用户下发的任务,任务配置有节点地址,响应于确定任务是本地扫描任务或远程任务,若任务是本地扫描任务,则执行步骤S402,若任务是远程任务,则执行步骤S403;S402、基于任务是本地扫描任务,调用本地POC脚本扫描器执行POC脚本扫描工作;S403、基于任务是远程任务,控制台根据任务配置的节点地址,发起远程过程调用请求,将任务的信息发送至远程节点,远程节点接收任务请求后,调用端口解析扫描目标信息,并调用远程节点自带的POC脚本扫描器,执行POC脚本扫描工作。通过多节点部署可支持分布式扫描,以适应复杂的网络环境。在一些实施例中,控制台发起远程过程调用请求后,每间隔一段时间至远程节点请求远程任务的扫描节点,并将结果保存至本地。新开线程,可以在不同网络之间发起扫描,适应不同网络环境。在一些实施例中,在采用可扩展标记语言的脚本描述文档封装POC脚本这一步骤中采用的描述文档包括以下关键元素:脚本(script),脚本包括标识当前文档的唯一属性标识(id)、确定所述POC脚本使用的编程语言(language)和确定POC脚本相对于当前文档的路径(path);漏洞(vulnerability),节点内容是所述漏洞的唯一属性标识,并关联数据库中的漏洞;有效验证性(validation),有效验证性确定POC脚本返回值的验证方式;范围(scope),范围确定POC脚本可以适用的范围;不定长参数(params),不定长参数确定POC脚本需要的参数及其取值源和顺序。通过该关键元素,可以灵活的定义POC脚本的语言、关联漏洞、结果验证方式、参数的顺序和返回类型以及限定脚本的使用范围,批量扫描时POC脚本无需在每个扫描目标上都执行,提高扫描效率。在一些实施例中,不定长参数包括参数(arg),参数的节点为命令属性,表示参数的顺序;取值源(source),取值源的属性值为地址,表示参数从扫描目标的地址中取值;取值源属性值为端口,表示参数从扫描目标的端口中取值;模板(template),模板的节点采用占位符的方式,对传入参数节点定义的参数进行格式化,生成正确的调用参数字符串。通过该操作以获得正确的调用参数字符串,便于下一步的调用端口扫描目标信息进行资产识别和开放端口探测。第二方面,本申请提供了一种基于POC脚本的分布式漏洞扫描系统,该系统包括:封装模块,封装模块被配置用以采用可扩展标记语言的描述文档封装POC脚本,其中确定POC脚本返回值的验证方式;以及识别探测模块,识别探测模块被配置用以调用端口扫描目标信息进行资产识别和开放端口探测,获取存活资产和开放端口,对存活资产和开放端口进行拆分,获得资产/端口对并分配给POC脚本扫描器多线程并发扫描;以及判断模块,判断模块被配置用以基于资产/端口对和脚本信息,响应于确定POC脚本是否适用于目标资产/端口对,以及获取POC脚本执行的结果。在一些实施例中,该系统还包括:分布扫描模块,分布扫描模块被配置用以预先设置控制台,控制台获取用户下发的任务,任务配置有节点地址,响应于确定任务是本地扫描任务或远程任务;以及本地扫描模块,本地扫描模块被配置用以基于任务是本地扫描任务,调用本地POC脚本扫描器执行POC脚本扫描工作;以及远程扫描模块,远程扫描模块被配置用以基于本文档来自技高网
...

【技术保护点】
1.一种基于POC脚本的分布式漏洞扫描方法,其特征在于,所述方法包括以下步骤:/nS100、采用可扩展标记语言的脚本描述文档封装POC脚本,其中确定POC脚本返回值的验证方式;以及/nS200、调用端口扫描目标信息进行资产识别和开放端口探测,获取存活资产和开放端口,对所述存活资产和开放端口进行拆分,获得资产/端口对并分配给POC脚本扫描器多线程并发扫描;以及/nS300、基于所述资产/端口对和所述脚本信息,响应于确定所述POC脚本是否适用于目标资产/端口对,以及获取POC脚本执行的结果。/n

【技术特征摘要】
1.一种基于POC脚本的分布式漏洞扫描方法,其特征在于,所述方法包括以下步骤:
S100、采用可扩展标记语言的脚本描述文档封装POC脚本,其中确定POC脚本返回值的验证方式;以及
S200、调用端口扫描目标信息进行资产识别和开放端口探测,获取存活资产和开放端口,对所述存活资产和开放端口进行拆分,获得资产/端口对并分配给POC脚本扫描器多线程并发扫描;以及
S300、基于所述资产/端口对和所述脚本信息,响应于确定所述POC脚本是否适用于目标资产/端口对,以及获取POC脚本执行的结果。


2.根据权利要求1所述的一种基于POC脚本的分布式漏洞扫描方法,其特征在于,步骤S300具体包括:
S301、基于所述资产/端口对和所述POC脚本的描述文档信息,所述POC脚本扫描器预先判断所述POC脚本是否适用于所述目标资产/端口对,若所述POC脚本适用于所述目标资产/端口对,则执行步骤S302,若所述POC脚本不适用于所述目标资产/端口对,则执行步骤S303;
S302、基于所述POC脚本适用于所述目标资产/端口对,生成POC脚本调用命令,执行所述POC脚本调用命令并获取所述POC脚本执行的结果,基于所述POC脚本返回值的验证方式,确定所述POC脚本在所述资产/端口上是否存在漏洞,并保存结果;
S303、基于所述POC脚本不适用于所述目标资产/端口对,将扫描结果设为不适用状态并保存结果,不执行后续的所述POC脚本扫描工作。


3.根据权利要求2所述的一种基于POC脚本的分布式漏洞扫描方法,其特征在于,在步骤S302中,使用正则表达式验证POC脚本返回值,响应于确定所述POC脚本执行结果是否匹配所述正则表达式,基于确定匹配所述正则表达式,确定所述资产/端口对上存在漏洞。


4.根据权利要求1所述的一种基于POC脚本的分布式漏洞扫描方法,其特征在于,还包括以下步骤:
S401、预先设置控制台,所述控制台获取用户下发的任务,所述任务配置有节点地址,响应于确定所述任务是本地扫描任务或远程任务,若所述任务是本地扫描任务,则执行步骤S402,若所述任务是远程任务,则执行步骤S403;
S402、基于所述任务是本地扫描任务,调用本地POC脚本扫描器执行所述POC脚本扫描工作;
S403、基于所述任务是远程任务,所述控制台根据所述任务配置的节点地址,发起远程过程调用请求,将所述任务的信息发送至远程节点,所述远程节点接收所述任务请求后,调用端口解析扫描所述目标信息,并调用所述远程节点自带的POC脚本扫描器,执行所述POC脚本扫描工作。


5.根据权利要求4所述的一种基于POC脚本的分布式漏洞扫描方法,其特征在于,所述控制台发起远程过程调用请求后,每间隔一段时间至所述远程节点请求所述远程任务的扫描节点,并将结果保存至本地。


6.根据权利要求1所述的一种基于POC脚本的分布式漏洞扫描方法,其特征在于,在所述采用可扩...

【专利技术属性】
技术研发人员:贾玉彬
申请(专利权)人:上海碳泽信息科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1