CN113609491A - 一种基于消息队列的插件式漏洞自动化扫描方法 - Google Patents

一种基于消息队列的插件式漏洞自动化扫描方法 Download PDF

Info

Publication number
CN113609491A
CN113609491A CN202110879554.3A CN202110879554A CN113609491A CN 113609491 A CN113609491 A CN 113609491A CN 202110879554 A CN202110879554 A CN 202110879554A CN 113609491 A CN113609491 A CN 113609491A
Authority
CN
China
Prior art keywords
scanning
plug
task
vulnerability scanning
vulnerability
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.)
Granted
Application number
CN202110879554.3A
Other languages
English (en)
Other versions
CN113609491B (zh
Inventor
田闯
苏志鹏
王小鹏
石启良
陈昊望
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Information Consulting and Designing Institute Co Ltd
Original Assignee
China Information Consulting and Designing Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Information Consulting and Designing Institute Co Ltd filed Critical China Information Consulting and Designing Institute Co Ltd
Priority to CN202110879554.3A priority Critical patent/CN113609491B/zh
Publication of CN113609491A publication Critical patent/CN113609491A/zh
Application granted granted Critical
Publication of CN113609491B publication Critical patent/CN113609491B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing 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
Figure BDA0003191607850000051
Figure BDA0003191607850000061
步骤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
Figure BDA0003191607850000071
(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
Figure BDA0003191607850000081
Figure BDA0003191607850000091
(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
Figure BDA0003191607850000111
2、主机发现,如表14所示。
表14
Figure BDA0003191607850000112
3、端口扫描,如表15所示。
表15
Figure BDA0003191607850000113
Figure BDA0003191607850000121
4、应用程序与版本侦测,如表16所示。
表16
Figure BDA0003191607850000122
5、操作系统侦测,如表17所示。
表17
Figure BDA0003191607850000123
Figure BDA0003191607850000131
6、构造扫描结果,如表18所示。
表18
Figure BDA0003191607850000132
步骤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
Figure BDA0003191607850000141
Figure BDA0003191607850000151
3、装配连接。通过装配函数进行连接,如表23所示。
表23
函数作用 连接目标地址
函数名称 start_socket
参数 目标地址和端口
返回值
示例 start_socket(172.16.121.10,80),传入参数后执行。进行连接。
4、通过构造验证性测试消息,进行包头,包体的验证,调用脚本,得到AjpMessage(用于web服务器和服务器之间通信的单个数据包)对象,如表24、表25所示。
表24
Figure BDA0003191607850000152
表25
函数作用 验证
函数名称 verification
参数 包头和包体
返回值 Boolean,函数操作的结果
示例 Verification(headers,body),得到结果true。
5、得到结果,构造输出结果JSON数据集合,如表26所示。
表26
Figure BDA0003191607850000153
Figure BDA0003191607850000161
步骤11,扫描任务执行线程完成后,获取扫描结果数据封装到数据结果对象ScanResult,推送到漏洞扫描结果队列,如表27所示;
表27
模块作用 扫描结果数据对象
模块特点 实体
类名(对象名) ScanResult
数据成员 Map集合
步骤12,扫描结果消费服务从漏洞扫描结果队列中取出漏洞扫描结果数据,推送给扫描结果解析服务;
步骤13,扫描结果解析服务对漏洞扫描结果数据进行解析,输出漏洞扫描报告。
本发明提供了一种基于消息队列的插件式漏洞自动化扫描方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (10)

1.一种基于消息队列的插件式漏洞自动化扫描方法,其特征在于,包括以下步骤:
步骤1,创建漏洞扫描任务管理程序,并载入任务配置信息;
步骤2,漏洞扫描任务管理程序创建漏洞扫描任务,漏洞扫描任务执行完成后,输出漏洞扫描报告。
2.如权利要求1所述的方法,其特征在于,步骤1中,所述漏洞扫描任务管理程序能够根据任务配置信息创建漏洞扫描任务;
所述漏洞扫描任务是一个五元组<id,taskName,taskPlan,taskPar,taskCreateTime>,其中id是漏洞扫描任务的唯一标识;taskName表示漏洞扫描任务的名称;taskPlan表示漏洞扫描任务的执行计划;taskPar表示漏洞扫描任务的配置参数;taskCreateTime表示漏洞扫描任务的创建时间。
3.如权利要求2所述的方法,其特征在于,步骤1中,所述任务配置信息包括扫描策略、目标互联网协议地址或互联网协议地址段,当漏洞扫描任务管理程序创建漏洞扫描任务时会将任务配置信息中的基本配置参数载入到taskPar中。
4.如权利要求3所述的方法,其特征在于,步骤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,扫描结果解析服务对漏洞扫描结果数据进行解析,输出漏洞扫描报告。
5.如权利要求4所述的方法,其特征在于,步骤2-1中,漏洞扫描任务队列记为ScanTaskQueue,用于存放步骤1中漏洞扫描任务管理程序创建的漏洞扫描任务;漏洞扫描结果队列记为ScanResultQueue,用于存放扫描任务执行线程返回的漏洞扫描结果数据。
6.如权利要求5所述的方法,其特征在于,步骤2-2中,所述扫描任务消费服务记为ScanTaskConsumeService,所述扫描结果消费服务记为ScanResultConsumeService,其中,所述扫描任务消费服务ScanTaskConsumeService监听漏洞扫描任务队列ScanTaskQueue,当漏洞扫描任务队列ScanTaskQueue中存在扫描任务时取出任务数据进行处理,根据任务的属性创建扫描任务执行线程;
所述扫描结果消费服务ScanResultConsumeService监听漏洞扫描结果队列ScanResultQueue,扫描结果解析服务ScanResultAnalysisService,当漏洞扫描结果队列ScanResultQueue中存在漏洞扫描结果时取出漏洞扫描结果数据,推送给扫描结果解析服务ScanResultAnalysisService进行扫描结果数据的解析。
7.如权利要求6所述的方法,其特征在于,步骤2-3中,所述扫描插件宿主程序包含如下功能:
注册插件:在扫描插件宿主程序中注册扫描插件,定位插件的执行路径;
反注册插件:对于不再使用的扫描插件,能够在扫描插件宿主程序中对插件进行反注册,从扫描插件宿主程序中删除插件;
插件测试:对于在扫描插件宿主程序中进行注册的插件,扫描插件宿主程序能够对插件进行测试,从而判断插件程序是否能够正常运行,对于通过测试的插件能够进行启用操作,对于未通过测试的插件则无法进行启用操作;
启用插件:启用已经注册并通过测试的插件;
停用插件:当不再使用一个正在运行的插件时,能够停用正在运行的插件;
更新插件:对于发生了功能变更的插件,能够对插件的信息进行更新。
8.如权利要求7所述的方法,其特征在于,步骤2-4中,所述接口规范采用抽象接口的方式来实现,包括bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,其中bundle为注册服务接口,start和end为捆绑激活器接口,plier为服务对象抽象类,regist为注册对象接口,invok为调用服务实例的抽象类,track为服务跟踪实例的抽象类,createObject为动态链接库扫描接口,实现动态链接库插件的扫描。
9.如权利要求8所述的方法,其特征在于,步骤2-5中,通过实现bundle、start、end、plier、regist、invok、track、createObject八个抽象接口,编写网络资产扫描插件和漏洞扫描插件;
步骤2-5中,网络资产扫描插件和漏洞扫描插件用动态链接库技术来实现。
10.如权利要求9所述的方法,其特征在于,步骤2-8中,网络资产扫描插件对目标地址进行扫描的具体过程包括:
步骤2-8-1,主机发现:通过发送不同类型的数据探测包到目标主机,以得到的结果来判断目标主机是否处于开启状态;
步骤2-8-2,端口扫描:通过脚本扫描所有可能开放的端口,并确定端口的开闭状态和屏蔽状态;
步骤2-8-3,应用程序与版本侦测:对端口扫描的开放端口进行建立连接,接收目标主机发送的信息,通过脚本对接收到的信息进行签名对比,查找对应应用程序的名字、资产属性和版本信息;
步骤2-8-4,操作系统侦测:将已知系统进行唯一身份标识匹配,建立已知系统的样本库;通过脚本向端口扫描得到的端口发送数据包,根据数据包返回的数据生成一个身份标识,然后用生成的身份标识在样本库中进行比对,返回对应的操作系统,如果无法得到准确的操作系统,则返回出可能的操作系统。
CN202110879554.3A 2021-08-02 2021-08-02 一种基于消息队列的插件式漏洞自动化扫描方法 Active CN113609491B (zh)

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 true CN113609491A (zh) 2021-11-05
CN113609491B 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)

* Cited by examiner, † Cited by third party
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

Patent Citations (11)

* Cited by examiner, † Cited by third party
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 (8)

* Cited by examiner, † Cited by third party
Title
FREEBUF网络安全行业门户 GOBYSEC: "可进行排序扫描任务的Task Queue可进行排序扫描任务的Task Queue", Retrieved from the Internet <URL:https://www.freebuf.com/sectool/258866.html> *
JIANXIN WANG 等: "IDSVL: Intrusion Detection System Virtual Lab Based on Component in the Internet", ICWL 2006:ADVANCES IN WEB BASED LEARNING-ICWL 2006, vol. 4181, pages 264 - 275, XP019047818 *
MINA GUIRGUIS 等: "Exploiting the Transients of Adaptation for RoQ Attacks on Internet Resources", PROCEEDINGS OF THE 12TH IEEE INTERNATIONAL CONFERENCE ON NETWORK PROTOCOLS (ICNP’04) *
意大利的猫: "漏洞扫描之OpenVAS(二)(终)", Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1682764> *
杨建;王小鹏;: "安全众测在运营商网络安全保障中的应用", 电信技术, no. 12, pages 43 - 47 *
王扬品;程绍银;蒋凡;: "Web应用漏洞扫描系统", 计算机系统应用, no. 12, pages 60 - 65 *
腾金辉;光焱;舒辉;张冰;: "基于流量分析的软件升级漏洞自动检测方法", 网络与信息安全学报, no. 01, pages 98 - 112 *
贾梦琦: "云安全漏扫系统任务调度模块的设计与实现", 中国优秀硕士学位论文全文数据库 信息科技辑 *

Also Published As

Publication number Publication date
CN113609491B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
Backes et al. On demystifying the android application framework:{Re-Visiting} android permission specification analysis
EP2589198B1 (en) Automated security assessment of business-critical systems and applications
KR101150653B1 (ko) 보안 소프트웨어 개발, 테스팅 및 모니터링 장치 및 방법
Liu et al. {FANS}: Fuzzing android native system services via automated interface analysis
Bagheri et al. Practical, formal synthesis and automatic enforcement of security policies for android
US8949812B2 (en) System and method for updating hard-coded dependencies
US11416386B2 (en) Behavior-based comparison of software
Shcherbakov et al. Serialdetector: Principled and practical exploration of object injection vulnerabilities for the web
Lapadula et al. Using formal methods to develop WS-BPEL applications
WO2023011242A1 (en) Automated synthesis of reference policies for runtime microservice protection
Bagheri et al. Automated dynamic enforcement of synthesized security policies in android
Luo et al. Tainting-assisted and context-migrated symbolic execution of android framework for vulnerability discovery and exploit generation
Denker et al. Formal specification and analysis of active networks and communication protocols: The Maude experience
Fowze et al. Proxray: Protocol model learning and guided firmware analysis
CN113609491B (zh) 一种基于消息队列的插件式漏洞自动化扫描方法
Shukla et al. Formal modeling and verification of software‐defined networks: A survey
Gervasi et al. Modeling web applications infrastructure with ASMs
Mocci et al. Detecting component changes at run time with behavior models
Foster Writing security tools and exploits
Sasse Security models in rewriting logic for cryptographic protocols and browsers
Menegotto et al. Communication fault injection for multi-protocol Java applications testing
Zhong Software Analysis for Micro-Services in FinTech Systems
Torp Techniques and Tools for Supporting Maintenance of Node. js Programs
Schmeelk Standardizing source code security audits
Zhang et al. A Survey of Protocol Fuzzing

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