CN113609491B - 一种基于消息队列的插件式漏洞自动化扫描方法 - Google Patents
一种基于消息队列的插件式漏洞自动化扫描方法 Download PDFInfo
- Publication number
- CN113609491B CN113609491B CN202110879554.3A CN202110879554A CN113609491B CN 113609491 B CN113609491 B CN 113609491B CN 202110879554 A CN202110879554 A CN 202110879554A CN 113609491 B CN113609491 B CN 113609491B
- Authority
- CN
- China
- Prior art keywords
- scanning
- plug
- task
- vulnerability
- vulnerability scanning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000001514 detection method Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 18
- 238000012360 testing method Methods 0.000 claims description 17
- 239000012190 activator Substances 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 3
- 150000001875 compounds Chemical class 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 8
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000009471 action Effects 0.000 description 15
- 238000012795 verification Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 241000282326 Felis catus Species 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012917 library technology Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- UQGKUQLKSCSZGY-UHFFFAOYSA-N Olmesartan medoxomil Chemical compound C=1C=C(C=2C(=CC=CC=2)C2=NNN=N2)C=CC=1CN1C(CCC)=NC(C(C)(C)O)=C1C(=O)OCC=1OC(=O)OC=1C UQGKUQLKSCSZGY-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种基于消息队列的插件式漏洞自动化扫描方法,包括以下步骤:步骤1,创建漏洞扫描任务管理程序,并载入任务配置信息;步骤2,漏洞扫描任务管理程序创建漏洞扫描任务,漏洞扫描任务执行完成后,输出漏洞扫描报告。本发明在漏洞扫描任务、漏洞扫描结果的处理过程中引入了消息队列和插件式开发技术,能够有效提高漏洞扫描任务的处理能力。
Description
技术领域
本发明涉及网络信息安全漏洞自动化扫描的方法,特别涉及一种基于消息队列的插件式漏洞自动化扫描方法。
背景技术
安全漏洞扫描技术是一类重要的网络安全技术,是企业内部网络信息安全管理必不可少的工具之一,与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。目前市面上的漏洞扫描工具大部分是基于开源的漏洞扫描软件进行二次开发而来,开源漏洞扫描软件有OpenVas、Tripwire IP360、Nessus等,这类开源漏洞扫描软件大部分都是针对软件的版本信息通过静态脚本文件进行扫描,采用静态脚本文件的方式实现漏洞扫描,可以在不重启漏洞扫描软件的情况下扩展漏洞扫描插件,但是由于静态脚本文件运行效率较低,导致了漏洞扫描软件运行效率低,扫描周期长。
发明内容
发明目的:为解决背景技术中存在的技术问题,本发明提出一种基于消息队列的插件式漏洞自动化扫描方法,包括以下步骤:
包括以下步骤:
步骤1,创建漏洞扫描任务管理程序,并载入任务配置信息;
步骤2,漏洞扫描任务管理程序创建漏洞扫描任务,漏洞扫描任务执行完成后,输出漏洞扫描报告。
步骤1中,所述漏洞扫描任务管理程序能够根据任务配置信息创建漏洞扫描任务;
所述漏洞扫描任务是一个五元组<id,taskName,taskPlan,taskPar,taskCreateTime>,其中id是漏洞扫描任务的唯一标识;taskName表示漏洞扫描任务的名称;taskPlan表示漏洞扫描任务的执行计划;taskPar表示漏洞扫描任务的配置参数;taskCreateTime表示漏洞扫描任务的创建时间.
步骤1中,所述任务配置信息包括扫描策略、目标互联网协议地址或互联网协议地址段,当漏洞扫描任务管理程序创建漏洞扫描任务时会将任务配置信息中的基本配置参数(即扫描策略、目标互联网协议地址或互联网协议地址段)载入到taskPar中。
步骤2包括:
步骤2-1,创建漏洞扫描任务队列、漏洞扫描结果队列;
步骤2-2,创建队列消费服务,所述队列消费服务包括扫描任务消费服务、扫描结果消费服务;
步骤2-3,创建扫描插件宿主程序;
步骤2-4,定义宿主程序与扫描插件之间的接口规范;
步骤2-5,按照步骤2-4中的接口规范建立网络资产扫描插件和漏洞扫描插件;
步骤2-6,漏洞扫描任务管理程序根据载入的任务配置信息创建漏洞扫描任务,推送到漏洞扫描任务队列;
步骤2-7,扫描任务消费服务从漏洞扫描任务队列中取出漏洞扫描任务信息,根据漏洞扫描任务信息创建扫描任务执行线程;
步骤2-8,扫描任务执行线程调用网络资产扫描插件,对目标地址进行扫描,获取网络资产属性和版本信息;
步骤2-9,根据网络资产的属性和版本信息调用漏洞扫描插件进行漏洞扫描;
步骤2-10,扫描任务执行线程完成后,获取扫描结果数据,推送到漏洞扫描结果队列;
步骤2-11,扫描结果消费服务从漏洞扫描结果队列中取出漏洞扫描结果数据,推送给扫描结果解析服务;
步骤2-12,扫描结果解析服务对漏洞扫描结果数据进行解析,输出漏洞扫描报告。
步骤2-1中,漏洞扫描任务队列记为ScanTaskQueue,用于存放步骤1中漏洞扫描任务管理程序创建的漏洞扫描任务;漏洞扫描结果队列记为ScanResultQueue,用于存放扫描任务执行线程返回的漏洞扫描结果数据。
步骤2-2中,所述扫描任务消费服务记为ScanTaskConsumeService,所述扫描结果消费服务记为ScanResultConsumeService,其中,所述扫描任务消费服务ScanTaskConsumeService监听漏洞扫描任务队列ScanTaskQueue,当漏洞扫描任务队列ScanTaskQueue中存在扫描任务时取出任务数据进行处理,根据任务的属性创建扫描任务执行线程,包含:
(1)根据任务的执行计划,可以创建周期性的扫描任务执行线程,比如创建的扫描任务为每天的某个时间点,则创建的扫描任务在每天的固定时间点执行。
(2)扫描任务类型分为资产探测和漏洞扫描。通过输入目标互联网协议地址或互联网协议地址段信息创建扫描任务执行线程,其中资产探测主要针对资产的存活情况,端口开发情况,资产所运行的服务情况进行探测,漏洞扫描在资产探测的基础上对资产的漏洞情况进行扫描。
所述扫描结果消费服务ScanResultConsumeService监听漏洞扫描结果队列ScanResultQueue,扫描结果解析服务ScanResultAnalysisService,当漏洞扫描结果队列ScanResultQueue中存在漏洞扫描结果时取出漏洞扫描结果数据,推送给扫描结果解析服务ScanResultAnalysisService进行扫描结果数据的解析。
步骤2-3中,所述扫描插件宿主程序包含如下功能:
注册插件:在扫描插件宿主程序中注册扫描插件,定位插件的执行路径;
反注册插件:对于不再使用的扫描插件,能够在扫描插件宿主程序中对插件进行反注册,从扫描插件宿主程序中删除插件;
插件测试:对于在扫描插件宿主程序中进行注册的插件,扫描插件宿主程序能够对插件进行测试,从而判断插件程序是否能够正常运行,对于通过测试的插件能够进行启用操作,对于未通过测试的插件则无法进行启用操作;
启用插件:启用已经注册并通过测试的插件;
停用插件:当不再使用一个正在运行的插件时,能够停用正在运行的插件;
更新插件:对于发生了功能变更的插件,能够对插件的信息进行更新。
步骤2-4中,所述接口规范采用抽象接口的方式来实现,包括bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,其中bundle为注册服务接口,start和end为捆绑激活器接口,plier为服务对象抽象类,regist为注册对象接口,invok为调用服务实例的抽象类,track为服务跟踪实例的抽象类,createObject为动态链接库扫描接口,实现动态链接库插件的扫描。
步骤2-5中,按照步骤2-4中的接口规范编写网络资产扫描插件和漏洞扫描插件,网络资产扫描插件和漏洞扫描插件用动态链接库技术来实现。
步骤2-8中,网络资产扫描插件对目标地址进行扫描的具体过程包括:
步骤2-8-1,主机发现:通过发送不同类型的数据探测包到目标主机,以得到的结果来判断目标主机是否处于开启状态;
步骤2-8-2,端口扫描:通过脚本扫描所有可能开放的端口,并确定端口的开闭状态和屏蔽状态;
步骤2-8-3,应用程序与版本侦测:对端口扫描的开放端口进行建立连接,接收目标主机发送的信息,通过脚本对接收到的信息进行签名对比,查找对应应用程序的名字、资产属性和版本信息;
步骤2-8-4,操作系统侦测:将已知系统进行唯一身份标识匹配,建立已知系统的样本库;通过脚本向端口扫描得到的端口发送数据包,根据数据包返回的数据生成一个身份标识,然后用生成的身份标识在样本库中进行比对,返回对应的操作系统,如果无法得到准确的操作系统,则返回出可能的操作系统。
本发明将消息队列和插件式开发框架应用在漏洞扫描技术中,提供了一种基于消息队列的插件式漏洞自动化扫描方法。与现有技术相比,具有的有益效果是:
(1)本发明在漏洞扫描任务、漏洞扫描结果的处理过程中引入了消息队列技术,能够有效提高漏洞扫描任务的处理能力。
(2)本发明引入了插件式开发框架,用动态链接库技术实现漏洞扫描插件,既实现了漏洞扫描插件的动态扩展,也克服了开源漏洞扫描软件使用静态脚本文件进行漏洞扫描效率低的问题。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,使本发明的上述优点和其他方面的优点将会变得更加清楚。
图1是本发明基于消息队列的插件式漏洞自动化扫描方法的实现过程。
图2是宿主程序管理扫描插件的流程图。
具体实施方式
图1为基于消息队列的插件式漏洞自动化扫描方法的实现过程,首先漏洞扫描任务管理程序加载任务配置信息,创建漏洞扫描任务并推送到漏洞扫描任务队列中,扫描任务消费服务监听漏洞扫描任务队列,当漏洞扫描任务队列中有任务信息时则取出漏洞扫描任务,针对任务的具体配置参数创建扫描任务执行线程,扫描任务执行线程根据任务配置信息调用扫描插件,扫描插件主要包括网络资产扫描和漏洞扫描两类插件,其中网络资产扫描插件针对目标地址探测操作系统、中间件及应用软件的类型及版本号,漏洞扫描根据资产探测的结果进行漏洞扫描,扫描任务执行线程完成后将扫描结果推送至漏洞扫描结果队列中,漏洞扫描结果消费服务监听漏洞扫描结果队列,当队列中有漏洞扫描结果时则取出漏洞扫描结果推送给扫描结果解析服务,扫描结果解析服务对漏洞扫描结果进行解析,输出漏洞扫描报告信息。
步骤1,创建漏洞扫描任务管理程序,并载入任务配置信息。
漏洞扫描任务管理程序根据任务配置信息创建漏洞扫描任务ScanTask。ScanTask扫描任务是一个五元组<id,taskName,taskPlan,taskPar,taskCreateTime>,其中id是该漏洞扫描任务的唯一标识;taskName表示漏洞扫描任务的名称;taskPlan表示漏洞扫描任务的执行计划;taskPar表示漏洞扫描任务的配置参数;taskCreateTime表示漏洞扫描任务的创建时间。
任务配置信息主要包括扫描策略、目标互联网协议地址或互联网协议地址段等相关信息,当漏洞扫描任务管理程序创建漏洞扫描任务时会将任务配置信息中的基本配置参数载入到taskPar中。如表1所示。
表1
模块作用 | 扫描任务对象 |
模块特点 | 实体 |
类名(对象名) | ScanTask |
数据成员 | id,taskName,taskPlan,taskPar,taskCreateTime |
步骤2,创建漏洞扫描任务队列、漏洞扫描结果队列;创建漏洞扫描任务队列ScanTaskQueue,用于存放步骤1中漏洞扫描任务管理程序创建的漏洞扫描任务;创建漏洞扫描结果队列ScanResultQueue,用于存放扫描任务执行线程返回的漏洞扫描结果数据;扫描任务队列ScanTaskQueue和扫描结果队列ScanResultQueue主要接口有push接口,用于添加任务pop接口,用于从任务队列获取任务。如表2所示。
表2
步骤3,创建消费服务,创建队列消费服务,包括扫描任务消费服务、扫描结果消费服务;创建扫描任务消费服务ScanTaskConsumeService和扫描结果消费服务ScanResultConsumeService,其中扫描任务消费服务ScanTaskConsumeService监听漏洞扫描任务队列ScanTaskQueue,当队列中存在扫描任务时取出任务数据进行处理,根据任务的属性创建扫描任务执行线程。扫描结果消费服务ScanResultConsumeService监听漏洞扫描结果队列ScanResultQueue,当队列中存在漏洞扫描结果时取出漏洞扫描结果数据,推送给扫描结果解析服务进行扫描结果数据的解析。如表3、表4所示。
表3
模块作用 | 用于监听漏洞扫描任务队列 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | ScanTaskConsumeService |
主要接口 | virtual bool monitor(ScanTaskQueue queue)=0; |
参数 | ScanTaskQueue类型,漏洞扫描任务队列 |
返回值 | 布尔类型,类所实现的方法操作结果。 |
表4
模块作用 | 用于监听漏洞扫描结果队列 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | ScanResultConsumeService |
主要接口 | virtual bool monitor(ScanResultQueue queue)=0; |
参数 | ScanResultQueue类型,漏洞扫描结果队列 |
返回值 | 布尔类型,类所实现的方法操作结果。 |
步骤4,创建扫描插件宿主程序;
扫描插件宿主程序包含功能如下:
(1)注册插件:在宿主程序中注册扫描插件,定位插件的执行路径;
(2)反注册插件:对于不再使用的扫描插件,可以在宿主程序对插件进行反注册,从宿主程序中删除插件;
(3)插件测试:对于在宿主程序中进行注册的插件,宿主程序可以对插件进行测试,从而判断插件程序是否能够正常运行,对于通过测试的插件可以进行启用操作,对于未通过测试的插件则无法进行启用操作。
(4)启用插件:启用已经注册并通过测试的插件;
(5)停用插件:当不再使用某个正在运行的插件时,可停用正在运行的插件。
(6)更新插件:对于发生了功能变更的插件,可对插件的信息进行更新;
步骤5,定义宿主程序与扫描插件之间的接口规范;扫描插件能够被宿主程序识别,并在宿主环境中运行,需要定义一套宿主程序与扫描插件之间的接口规范,接口规范采用抽象接口的方式来实现,包括bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,其中bundle为注册服务接口,start和end为捆绑激活器接口,plier为服务对象抽象类,regist为注册对象接口,invok为调用服务实例的抽象类,track为服务跟踪实例的抽象类,createObject为动态链接库扫描接口,实现动态链接库插件的扫描。
(1)插件注册服务接口如表5所示:
表5
模块作用 | 注册服务接口 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | IPlugUnitBundleContext |
主要接口 | virtual String bundle(String ClassName)=0; |
参数 | String类型,当前类的类名 |
返回值 | String类型,类所实现的方法操作结果。 |
(2)插件捆绑激活器接口如表6所示:
表6
(3)服务对象类如表7所示:
表7
模块作用 | 服务对象类 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | MultiplierImpl |
主要接口 | virtual String plier(String ClassName)=0; |
参数 | String类型,当前类的类名 |
返回值 | String类型,类所实现的方法操作结果。 |
(4)注册对象接口如表8所示:
表8
模块作用 | 注册对象接口 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | IServiceRegistration |
主要接口 | virtual String regist(String ClassName)=0; |
参数 | String类型,当前类的类名 |
返回值 | String类型,类所实现的方法操作结果。 |
(5)调用服务实例类如表9所示:
表9
模块作用 | 调用服务实例类 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | RegisterPlugUnitService |
主要接口 | virtual String invok(String ClassName)=0; |
参数 | String类型,当前类的类名 |
返回值 | String类型,类所实现的方法操作结果。 |
(6)创建服务跟踪类如表10所示:
表10
模块作用 | 创建服务跟踪类 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | PlugUnitServiceTracker |
主要接口 | virtual String track(IPlugUnitBundleContext context)=0; |
参数 | IPlugUnitBundleContext类型,插件上下文 |
返回值 | String类型,类所实现的方法操作结果。 |
(7)跟踪服务接口如表11所示:
表11
(8)动态链接库扫描接口如表12所示:
表12
模块作用 | 动态链接库扫描接口 |
模块特点 | 抽象类,用于被继承 |
类名(对象名) | ObjectCreator |
主要接口 | virtual IPlugUnitBundleActivator createObject()=0; |
参数 | 无参数 |
返回值 | IPlugUnitBundleActivator类型,捆绑激活器对象。 |
步骤6,按照步骤5中的接口规范编写网络资产扫描插件和漏洞扫描插件;扫描插件需要实现步骤5中的抽象接口,扫描插件用动态链接库技术来实现,动态链接库(DLL)是一定功能的可执行软件模块,本身不能独立运行,只能输出变量、函数或者类,通过其他能独立运行的程序(宿主程序)调用其内部的功能。基于动态链接库及宿主程序的方式实现插件式开发框架,在插件式开发框架的基础上编写漏洞扫描的插件,插件是按照一定规约编写的。
插件式开发框架包含中央管理组件,用于保存有关已注册服务和服务侦听器的所有信息。以公共对象请求代理体系结构作为通信层,可远程调用服务对象。框架包含接口定义语言文件。插件接口为实现远程调用,需要在接口定义语言文件中定义服务接口,服务接口必须从基础接口继承。在接口定义语言文件中定义服务接口之后,由编译器生成特定于语言的代码,在指定目录生成一个可执行文件,并生成指定后缀的文件(.h后缀文件和.cpp后缀文件)。生成的代码封装了通信的细节。插件式开发框架的实现步骤包括:
(1)实现IPlugUnitBundleActivator接口,所述IPlugUnitBundleActivator接口提供了开始方法和结束方法。使用宏指令来实现注册捆绑激活器类的类型和名称。
(2)实现IPlugUnitBundleContext接口用于注册服务。IPlugUnitBundleActivator接口提供的开始方法和结束方法以IPlugUnitBundleContext为参数类型。MultiplierImpl(服务对象类)和IServiceRegistration(注册对象类)的成员变量在文件头中定义每个服务实例。在开始方法中设置服务实例的属性并创建服务对象,服务对象通过RegisterPlugUnitService类进行注册。
(3)用PlugUnitServiceTracker类创建服务跟踪,实现IPlugUnitServiceTracker接口用于跟踪服务。该PlugUnitServiceTracker类实现了如何创建和使用服务跟踪对象来查找已注册的服务。并封装了远程服务的特征(服务名称、属性、对服务对象的引用),用于服务跟踪。
(4)应用动态链接库(DLL)技术,创建动态链接库。本链接库使用了隐式链接。首先通过创建动态链接库并整合入项目中。动态链接库包括的函数过程有:打开动态库文件;查看动态库使用过程中的错误;获取动态库中的函数指针;调用动态库函数;关闭动态库句柄资源。最后调用动态链接库实现扫描插件。ObjectCreator类实现了createObject方法,用于返回已加载包的包激活器实例IPlugUnitBundleActivator。
步骤7,漏洞扫描任务管理程序根据载入的任务配置信息创建漏洞扫描任务,推送到漏洞扫描任务队列;
步骤8,扫描任务消费服务从漏洞扫描任务队列中取出漏洞扫描任务信息,根据漏洞扫描任务信息创建任务执行线程;
步骤9,扫描任务执行线程调用网络资产扫描插件,对目标地址进行扫描,获取网络资产属性、版本等基础信息;
网络资产扫描插件扫描过程包括:主机发现、端口扫描、应用程序与版本侦测、操作系统侦测。
(1)主机发现:通过发送不同类型的数据探测包到目标主机,以得到的结果来判断目标主机是否处于开启状态。
(2)端口扫描:通过脚本扫描所有可能开放的端口。并确定端口的开闭状态和屏蔽状态。
(3)应用程序与版本侦测:对端口扫描的开放端口进行建立连接,接收目标主机发送的信息,通过脚本对接收到的信息进行签名对比,查找对应应用程序的名字以及资产属性和版本信息。
(4)操作系统侦测:将已知系统进行唯一身份标识匹配,建立已知系统的样本库。通过脚本向端口扫描得到的端口发送数据包。根据数据包返回的数据生成一个身份标识。然后用生成的身份标识在样本库中进行比对。返回对应的操作系统,如果无法得到准确的操作系统,则返回出可能的操作系统。
例子:进行测试资产172.16.121.10扫描。
1、构造请求包。包含信息如下表13所示:
表13
2、主机发现,如表14所示。
表14
3、端口扫描,如表15所示。
表15
4、应用程序与版本侦测,如表16所示。
表16
5、操作系统侦测,如表17所示。
表17
6、构造扫描结果,如表18所示。
表18
/>
步骤10,根据网络资产的属性、版本等信息调用漏洞扫描插件进行漏洞扫描;
漏洞扫描插件扫描需要在项目初始建立漏洞脚本探测库。当得到资产扫描的结果信息后,根据资产标识类别,通过插件调用对应的漏洞脚本。得到脚本运行的响应结果。
漏洞扫描过程分为来源分析,漏洞检测,结果生成三部分:如表19、表20、表21所示。
表19
第一部分 | 来源分析 |
模块作用 | 整个漏洞检测的入口,对来源进行分析处理。 |
入口分类 | 被动代理、爬虫、URL、原始请求文件 |
表20
第二部分 | 漏洞检测 |
模块作用 | 用于处理第一部分产生的标准化的请求。 |
主要脚本 | config.py、scan_tasks.py、worker.sh、scheduler.py |
表21
第三部分 | 结果生成 |
模块作用 | 用于生成漏洞扫描和运行时的状态以及产出物。 |
输出结果类型 | JSON数据集合 |
例子:幽灵猫漏洞扫描。
根据资产扫描出的结果进行幽灵猫漏洞扫描。
首先定义Tomcat_AJP_Verification类,此类是幽灵猫漏洞扫描执行类。
1、首先通过资产信息构造对象,对象包含:目标地址,端口,目标服务器配置文件地址。
2、初始化构造默认包头,包体。包含内容如下表22所示:
表22
3、装配连接。通过装配函数进行连接,如表23所示。
表23
函数作用 | 连接目标地址 |
函数名称 | start_socket |
参数 | 目标地址和端口 |
返回值 | 无 |
示例 | start_socket(172.16.121.10,80),传入参数后执行。进行连接。 |
4、通过构造验证性测试消息,进行包头,包体的验证,调用脚本,得到AjpMessage(用于web服务器和服务器之间通信的单个数据包)对象,如表24、表25所示。
表24
表25
函数作用 | 验证 |
函数名称 | verification |
参数 | 包头和包体 |
返回值 | Boolean,函数操作的结果 |
示例 | Verification(headers,body),得到结果true。 |
5、得到结果,构造输出结果JSON数据集合,如表26所示。
表26
步骤11,扫描任务执行线程完成后,获取扫描结果数据封装到数据结果对象ScanResult,推送到漏洞扫描结果队列,如表27所示;
表27
模块作用 | 扫描结果数据对象 |
模块特点 | 实体 |
类名(对象名) | ScanResult |
数据成员 | Map集合 |
步骤12,扫描结果消费服务从漏洞扫描结果队列中取出漏洞扫描结果数据,推送给扫描结果解析服务;
步骤13,扫描结果解析服务对漏洞扫描结果数据进行解析,输出漏洞扫描报告。
本发明提供了一种基于消息队列的插件式漏洞自动化扫描方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (7)
1.一种基于消息队列的插件式漏洞自动化扫描方法,其特征在于,包括以下步骤:
步骤1,创建漏洞扫描任务管理程序,并载入任务配置信息;
步骤2,漏洞扫描任务管理程序创建漏洞扫描任务,漏洞扫描任务执行完成后,输出漏洞扫描报告;
步骤1中,所述漏洞扫描任务管理程序能够根据任务配置信息创建漏洞扫描任务;
所述漏洞扫描任务是一个五元组<id,taskName,taskPlan,taskPar,taskCreateTime>,其中id是漏洞扫描任务的唯一标识;taskName表示漏洞扫描任务的名称;taskPlan表示漏洞扫描任务的执行计划;taskPar表示漏洞扫描任务的配置参数;taskCreateTime表示漏洞扫描任务的创建时间;
步骤1中,所述任务配置信息包括扫描策略、目标互联网协议地址或互联网协议地址段,当漏洞扫描任务管理程序创建漏洞扫描任务时会将任务配置信息中的基本配置参数载入到taskPar中;
步骤2包括:
步骤2-1,创建漏洞扫描任务队列、漏洞扫描结果队列;
步骤2-2,创建队列消费服务,所述队列消费服务包括扫描任务消费服务、扫描结果消费服务;
步骤2-3,创建扫描插件宿主程序;
步骤2-4,定义宿主程序与扫描插件之间的接口规范;
步骤2-5,按照步骤2-4中的接口规范建立网络资产扫描插件和漏洞扫描插件;
步骤2-6,漏洞扫描任务管理程序根据载入的任务配置信息创建漏洞扫描任务,推送到漏洞扫描任务队列;
步骤2-7,扫描任务消费服务从漏洞扫描任务队列中取出漏洞扫描任务信息,根据漏洞扫描任务信息创建扫描任务执行线程;
步骤2-8,扫描任务执行线程调用网络资产扫描插件,对目标地址进行扫描,获取网络资产属性和版本信息;
步骤2-9,根据网络资产的属性和版本信息调用漏洞扫描插件进行漏洞扫描;
步骤2-10,扫描任务执行线程完成后,获取扫描结果数据,推送到漏洞扫描结果队列;
步骤2-11,扫描结果消费服务从漏洞扫描结果队列中取出漏洞扫描结果数据,推送给扫描结果解析服务;
步骤2-12,扫描结果解析服务对漏洞扫描结果数据进行解析,输出漏洞扫描报告。
2.如权利要求1所述的方法,其特征在于,步骤2-1中,漏洞扫描任务队列记为ScanTaskQueue,用于存放步骤1中漏洞扫描任务管理程序创建的漏洞扫描任务;漏洞扫描结果队列记为ScanResultQueue,用于存放扫描任务执行线程返回的漏洞扫描结果数据。
3.如权利要求2所述的方法,其特征在于,步骤2-2中,所述扫描任务消费服务记为ScanTaskConsumeService,所述扫描结果消费服务记为ScanResultConsumeService,其中,所述扫描任务消费服务ScanTaskConsumeService监听漏洞扫描任务队列ScanTaskQueue,当漏洞扫描任务队列ScanTaskQueue中存在扫描任务时取出任务数据进行处理,根据任务的属性创建扫描任务执行线程;
所述扫描结果消费服务ScanResultConsumeService监听漏洞扫描结果队列ScanResultQueue,扫描结果解析服务ScanResultAnalysisService,当漏洞扫描结果队列ScanResultQueue中存在漏洞扫描结果时取出漏洞扫描结果数据,推送给扫描结果解析服务ScanResultAnalysisService进行扫描结果数据的解析。
4.如权利要求3所述的方法,其特征在于,步骤2-3中,所述扫描插件宿主程序包含如下功能:
注册插件:在扫描插件宿主程序中注册扫描插件,定位插件的执行路径;
反注册插件:对于不再使用的扫描插件,能够在扫描插件宿主程序中对插件进行反注册,从扫描插件宿主程序中删除插件;
插件测试:对于在扫描插件宿主程序中进行注册的插件,扫描插件宿主程序能够对插件进行测试,从而判断插件程序是否能够正常运行,对于通过测试的插件能够进行启用操作,对于未通过测试的插件则无法进行启用操作;
启用插件:启用已经注册并通过测试的插件;
停用插件:当不再使用一个正在运行的插件时,能够停用正在运行的插件;
更新插件:对于发生了功能变更的插件,能够对插件的信息进行更新。
5.如权利要求4所述的方法,其特征在于,步骤2-4中,所述接口规范采用抽象接口的方式来实现,包括bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,其中bundle为注册服务接口,start和end为捆绑激活器接口,plier为服务对象抽象类,regist为注册对象接口,invok为调用服务实例的抽象类,track为服务跟踪实例的抽象类,createObject为动态链接库扫描接口,实现动态链接库插件的扫描。
6.如权利要求5所述的方法,其特征在于,步骤2-5中,通过实现bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,编写网络资产扫描插件和漏洞扫描插件;
步骤2-5中,网络资产扫描插件和漏洞扫描插件用动态链接库技术来实现。
7.如权利要求6所述的方法,其特征在于,步骤2-8中,网络资产扫描插件对目标地址进行扫描的具体过程包括:
步骤2-8-1,主机发现:通过发送不同类型的数据探测包到目标主机,以得到的结果来判断目标主机是否处于开启状态;
步骤2-8-2,端口扫描:通过脚本扫描所有可能开放的端口,并确定端口的开闭状态和屏蔽状态;
步骤2-8-3,应用程序与版本侦测:对端口扫描的开放端口进行建立连接,接收目标主机发送的信息,通过脚本对接收到的信息进行签名对比,查找对应应用程序的名字、资产属性和版本信息;
步骤2-8-4,操作系统侦测:将已知系统进行唯一身份标识匹配,建立已知系统的样本库;通过脚本向端口扫描得到的端口发送数据包,根据数据包返回的数据生成一个身份标识,然后用生成的身份标识在样本库中进行比对,返回对应的操作系统,如果无法得到准确的操作系统,则返回出可能的操作系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110879554.3A CN113609491B (zh) | 2021-08-02 | 2021-08-02 | 一种基于消息队列的插件式漏洞自动化扫描方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110879554.3A CN113609491B (zh) | 2021-08-02 | 2021-08-02 | 一种基于消息队列的插件式漏洞自动化扫描方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113609491A CN113609491A (zh) | 2021-11-05 |
CN113609491B true CN113609491B (zh) | 2024-01-26 |
Family
ID=78306432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110879554.3A Active CN113609491B (zh) | 2021-08-02 | 2021-08-02 | 一种基于消息队列的插件式漏洞自动化扫描方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113609491B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325351A (zh) * | 2018-08-23 | 2019-02-12 | 中通服咨询设计研究院有限公司 | 一种基于众测平台的安全漏洞自动化验证系统 |
CN109981653A (zh) * | 2019-03-28 | 2019-07-05 | 上海中通吉网络技术有限公司 | 一种web漏洞扫描方法 |
WO2020055230A1 (en) * | 2018-09-13 | 2020-03-19 | Mimos Berhad | System and method for performing vulnerability assessment of a computer network |
CN111083107A (zh) * | 2019-11-14 | 2020-04-28 | 中通服咨询设计研究院有限公司 | 一种基于区块链的网络安全漏洞收集处理方法 |
CN111291384A (zh) * | 2020-04-28 | 2020-06-16 | 杭州海康威视数字技术股份有限公司 | 漏洞扫描方法、装置及电子设备 |
CN111367693A (zh) * | 2020-03-13 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 基于消息队列调度插件任务的方法、系统、设备及介质 |
CN111835694A (zh) * | 2019-04-23 | 2020-10-27 | 张长河 | 一种基于动态伪装的网络安全漏洞防御系统 |
CN112134877A (zh) * | 2020-09-22 | 2020-12-25 | 北京华赛在线科技有限公司 | 网络威胁检测方法、装置、设备及存储介质 |
CN112468472A (zh) * | 2020-11-18 | 2021-03-09 | 中通服咨询设计研究院有限公司 | 一种基于安全日志关联分析的安全策略自反馈方法 |
CN112511571A (zh) * | 2021-02-07 | 2021-03-16 | 连连(杭州)信息技术有限公司 | 一种Web漏洞扫描方法、装置、系统、设备及存储介质 |
US11070496B1 (en) * | 2020-03-13 | 2021-07-20 | Jpmorgan Chase Bank, N.A. | Method and apparatus for providing vulnerability feedback |
-
2021
- 2021-08-02 CN CN202110879554.3A patent/CN113609491B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325351A (zh) * | 2018-08-23 | 2019-02-12 | 中通服咨询设计研究院有限公司 | 一种基于众测平台的安全漏洞自动化验证系统 |
WO2020055230A1 (en) * | 2018-09-13 | 2020-03-19 | Mimos Berhad | System and method for performing vulnerability assessment of a computer network |
CN109981653A (zh) * | 2019-03-28 | 2019-07-05 | 上海中通吉网络技术有限公司 | 一种web漏洞扫描方法 |
CN111835694A (zh) * | 2019-04-23 | 2020-10-27 | 张长河 | 一种基于动态伪装的网络安全漏洞防御系统 |
CN111083107A (zh) * | 2019-11-14 | 2020-04-28 | 中通服咨询设计研究院有限公司 | 一种基于区块链的网络安全漏洞收集处理方法 |
CN111367693A (zh) * | 2020-03-13 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 基于消息队列调度插件任务的方法、系统、设备及介质 |
US11070496B1 (en) * | 2020-03-13 | 2021-07-20 | Jpmorgan Chase Bank, N.A. | Method and apparatus for providing vulnerability feedback |
CN111291384A (zh) * | 2020-04-28 | 2020-06-16 | 杭州海康威视数字技术股份有限公司 | 漏洞扫描方法、装置及电子设备 |
CN112134877A (zh) * | 2020-09-22 | 2020-12-25 | 北京华赛在线科技有限公司 | 网络威胁检测方法、装置、设备及存储介质 |
CN112468472A (zh) * | 2020-11-18 | 2021-03-09 | 中通服咨询设计研究院有限公司 | 一种基于安全日志关联分析的安全策略自反馈方法 |
CN112511571A (zh) * | 2021-02-07 | 2021-03-16 | 连连(杭州)信息技术有限公司 | 一种Web漏洞扫描方法、装置、系统、设备及存储介质 |
Non-Patent Citations (6)
Title |
---|
Exploiting the Transients of Adaptation for RoQ Attacks on Internet Resources;Mina Guirguis 等;Proceedings of the 12th IEEE International Conference on Network Protocols (ICNP’04);全文 * |
IDSVL: Intrusion Detection System Virtual Lab Based on Component in the Internet;Jianxin Wang 等;ICWL 2006:Advances in Web Based Learning-ICWL 2006;第4181卷;第264-275页 * |
Web应用漏洞扫描系统;王扬品;程绍银;蒋凡;;计算机系统应用(第12期);第60-65页 * |
云安全漏扫系统任务调度模块的设计与实现;贾梦琦;中国优秀硕士学位论文全文数据库 信息科技辑;全文 * |
基于流量分析的软件升级漏洞自动检测方法;腾金辉;光焱;舒辉;张冰;;网络与信息安全学报(第01期);第98-112页 * |
安全众测在运营商网络安全保障中的应用;杨建;王小鹏;;电信技术(第12期);第43-47页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113609491A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kwon et al. | MCI: Modeling-based causality inference in audit logging for attack investigation | |
Backes et al. | On demystifying the android application framework:{Re-Visiting} android permission specification analysis | |
US10705811B2 (en) | Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources, like mobile devices or TV set top boxes | |
EP2589198B1 (en) | Automated security assessment of business-critical systems and applications | |
US8286149B2 (en) | Apparatus for and method of implementing feedback directed dependency analysis of software applications | |
Bagheri et al. | Practical, formal synthesis and automatic enforcement of security policies for android | |
CN113240258B (zh) | 一种工业资产探测方法、设备及装置 | |
US8949812B2 (en) | System and method for updating hard-coded dependencies | |
KR20070043707A (ko) | 보안 소프트웨어 개발, 테스팅 및 모니터링 장치 및 방법 | |
Hennessy et al. | Typed behavioural equivalences for processes in the presence of subtyping | |
US20080300838A1 (en) | System and method of automatic interoperability checking for BPEL | |
Shcherbakov et al. | Serialdetector: Principled and practical exploration of object injection vulnerabilities for the web | |
US11416386B2 (en) | Behavior-based comparison of software | |
US20190197243A1 (en) | Automated Fuzzing Based on Analysis of Application Execution Flow | |
US8230052B2 (en) | Module diagnostic toolkit for client-server based protocols | |
Naumovich et al. | Static analysis of role-based access control in J2EE applications | |
Lapadula et al. | Using formal methods to develop WS-BPEL applications | |
US7805711B2 (en) | Redirection interface system and method for CIM object manager provider | |
Neves et al. | Dynamic property enforcement in programmable data planes | |
CN113609491B (zh) | 一种基于消息队列的插件式漏洞自动化扫描方法 | |
Zhong et al. | Scalable compositional static taint analysis for sensitive data tracing on industrial micro-services | |
Egele et al. | Using static program analysis to aid intrusion detection | |
Mocci et al. | Detecting component changes at run time with behavior models | |
Halfond | Identifying inter-component control flow in web applications | |
Eckmann et al. | STATL definition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |