APP下载

基于被动信息收集的Web安全评估系统的设计与实现

2020-07-30刘对路贺俊孟清高雨

科技视界 2020年17期
关键词:域名功能模块被动

刘对 路贺俊 孟清 高雨

摘 要

信息收集是渗透测试过程中不可或缺的一步,信息收集的方式可分为主动和被动,为了提高渗透测试人员在进行被动信息收集时的效率,本文开发了基于被动信息收集的Web安全评估系统。系统采用Python开发,利用Scrapy爬虫框架对第三方被动信息收集网站进行数据爬取与整合,系统实现功能有对目标进行备案、Whois、子域名、子域名IP、子域名CMS、子域名Shodan、子域名漏洞信息的查询。在对目标进行上述7个方面的信息收集时,相较于传统方式此系统可帮助渗透测试人员在时间上提高近6倍的效率。

关键词

被动信息收集;渗透测试;爬虫;Web安全

中图分类号:  TP311.53;TP393.08     文献标识码: A

DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 17 . 13

Abstract

Information collection is an indispensable step in the process of penetration testing. The methods of information collection can be divided into active and passive. In order to improve the efficiency of penetration testers in passive information collection, this paper develops a Web security assessment system based on passive information collection.The system adopts Python development and Scrapy crawler framework for data crawling and integration of third-party passive information collection websites. The system realizes the functions of filing the target, Whois, sub-domain name, sub-domain IP, sub-domain name CMS, sub-domain name Shodan, sub-domain name vulnerability information inquiry.This system can help the penetration tester nearly 6 times more efficiently than the traditional method when collecting information on the above 7 aspects of the target.

Key Words

Passive Intelligence Gathering; Penetration testing; Crawler; Web security

0 引言

在當今二十一世纪的互联网时代,人们与互联网的关系越来越紧密,随之而来的便是互联网的安全问题越来越被人们所关注[1]。自十八大以来,习总书记对我国的网络安全问题十分看重[2]。在2016年《中华人民共和国网络安全法》法案正式通过,并且该法案将于次年6月起开始施行[3]。在2018年,习总书记明确指出:网络安全的竞争最终是人才的竞争[4]。

当一个系统需要进行安全性评估的时候,如何判断一个系统是否安全就成了网络安全人员的一项主要工作任务。就目前而言,最行之有效的方法就是对目标系统进行渗透测试,一个系统的安全防护是否到位可以通过渗透测试有效的检验出来[5]。信息收集是渗透测试最开始进行的一步,这也是最关键的一步,信息收集的工作对渗透测试的结果往往可以起到决定性的作用[6]。

被动与主动是信息收集的两种方式,被动信息收集是指在不与目标产生交互的情况下利用公开渠道获得目标信息,因此被动信息收集不会影响目标的网络带宽和目标服务器资源, 相较于主动信息收集隐蔽性更好[7]。反过来主动信息收集就是指通过主动与目标产生交互来收集信息。这两种信息收集的方式在信息收集的过程中相辅相成,都是信息收集的一部分。

为了更快速地收集目标信息,发现目标Web系统问题,帮助渗透测试人员更高效安全地对目标Web系统进行渗透测试,本文研发了一种Web安全评估系统,该系统是基于被动信息收集的方式,该系统可帮助渗透测试人员快速定位目标Web系统弱点,发现目标漏洞,提高被动信息收集效率。

1 功能分析

设计一个基于被动信息收集的Web安全评估系统,理应具备以下特点:

(1)能够收集一些常见的目标信息。

(2)对于目标信息收集需要尽可能地全面。

(3)收集的信息能够帮助安全人员分析Web系统的安全性。

基于第1点,要求工具能够收集目标的备案信息、Whois信息等这类常见的目标信息;基于第2点,要求工具收集的信息要尽可能的全面,不应该局限于用户输入的某一个域名,最好可以收集目标的子域名和子域名的信息;基于第3点,收集的信息应该对安全人员分析目标Web系统的安全性有所帮助,这就要求不能只收集目标的备案信息、Whois等此类常见信息,还应该收集对分析目标安全性有所帮助的信息,比如目标Web的CMS信息、域名对应IP的端口开放信息,甚至是目标的漏洞信息。

