|
|
|
联系客服020-83701501

分布式漏洞扫描系统设计与实现

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
分布式裂痕扫描系分身算与实现

0x00·概述

1.1?序文
由于新闻在当今社会显得愈来愈求助,其安全性就越发通常,特别是在近几年,新闻安全愈来愈遭到企业的重视。?普通,简直全副的互联网都有启示大家的漏 洞扫描平台,用于创举外部的安全隐患。此外,很多专业的安全工程师就有大家启示的裂痕发掘细碎,随着各类裂痕盒子的出现,这类细碎也愈来愈多,愈来愈强 大。

1.2?何去何从
关于一个不是专程做安全的小公司来讲,假定大费周章滴大家自始至终启示一套扫描细碎,那绝对是脑袋被驴踢了。但是这绝不象征着咱们不去做裂痕扫描细碎,相同,咱们定然要去做,并且努力在资本有限的情况下做的更好。
大家都晓得,当初网上有很多开源的器材,比如sqlmap,?hydra,?medusa,openvas等等,?虽然也有很多优美的商业产品,比 如WVS等。试想,假使公司有不计其数个IP和域名,那么让几个安全工程师每天去利用这些不同器材,对公司的内网网中止安全扫描,那这个工作量是很大的, 并且这些工作很多凡是频频性的工作,以是很自然地想到:做一个被动化的裂痕扫描平台,尔后被动调些器材中止扫描,末端将了局中止汇总以便阐发。

1.3?梗概走的更远一些
当初各类操作就事是个非常风行的观念,它梗概降低很多利用本钱和相反本钱,以是咱们梗概把裂痕扫描做成了一个平台,相等于做了一个裂痕扫描就事平 台,任何对安全不是很熟习的共事,岂论是启示,还是运维,都梗概利用该平台中止安全扫描,实时创举裂痕。假定安全职员只是在产品上线后才中止检测,那么出 现踢皮球的事变,产品那儿说急着上线,安全这边说不可,末端邮件打斗到导游那去了。

以是,假定条件应承的话,咱们梗概在产品QA外面参与安全QA流程,任何上线的产品,只需发送动静到此裂痕扫描平台的,就会被动化安全扫描,假定创举裂痕的话,咱们梗概抢救研发职员把裂痕修复,包管产品上线的安全性。
1.4?多余的话
集成各类裂痕扫描发掘器材,确实梗概给咱们带来很多启示上的便当,但每个公司难免都有一些不同的本色,导致会有一些非凡的需要,比如就事器不有按 照标准中止安全加固,WEB就事器不有禁用与运维有关的端口等等,以是咱们有需要在实现这些扫描细碎的时分,必须做成一个插件式的细碎框架,一方面是是可 以保持细碎拘泥,兼容性好,此外一方面梗概咱们梗概依照大家的需要写各类插件。

0x01·细碎框架

2.1?概述
分布式裂痕扫描细碎采纳分布式的布局方式,梗概充沛把持云平台的技艺上风,对细碎中的各个模块要只管即便解耦,降低他们之间的托付程度,使得部分细碎具有较高的拘泥性和扩展性。
在筹算细碎之初,咱们就想充沛把持各类开源和商业扫描器材,做一个解散式的裂痕扫描平台,贯注抗御频频造轮子,放慢部分细碎的启示速率,同时也有利于随意率性更新细碎的各个插件。
2.2?运行环境
由于不同的扫描器材,所运行的环境有所不同,导致咱们的扫描细碎有需要兼容不同的细碎。比如hydra,?openvas等器材,它们是相比适当运行在 Linux上,而WVS,appscan等器材是运行在Windows上,以是咱们有需要同时兼容这两大类细碎。假定再深入一点,Linux也分为很多种 不同的细碎,比如CentOS,?Ubuntu,Redhat等,并且即便类似的细碎,内核版本不同的话,运行环境也是有很大的辨别。以是,咱们有需要一 劈头开始就决定吉兆行环境,多么梗概降低咱们的启示的本钱,如下表2-1是咱们选定的运行环境。


表2-1?各节点运行环境

2.3?细碎框架
分布式裂痕扫描细碎分为交互表示(web)模块,监控(manager)模块和扫描(scanner)模块三大类。此中,交互表示模块是利用 Django实现的一个Web细碎,用户梗概通过该模块中止任务的下发,待任务结束后,梗概搜查任务的扫描了局。监控模块主要认真监控部分细碎的运行状 况,并且将细碎的任务形状动静通过邮件的形式推送给你用户等等。扫描模块即是分布式细碎的着末,依照运行环境的不同可分为Linux扫描节点和 Windows扫描节点两大类,它是间接对方针就事器发动扫描测试的节点,待扫描结束后,就把扫描了局返回给地方数据库,部分细碎的框架布局以下图2-1 所示。

从图2-1中,咱们梗概看到,用户通过Web模块下发扫描任务,虽然用户也梗概大家确立任务方案,尔后监控模块(manager?server)会被动根 据方案来确立扫描任务。任务确立以后,会依照任务的不同分发到动静行列步队:假定任务所调用的剧本是运行在Linux环境中,那么该动静就会被发送到 Linux动静行列步队中,如该任务底层所调用的器材是运行在Windows中,那么该动静就会被发送Windows动静行列步队。Linux/Windows扫 描节点会响应地从各自Linux/Windows动静行列步队中取得扫描任务,尔后发动相干的扫描剧本,对方针发动扫描,扫描结束以后,通过WEB模块供应的 REST接口同步扫描了局到数据库中。
2.4?安设器材
为了便于批量安设分布式扫描的各个节点,咱们采纳fabric中止安设,具体相干的利用举措梗概参考以下官网:
http://www.fabfile.org/
2.5?小结
各类分布式裂痕扫描细碎的实现方式大同小异,大扫数都利用熟习散式的贪图方式,通过动静行列步队中止任务下发,结束时通过REST接口接管扫描了局,只管即便解耦各个模块。

0x02·动静通信

3.1?概述
分布式的裂痕扫描细碎主要分成交互(Web)模块,监控(Manager)模块和扫描(Scanner)模块三大类,虽然也有其余的一些合用匡助器材,类如批量安设剧本,数据复原等等。这三大模块相互瓜分,相互瓜分,和谐完成扫描任务。
交互模块主假设用户的利用界面,主要用于发动对方针的扫描任务,订定扫描方案,搜查扫描了局等等。监控模块则是认真看管部分细碎的运行形状。扫描模块则是 具体认真发动扫描过程的。这个三个模块是相互独立,但又通过不同动静通信方式中止和谐运作。本章节主要介绍一下各个模块之间的通信方式。
3.2?任务动静的界说
用户发动的任何一个扫描任务,都需要转换成响应的预界说花腔的动静。为随意率性各个模块之间的动静分析处置惩罚,咱们将动静界说的花腔以下:


3.3?任务动静的传递
在分布式的细碎中,动静行列步队是最佳的动静传递方式,因此咱们采纳了Active?MQ作为部分细碎的动静传递序文。扫描节点梗概分成Windows扫描节 点和Linux扫描节点两种,不同的节点所能处置惩罚的扫描任务典范榜样是不同的,而咱们希望分布式的裂痕扫描细碎大要同时反对这两种,以便实现强大的解散式发掘 平台。
为了更好地辨别两种不同典范榜样的扫描任务,咱们将在Active?MQ中确立2个任务动静行列步队。用户通过Web界面发动扫描任务时,会确立一个(或多个)任 务动静器材,尔后依照所选用扫描插件所运行的环境不同,别离将其序列化(json)以后发送到响应的任务动静行列步队中。而Windows和Linux扫描节 点则别离从Windows动静行列步队和Linux动静行列步队中取扫描任务,尔落后行处置惩罚,其了局以下图3-1所示。

图3-1?任务动静传递示规画
从上图梗概看出,任务在进入任务行列步队之前就已经依照扫描任务的不同辨别是发送到Windows行列步队还是发送到Linux行列步队,贯注抗御了后续流程中具有任务的穿插性,在扫描结束后通过Web上的REST接口将扫描了局同步到地方贪图平台。
3.4?扫描任务的勾销
扫描节点会通过Web供应的API接口周期性轮询扫描任务形状刷新。假定用户勾销任务时,扫描节点创举形状已经被设置为勾销形状,那么扫描节点会终了该任务所对应的扫描过程。
3.5?监控模块新闻通信
监控模块主假设与Web模块中止交互的,它通过Web供应的额外的几个REST接口,用于究诘以后的任务形状新闻,同时还认真扫数新闻收集相干的扫描任务等等,全副凡是REST接口来完成全副的相干效用,具体的实现方式参考监控模块章节。

0x03·扫描节点

4.1?概述

扫描节点(scanner)是部分分布式扫描细碎的终端节点,认真具体裂痕扫描。由于咱们的裂痕扫描细碎需要解散很多不同的扫描器材,在这些器材当中,有 的是只能运行在Windows上,比如WVS,而有的则是只能运行在Linux上,比如openvas,而有的则是梗概同时在两种细碎上运行,比如 nmap。以是,为了大要更好的地解散这些器材,就必须筹算细碎的异构标题,到达同时反对Linux扫描节点和Windows扫描节点,本事更大地发挥集 中扫描平台的上风。
4.2?扫描框架
4.2.1?细碎异构
出于系分身算的需要,扫描节点必须需要同时运行在Linux和Windows节点,以是咱们在筹算扫描节点的框架时,必需要考虑到细碎的异构标题。此外, 为了添加代码的启示工夫和运维工作量,咱们不希望在Linux启示一套扫描细碎,而在Windows上启示此外一套细碎,多么无疑会添加咱们的启示和运维 本钱,并且对以后的升级凡是相比棘手的。以是,咱们采纳剧本语言python启示部分扫描细碎,全副的扫描器材凡是采纳插件的形式封装,尔后依照扫描任务 动静加载。举个例子,扫描细碎发动的时分,它是不会加载任何插件的,包管细碎大要同时运行在Linux和Windows节点上,当用户发动的一个WEB扫 描任务时,那么该任务会被发送到Windows动静行列步队,Windows扫描节点会从该动静行列步队中提取任务,尔后动静加载WVS插件,尔后调用WVS中止 裂痕扫描。同理,假定用户发动的主机扫描任务,那么该任务就会发送到Linux动静行列步队,Linux扫描节点会从该动静行列步队中提取任务,尔后动静加载 openvas插件,尔后调用openvas中止裂痕扫描。如此一来,抗衡个扫描细碎梗概同时兼容Windows和Linux细碎,就很好地筹算细碎的异 构标题。
4.2.2?框架布局
在【动静通信】章节中,部分分布式细碎主假设通过动静行列步队(ActiveMQ)来中止扫描任务的分发。同时,为筹算细碎异构标题,咱们利用了Windows和Linux两个动静行列步队,用于不同典范榜样的任务分发,扫描节点的框架以下图4-1所示。


图4-1?扫描节点的框架布局
从上图中,咱们梗概看到扫描节点具有好几个不同典范榜样的线程,别离认真不同的效用,其效用以下表3-1所示。
表3-1?扫描节点外部主要的线程和过程效用表


比力图3-1和表3-1,咱们梗概看出,扫描节点的外部有任务行列步队【Task?Queue】和了局行列步队【Result?Queue】两个行列步队,而接管 任务线程【Receive?MQ?Thread】首先从ActiveMQ中取得扫描任务,尔后将其推入到外部的任务行列步队【Task?Queue】中,主线 程【Main?Porcess?Thread】会从外部行列步队【Task?Queue】中提取扫描任务动静,尔后依照任务动静发动一个扫描线程 【Scan?Thread】,?而扫描线程【Scan?Thread】发动以后会确立一个插件过程【Plugin?Process】,该过程会调用 nmap,?WVS,openvas等相干器材,待执行结束后会将扫描的了局推入到了局行列步队【Result?Queue】。了局同步线程 【Sync?Result?Thread】从了局行列步队【Result?Queue】中取得扫描了局,尔后通过WEB的REST接口同步到地方数据库。而查 询任务形状线程【Query?Task?status?Thread】则是周期性地通过WEB的REST接口究诘以后扫描任务的形状,假定创举有任务被取 消的话,那么它就会发送一个勾销【Cancel】的动静到任务行列步队【Task?Queue】中,尔后主线程【Main?Porcess?Thread】取 出这个动静后,就会终了响应的扫描线程【Scan?Thread】和插件过程【Plugin?Thread】。
扫描节点内的多个线程,不同的线程认真不同的效用,固然看起来相比冗杂,但是多么梗概只管即便解耦各个模块之间,以增强可扩展性和拘泥性,也梗概大大降低后期的体恤和升级的本钱。
4.2.3扫描线程和插件过程的发动
扫描节点中主线程会依照扫描任务通过外部线程贪图器【Thread?Manager】发动一个扫描线程,其框架以下图4-2所示。


图?4-2?扫描线程与插件过程
从上图4-2梗概看出,线程贪图器发动了扫描线程以后,扫描线程会依照任务任务从插件工厂【Plugin?Factory】取得任务相对应的插件过程 实例,并发动插件过程。比如扫描线程1的任务典范榜样是主机安全扫描,那么它会通过插件工厂获得一个openvas的插件实例(plugin?A),尔后发动 该插件过程,扫描线程2的任务典范榜样是Web裂痕扫描,那么它会通过插件工厂获得WVS的插件实例(Plugin?B),尔后发动该插件过程。
4.2.4扫描线程和插件过程的通信
当扫描任务被勾销的时分,主过程会找到相对应的扫描线程【Scan?Thread】,尔后通过扫描线程来终了相对应的插件过程【Plugin?Thread】,其通信的框架如图4-3所示。

图?4-3?扫描线程和插件过程的通信布局图
扫描线程【Scan?Thread】在发动插件过程时,会确立一个行列步队Queue用于和插件过程【Plugin?Process】通信。在插件过程内 部有任务扫描【Task?Scanning】和通信【communication】两个线程,此中任务扫描线程是调用具体的扫描器材梗概或许剧本的,比如 openvas,nmap,WVS等等,在调用结束后会将扫描的了局推入到扫描节点外部的了局行列步队【Result?Queue】中,而通信线程则是通过队 列【Queue】与扫描线程通信。
当任务被勾销时,主线程会通过相对应的扫描线程发送一个终了的呼吁到行列步队queue中,插件过程当中的通信线程收到这个动静时就会调用终了函数 (stop_script)来结束以后的线程。各个插件的终了函数略有不同,多么梗概让各个插件过程在终了前做一些需要的工作,比如同步已有了局,清算扫 尾等,添加插件的无邪性。但是,假定逾越定然的工夫相干过程和线程还不有被终了的话,那么就会被主过程强制杀掉,贯注抗御过程僵死的情况发生。

4.4?小结
为了筹算细碎的异构标题,咱们采纳了两个任务动静行列步队来下发扫描任务,扫描节点中的各个扫描效用模块全副采纳插件的形式,在需要的时分动静加载,包管了细碎的拘泥性和可扩展性。

作者:胡杨<jekkay@easysb.cn><479904359@qq.com>

数安新闻+更多

证书相关+更多