劉對(duì) 路賀俊 孟清 高雨
摘 要
信息收集是滲透測(cè)試過程中不可或缺的一步,信息收集的方式可分為主動(dòng)和被動(dòng),為了提高滲透測(cè)試人員在進(jìn)行被動(dòng)信息收集時(shí)的效率,本文開發(fā)了基于被動(dòng)信息收集的Web安全評(píng)估系統(tǒng)。系統(tǒng)采用Python開發(fā),利用Scrapy爬蟲框架對(duì)第三方被動(dòng)信息收集網(wǎng)站進(jìn)行數(shù)據(jù)爬取與整合,系統(tǒng)實(shí)現(xiàn)功能有對(duì)目標(biāo)進(jìn)行備案、Whois、子域名、子域名IP、子域名CMS、子域名Shodan、子域名漏洞信息的查詢。在對(duì)目標(biāo)進(jìn)行上述7個(gè)方面的信息收集時(shí),相較于傳統(tǒng)方式此系統(tǒng)可幫助滲透測(cè)試人員在時(shí)間上提高近6倍的效率。
關(guān)鍵詞
被動(dòng)信息收集;滲透測(cè)試;爬蟲;Web安全
中圖分類號(hào): ?TP311.53;TP393.08 ? ? 文獻(xiàn)標(biāo)識(shí)碼: 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 引言
在當(dāng)今二十一世紀(jì)的互聯(lián)網(wǎng)時(shí)代,人們與互聯(lián)網(wǎng)的關(guān)系越來(lái)越緊密,隨之而來(lái)的便是互聯(lián)網(wǎng)的安全問題越來(lái)越被人們所關(guān)注[1]。自十八大以來(lái),習(xí)總書記對(duì)我國(guó)的網(wǎng)絡(luò)安全問題十分看重[2]。在2016年《中華人民共和國(guó)網(wǎng)絡(luò)安全法》法案正式通過,并且該法案將于次年6月起開始施行[3]。在2018年,習(xí)總書記明確指出:網(wǎng)絡(luò)安全的競(jìng)爭(zhēng)最終是人才的競(jìng)爭(zhēng)[4]。
當(dāng)一個(gè)系統(tǒng)需要進(jìn)行安全性評(píng)估的時(shí)候,如何判斷一個(gè)系統(tǒng)是否安全就成了網(wǎng)絡(luò)安全人員的一項(xiàng)主要工作任務(wù)。就目前而言,最行之有效的方法就是對(duì)目標(biāo)系統(tǒng)進(jìn)行滲透測(cè)試,一個(gè)系統(tǒng)的安全防護(hù)是否到位可以通過滲透測(cè)試有效的檢驗(yàn)出來(lái)[5]。信息收集是滲透測(cè)試最開始進(jìn)行的一步,這也是最關(guān)鍵的一步,信息收集的工作對(duì)滲透測(cè)試的結(jié)果往往可以起到?jīng)Q定性的作用[6]。
被動(dòng)與主動(dòng)是信息收集的兩種方式,被動(dòng)信息收集是指在不與目標(biāo)產(chǎn)生交互的情況下利用公開渠道獲得目標(biāo)信息,因此被動(dòng)信息收集不會(huì)影響目標(biāo)的網(wǎng)絡(luò)帶寬和目標(biāo)服務(wù)器資源, 相較于主動(dòng)信息收集隱蔽性更好[7]。反過來(lái)主動(dòng)信息收集就是指通過主動(dòng)與目標(biāo)產(chǎn)生交互來(lái)收集信息。這兩種信息收集的方式在信息收集的過程中相輔相成,都是信息收集的一部分。
為了更快速地收集目標(biāo)信息,發(fā)現(xiàn)目標(biāo)Web系統(tǒng)問題,幫助滲透測(cè)試人員更高效安全地對(duì)目標(biāo)Web系統(tǒng)進(jìn)行滲透測(cè)試,本文研發(fā)了一種Web安全評(píng)估系統(tǒng),該系統(tǒng)是基于被動(dòng)信息收集的方式,該系統(tǒng)可幫助滲透測(cè)試人員快速定位目標(biāo)Web系統(tǒng)弱點(diǎn),發(fā)現(xiàn)目標(biāo)漏洞,提高被動(dòng)信息收集效率。
1 功能分析
設(shè)計(jì)一個(gè)基于被動(dòng)信息收集的Web安全評(píng)估系統(tǒng),理應(yīng)具備以下特點(diǎn):
(1)能夠收集一些常見的目標(biāo)信息。
(2)對(duì)于目標(biāo)信息收集需要盡可能地全面。
(3)收集的信息能夠幫助安全人員分析Web系統(tǒng)的安全性。
基于第1點(diǎn),要求工具能夠收集目標(biāo)的備案信息、Whois信息等這類常見的目標(biāo)信息;基于第2點(diǎn),要求工具收集的信息要盡可能的全面,不應(yīng)該局限于用戶輸入的某一個(gè)域名,最好可以收集目標(biāo)的子域名和子域名的信息;基于第3點(diǎn),收集的信息應(yīng)該對(duì)安全人員分析目標(biāo)Web系統(tǒng)的安全性有所幫助,這就要求不能只收集目標(biāo)的備案信息、Whois等此類常見信息,還應(yīng)該收集對(duì)分析目標(biāo)安全性有所幫助的信息,比如目標(biāo)Web的CMS信息、域名對(duì)應(yīng)IP的端口開放信息,甚至是目標(biāo)的漏洞信息。
經(jīng)過上述分析后,目前該工具主要實(shí)現(xiàn)的功能有:收集目標(biāo)的備案、Whois、子域名、子域名IP、子域名CMS、子域名 Shodan、子域名漏洞信息。
2 系統(tǒng)功能
本文研發(fā)了一種基于被動(dòng)信息收集的Web安全評(píng)估系統(tǒng),該系統(tǒng)由Python開發(fā)[8],由于考慮到會(huì)使用大量爬蟲,因此采用了較為成熟的Scrapy爬蟲框架進(jìn)行開發(fā),以減輕開發(fā)任務(wù)量[9],該系統(tǒng)主要實(shí)現(xiàn)功能有對(duì)目標(biāo)Web系統(tǒng)的備案信息、Whois信息、子域名信息、子域名IP信息、子域名CMS信息、子域名 Shodan信息、子域名漏洞信息進(jìn)行被動(dòng)收集。
(1)備案信息查詢模塊。備案信息查詢模塊數(shù)據(jù)來(lái)源自98api.cn,利用Scrapy獲取該網(wǎng)站的API接口信息,由于爬取結(jié)果是JSON數(shù)據(jù)格式,所以可以很方便的進(jìn)行數(shù)據(jù)分析與清理,最后將清理后的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)并進(jìn)行輸出顯示。
(2)Whois信息查詢模塊。利用Scrapy爬取api.devopsclub.cn的API接口信息,該爬取結(jié)果是JSON數(shù)據(jù)格式,最后將爬取的JSON信息進(jìn)行數(shù)據(jù)分析清洗后存儲(chǔ)到數(shù)據(jù)庫(kù)并進(jìn)行輸出顯示。
(3)子域名信息查詢模塊。子域名信息查詢模塊數(shù)據(jù)來(lái)源自dnsscan.cn,利用Scrapy獲取該網(wǎng)站的信息后,由于爬取結(jié)果是HTML格式,因此可以使用Python的第三方庫(kù)BeautifulSoup對(duì)其進(jìn)行解析,最后將解析結(jié)果進(jìn)行分析與清理,繼而存儲(chǔ)到數(shù)據(jù)庫(kù)并進(jìn)行輸出顯示。
(4)子域名IP信息查詢模塊。子域名IP信息查詢模塊使用了tools.bugscaner.com的數(shù)據(jù),該爬取結(jié)果返回?cái)?shù)據(jù)為HTML格式。由于是獲取子域名的IP信息,所以在開始執(zhí)行子域名IP信息查詢之前,需要先判斷數(shù)據(jù)庫(kù)中有無(wú)子域名信息。如果數(shù)據(jù)庫(kù)中不存在目標(biāo)的子域名信息就退出子域名IP信息查詢模塊,如果數(shù)據(jù)庫(kù)中存在目標(biāo)的子域名信息就進(jìn)行子域名的IP信息爬取,對(duì)爬取的結(jié)果進(jìn)行處理后,再進(jìn)行輸出顯示及數(shù)據(jù)庫(kù)的存儲(chǔ)。
(5)子域名CMS信息查詢模塊。子域名CMS信息查詢模塊調(diào)用了whatweb.bugscaner.com的API 接口,該接口返回JSON格式。和子域名IP查詢一樣,在進(jìn)行子域名CMS查詢時(shí),需要先判斷數(shù)據(jù)庫(kù)中有無(wú)目標(biāo)的子域名信息,如果數(shù)據(jù)庫(kù)中沒有目標(biāo)的子域名信息就退出子域名CMS信息查詢模塊,如果數(shù)據(jù)庫(kù)中存在目標(biāo)Web系統(tǒng)的子域名信息就進(jìn)行子域名CMS信息查詢,最后對(duì)爬取的信息進(jìn)行清洗分析后,再進(jìn)行輸出顯示及數(shù)據(jù)庫(kù)的存儲(chǔ)。
(6)子域名Shodan信息查詢模塊。子域名Shodan信息來(lái)源自api.shodan.io,想獲取該接口的信息需要用戶的API Key,因此該模塊需要先判斷數(shù)據(jù)庫(kù)中有無(wú)API Key,如果數(shù)據(jù)庫(kù)中沒有API Key就需要用戶輸入自己的API Key,該API Key可以通過在shodan.io注冊(cè)賬號(hào)獲取。在檢測(cè)到API Key之后,將判斷數(shù)據(jù)庫(kù)中有無(wú)子域名信息,如果數(shù)據(jù)庫(kù)中沒有目標(biāo)的子域名信息就退出,如果數(shù)據(jù)庫(kù)中有目標(biāo)的子域名信息就進(jìn)行子域名Shodan信息的查詢,通過爬蟲獲取API接口信息,之后進(jìn)行數(shù)據(jù)清洗與存儲(chǔ),最后進(jìn)行輸出顯示。
(7)子域名漏洞信息查詢模塊。子域名漏洞信息查詢模塊使用了cnnvd.org.cn數(shù)據(jù),該模塊在運(yùn)行前,需要判斷數(shù)據(jù)庫(kù)中有無(wú)目標(biāo)的CVE信息,該信息來(lái)源自“子域名Shodan信息查詢模塊”的結(jié)果。如果數(shù)據(jù)庫(kù)中不存在目標(biāo)子域的CVE信息,就退出子域名漏洞信息查詢模塊,如果數(shù)據(jù)庫(kù)中存在目標(biāo)的相關(guān)CVE信息,就利用爬蟲進(jìn)行數(shù)據(jù)獲取,再對(duì)數(shù)據(jù)進(jìn)行解析,最后對(duì)結(jié)果進(jìn)行數(shù)據(jù)庫(kù)的存儲(chǔ)與輸出。
3 系統(tǒng)結(jié)構(gòu)
系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)如圖1所示,用戶輸入目標(biāo)的URL后,先由 “功能模塊1”進(jìn)行目標(biāo)URL的被動(dòng)信息收集,將收集到的數(shù)據(jù)存入數(shù)據(jù)庫(kù)后,再由“功能模塊2”調(diào)取數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行被動(dòng)信息收集,最后輸出結(jié)果。
本系統(tǒng)中的功能模塊主要分成2個(gè)部分,分別是功能模塊1和功能模塊2。功能模塊1包括:備案信息、Whois信息、子域名信息這3個(gè)查詢模塊;功能模塊2包括:子域名IP信息、子域名CMS信息、子域名Shodan信息、子域名漏洞信息這4個(gè)查詢模塊。整體結(jié)構(gòu)如圖2所示。
(1)功能模塊1。功能模塊1不需要調(diào)取數(shù)據(jù)庫(kù)里的數(shù)據(jù),直接對(duì)用戶輸入的URL進(jìn)行被動(dòng)信息收集,功能模塊1所爬取的數(shù)據(jù)將被功能模塊2所調(diào)用。
(2)功能模塊2。功能模塊2里的所有模塊都需要先調(diào)取數(shù)據(jù)庫(kù)里的數(shù)據(jù),在進(jìn)行相關(guān)URL的被動(dòng)信息收集后,再將收集到的數(shù)據(jù)存入數(shù)據(jù)庫(kù)并進(jìn)行輸出顯示,因此要想執(zhí)行“功能模塊2”必須先執(zhí)行“功能模塊1”。
4 性能分析
為了測(cè)試本系統(tǒng)的被動(dòng)信息收集工具性能,將通過分析使用傳統(tǒng)的被動(dòng)信息收集方式與使用本文所開發(fā)的被動(dòng)信息收集工具的方式所消耗的時(shí)間及硬件資源進(jìn)行對(duì)比。傳統(tǒng)的被動(dòng)信息收集方式即是指通過瀏覽器訪問第三方網(wǎng)站,繼而在第三方網(wǎng)站上獲取目標(biāo)信息的方式。在被動(dòng)信息收集結(jié)果一致、性能分析測(cè)試環(huán)境一致的情況下,對(duì)使用傳統(tǒng)的被動(dòng)信息收集方式與使用本文所開發(fā)的被動(dòng)信息收集工具的方式進(jìn)行性能分析測(cè)試,測(cè)試結(jié)果如表1及表2所示。
結(jié)合表1時(shí)間消耗性能分析表和表2硬件消耗性能分析表,可以得到使用本工具相對(duì)于傳統(tǒng)方法的性能節(jié)省倍數(shù)統(tǒng)計(jì)圖,如圖3所示。
使用本文開發(fā)的被動(dòng)信息收集工具相較于傳統(tǒng)的被動(dòng)信息收集方法,在時(shí)間上降低了5.88倍,在CPU使用率上降低2.14倍,在內(nèi)存消耗上降低了1.3倍,在硬盤傳輸字節(jié)上降低了2.02倍,在網(wǎng)絡(luò)傳輸字節(jié)上降低了1.07倍。綜上所述,不論是時(shí)間消耗的性能分析還是硬件消耗的性能分析,本文所開發(fā)的被動(dòng)信息收集工具都要優(yōu)于傳統(tǒng)的被動(dòng)信息收集方法。
5 結(jié)語(yǔ)
本系統(tǒng)是基于被動(dòng)信息收集的原理,通過收集目標(biāo)URL的備案信息、Whois信息、子域名信息、子域名IP信息、子域名CMS信息、子域名Shodan信息、子域名漏洞信息來(lái)實(shí)現(xiàn)對(duì)目標(biāo)的被動(dòng)信息收集??梢员WC網(wǎng)絡(luò)安全人員在滲透測(cè)試的過程中,在不影響目標(biāo)服務(wù)器資源同時(shí)不被目標(biāo)發(fā)現(xiàn)的前提下,幫助滲透測(cè)試人員,高效快速地對(duì)目標(biāo)進(jìn)行被動(dòng)信息收集,提高滲透測(cè)試人員對(duì)目標(biāo)Web安全性評(píng)估的效率。
參考文獻(xiàn)
[1]洪藝強(qiáng).淺析我國(guó)網(wǎng)絡(luò)安全現(xiàn)狀以及未來(lái)技術(shù)發(fā)展趨勢(shì)[J].電腦迷,2018,12:43.
[2]張?zhí)N昭.中國(guó)特色治網(wǎng)之道:理念與成就——十八大以來(lái)我國(guó)網(wǎng)絡(luò)空間治理的回顧與思考[J].中國(guó)行政管理,2019,1:28.
[3]鄧若伊.以法制保障網(wǎng)絡(luò)空間安全構(gòu)筑網(wǎng)絡(luò)強(qiáng)國(guó)——《網(wǎng)絡(luò)安全法》和《國(guó)家網(wǎng)絡(luò)空間安全戰(zhàn)略》解讀[J].電子政務(wù),2017,2:2-35.
[4]張宏莉.網(wǎng)絡(luò)空間安全人才培養(yǎng)的規(guī)劃建議[J].網(wǎng)絡(luò)與信息安全學(xué)報(bào),2016,2(3):1-9.
[5]常艷.網(wǎng)絡(luò)安全滲透測(cè)試研究[J].信息網(wǎng)絡(luò)安全,2012,12(11):3-4.
[6]宋超臣.Web滲透測(cè)試流程研究[J].電子設(shè)計(jì)工程,2014,22(17):165-167.
[7]劉炎.被動(dòng)網(wǎng)絡(luò)信息收集與分析技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2007,02:308-309.
[8]夏敏捷,楊關(guān).Python程序設(shè)計(jì)從基礎(chǔ)到開發(fā)[M].清華大學(xué)出版社:崧博出版,2019:2.
[9]安子建.基于Scrapy框架的網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)與數(shù)據(jù)抓取分析[J].長(zhǎng)春:吉林大學(xué),2017.