经过上述分析后,目前该工具主要实现的功能有:收集目标的备案、Whois、子域名、子域名IP、子域名CMS、子域名 Shodan、子域名漏洞信息。

2 系统功能

本文研发了一种基于被动信息收集的Web安全评估系统,该系统由Python开发[8],由于考虑到会使用大量爬虫,因此采用了较为成熟的Scrapy爬虫框架进行开发,以减轻开发任务量[9],该系统主要实现功能有对目标Web系统的备案信息、Whois信息、子域名信息、子域名IP信息、子域名CMS信息、子域名 Shodan信息、子域名漏洞信息进行被动收集。

(1)备案信息查询模块。备案信息查询模块数据来源自98api.cn,利用Scrapy获取该网站的API接口信息,由于爬取结果是JSON数据格式,所以可以很方便的进行数据分析与清理,最后将清理后的数据存储到数据库并进行输出显示。

(2)Whois信息查询模块。利用Scrapy爬取api.devopsclub.cn的API接口信息,该爬取结果是JSON数据格式,最后将爬取的JSON信息进行数据分析清洗后存储到数据库并进行输出显示。

(3)子域名信息查询模块。子域名信息查询模块数据来源自dnsscan.cn,利用Scrapy获取该网站的信息后,由于爬取结果是HTML格式,因此可以使用Python的第三方库BeautifulSoup对其进行解析,最后将解析结果进行分析与清理,继而存储到数据库并进行输出显示。

(4)子域名IP信息查询模块。子域名IP信息查询模块使用了tools.bugscaner.com的数据,该爬取结果返回数据为HTML格式。由于是获取子域名的IP信息,所以在开始执行子域名IP信息查询之前,需要先判断数据库中有无子域名信息。如果数据库中不存在目标的子域名信息就退出子域名IP信息查询模块,如果数据库中存在目标的子域名信息就进行子域名的IP信息爬取,对爬取的结果进行处理后,再进行输出显示及数据库的存储。

(5)子域名CMS信息查询模块。子域名CMS信息查询模块调用了whatweb.bugscaner.com的API 接口,该接口返回JSON格式。和子域名IP查询一样,在进行子域名CMS查询时,需要先判断数据库中有无目标的子域名信息,如果数据库中没有目标的子域名信息就退出子域名CMS信息查询模块,如果数据库中存在目标Web系统的子域名信息就进行子域名CMS信息查询,最后对爬取的信息进行清洗分析后,再进行输出显示及数据库的存储。

(6)子域名Shodan信息查询模块。子域名Shodan信息来源自api.shodan.io,想获取该接口的信息需要用户的API Key,因此该模块需要先判断数据库中有无API Key,如果数据库中没有API Key就需要用户输入自己的API Key,该API Key可以通过在shodan.io注册账号获取。在检测到API Key之后,将判断数据库中有无子域名信息,如果数据库中没有目标的子域名信息就退出,如果数据库中有目标的子域名信息就进行子域名Shodan信息的查询,通过爬虫获取API接口信息,之后进行数据清洗与存储,最后进行输出显示。

(7)子域名漏洞信息查询模块。子域名漏洞信息查询模块使用了cnnvd.org.cn数据,该模块在运行前,需要判断数据库中有无目标的CVE信息,该信息来源自“子域名Shodan信息查询模块”的结果。如果数据库中不存在目标子域的CVE信息,就退出子域名漏洞信息查询模块,如果数据库中存在目标的相关CVE信息,就利用爬虫进行数据获取,再对数据进行解析,最后对结果进行数据库的存储与输出。

3 系统结构

系统的结构设计如图1所示,用户输入目标的URL后,先由 “功能模块1”进行目标URL的被动信息收集,将收集到的数据存入数据库后,再由“功能模块2”调取数据库中的数据进行被动信息收集,最后输出结果。

本系统中的功能模块主要分成2个部分,分别是功能模块1和功能模块2。功能模块1包括:备案信息、Whois信息、子域名信息这3个查询模块;功能模块2包括:子域名IP信息、子域名CMS信息、子域名Shodan信息、子域名漏洞信息这4个查询模块。整体结构如图2所示。

(1)功能模块1。功能模块1不需要调取数据库里的数据,直接对用户输入的URL进行被动信息收集,功能模块1所爬取的数据将被功能模块2所调用。

(2)功能模块2。功能模块2里的所有模块都需要先调取数据库里的数据,在进行相关URL的被动信息收集后,再将收集到的数据存入数据库并进行输出显示,因此要想执行“功能模块2”必须先执行“功能模块1”。

4 性能分析

为了测试本系统的被动信息收集工具性能,将通过分析使用传统的被动信息收集方式与使用本文所开发的被动信息收集工具的方式所消耗的时间及硬件资源进行对比。传统的被动信息收集方式即是指通过浏览器访问第三方网站,继而在第三方网站上获取目标信息的方式。在被动信息收集结果一致、性能分析测试环境一致的情况下,对使用传统的被动信息收集方式与使用本文所开发的被动信息收集工具的方式进行性能分析测试,测试结果如表1及表2所示。

结合表1时间消耗性能分析表和表2硬件消耗性能分析表,可以得到使用本工具相对于传统方法的性能节省倍数统计图,如图3所示。

使用本文开发的被动信息收集工具相较于传统的被动信息收集方法,在时间上降低了5.88倍,在CPU使用率上降低2.14倍,在内存消耗上降低了1.3倍,在硬盘传输字节上降低了2.02倍,在网络传输字节上降低了1.07倍。综上所述,不论是时间消耗的性能分析还是硬件消耗的性能分析,本文所开发的被动信息收集工具都要优于传统的被动信息收集方法。

5 结语

本系统是基于被动信息收集的原理,通过收集目标URL的备案信息、Whois信息、子域名信息、子域名IP信息、子域名CMS信息、子域名Shodan信息、子域名漏洞信息来实现对目标的被动信息收集。可以保证网络安全人员在滲透测试的过程中,在不影响目标服务器资源同时不被目标发现的前提下,帮助渗透测试人员,高效快速地对目标进行被动信息收集,提高渗透测试人员对目标Web安全性评估的效率。

参考文献

[1]洪艺强.浅析我国网络安全现状以及未来技术发展趋势[J].电脑迷,2018,12:43.

[2]张蕴昭.中国特色治网之道:理念与成就——十八大以来我国网络空间治理的回顾与思考[J].中国行政管理,2019,1:28.

[3]邓若伊.以法制保障网络空间安全构筑网络强国——《网络安全法》和《国家网络空间安全战略》解读[J].电子政务,2017,2:2-35.

[4]张宏莉.网络空间安全人才培养的规划建议[J].网络与信息安全学报,2016,2(3):1-9.

[5]常艳.网络安全渗透测试研究[J].信息网络安全,2012,12(11):3-4.

[6]宋超臣.Web渗透测试流程研究[J].电子设计工程,2014,22(17):165-167.

[7]刘炎.被动网络信息收集与分析技术研究[J].计算机应用研究,2007,02:308-309.

[8]夏敏捷,杨关.Python程序设计从基础到开发[M].清華大學出版社:崧博出版,2019:2.

[9]安子建.基于Scrapy框架的网络爬虫实现与数据抓取分析[J].长春:吉林大学,2017.

猜你喜欢

域名功能模块被动
新闻语篇中被动化的认知话语分析
主动句都能转换成被动句吗
第五课 拒绝被动
Combosquatting域名抢注的测量研究
如何购买WordPress网站域名及绑定域名
输电线路附着物测算系统测算功能模块的研究
M市石油装备公服平台网站主要功能模块设计与实现
腾讯八百万美元收购域名
功能模块的设计与应用研究
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家