本發(fā)明屬于互聯(lián)網(wǎng)搜索技術(shù)領(lǐng)域,更具體地,涉及一種可以對在線主機設(shè)備和web組件進行綜合檢索的互聯(lián)網(wǎng)重要地址空間檢索系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)的快速發(fā)展,各種網(wǎng)絡(luò)設(shè)備、服務器、操作系統(tǒng)、編程語言、開源組件、開發(fā)技術(shù)等構(gòu)成了豐富多彩的網(wǎng)絡(luò)世界。然而繽紛之下卻暗藏著危機,漏洞的存在讓互聯(lián)網(wǎng)時刻處于不安全的狀態(tài)。
許多互聯(lián)網(wǎng)公司針對網(wǎng)絡(luò)安全問題推出了一系列的安全產(chǎn)品,例如360的可信網(wǎng)站認證開放平臺通過認證聯(lián)盟、憑安信用、沃通等信用來源來對網(wǎng)站進行安全身份認證,有效打擊危險網(wǎng)站,為用戶打造安全的上網(wǎng)環(huán)境。國舜科技公司推出的一款網(wǎng)頁防篡改防護系統(tǒng)unisguard,采用動靜結(jié)合的防護方式同時對網(wǎng)頁文件以及web訪問交互數(shù)據(jù)進行監(jiān)控,有效防止惡意篡改和攻擊。安全寶曾是創(chuàng)新工場中唯一一個在安全領(lǐng)域投資的項目,如今已被百度收購,也是一款網(wǎng)站安全防護軟件。這些產(chǎn)品都是針對單一的網(wǎng)站或網(wǎng)頁出現(xiàn)的安全問題來實施安全防護措施,然而目前的大多數(shù)漏洞攻擊都是基于網(wǎng)絡(luò)設(shè)備本身的缺陷或者網(wǎng)站組件(操作系統(tǒng)、開放服務、web容器、開源web組件、web應用等)的缺陷進行的。一旦不法分子開發(fā)出針對某個組件或者主機設(shè)備的漏洞利用代碼,就可以使一批網(wǎng)站或者設(shè)備淪陷。
為了防范針對網(wǎng)站組件和主機設(shè)備的漏洞攻擊,維護互聯(lián)網(wǎng)的安全,需要對一批相關(guān)網(wǎng)站所使用的組件和在線主機設(shè)備的指紋信息進行詳細的識別和記錄,以便在它們暴露出安全漏洞時,及時得到它們的詳細信息,評估漏洞對它們的影響,進而分析出漏洞影響的網(wǎng)站列表和主機設(shè)備列表,并通知仍在使用這些組件或主機設(shè)備的網(wǎng)站管理員進行組件更新或主機設(shè)備升級等安全加固措施,因此網(wǎng)絡(luò)空間搜索引擎應運而生。
目前已有的網(wǎng)絡(luò)空間搜索引擎,包括國外的shodan,在全球查詢ip地址,在若干常見端口查找和保存系統(tǒng)旗標信息(banner)。用戶可以在這些banner中查詢關(guān)鍵詞,通過元數(shù)據(jù)(端口、ip、域名等)進行過濾。其工作原理是對各類設(shè)備的端口產(chǎn)生的banner進行審計而產(chǎn)生搜索結(jié)果,側(cè)重于網(wǎng)絡(luò)設(shè)備。國內(nèi)的zoomeye由互聯(lián)網(wǎng)安全廠商知道創(chuàng)宇公司創(chuàng)建,名字譯為“鐘馗之眼”,是一個針對網(wǎng)絡(luò)空間中web服務組件而制作的搜索引擎,它側(cè)重于發(fā)現(xiàn)網(wǎng)絡(luò)或網(wǎng)站的組成部分,即web服務組件。
針對主機設(shè)備的指紋采集,主要目的是獲取全網(wǎng)ip以及網(wǎng)絡(luò)設(shè)備信息,比較常用的是一款模塊化的掃描全網(wǎng)ipv4地址的工具——zmap,由美國密歇根大學研究者開發(fā)。在第22屆usenix安全研討會上,以超過nmap1300倍的掃描速度聲名鵲起。它能夠通過一臺機器在45分鐘內(nèi)掃描互聯(lián)網(wǎng)上所有的ipv4地址空間,其掃描的結(jié)果達到了98%的覆蓋率。
現(xiàn)有的網(wǎng)絡(luò)空間搜索引擎系統(tǒng)大多存在以下幾點問題:
(1)有的系統(tǒng)偏重于主機層面的資產(chǎn)發(fā)現(xiàn),而有些則偏重于web層面的資產(chǎn)發(fā)現(xiàn),它們均沒有綜合考慮主機設(shè)備和web組件,并且對標識web組件的海量數(shù)據(jù)沒有進行合理的整合和優(yōu)化。
(2)在對關(guān)鍵字進行檢索的時候,現(xiàn)有搜索引擎系統(tǒng)返回數(shù)據(jù)的本質(zhì)就是其內(nèi)部積累的數(shù)據(jù)以及使用web指紋識別程序識別出來的數(shù)據(jù),但一個識別程序只能針對一個組件,缺乏針對指紋庫內(nèi)組件的合理分類標準。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進需求,本發(fā)明的目的在于提供了一種分布式的互聯(lián)網(wǎng)重要地址空間檢索系統(tǒng),由此解決現(xiàn)有的網(wǎng)絡(luò)空間搜索引擎系統(tǒng)沒有綜合考慮主機設(shè)備和web組件,沒有對標識web組件的海量數(shù)據(jù)進行合理的整合和優(yōu)化以及缺乏針對指紋庫內(nèi)組件的合理分類標準的技術(shù)問題。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種分布式的互聯(lián)網(wǎng)重要地址空間檢索系統(tǒng),包括:系統(tǒng)管理模塊、網(wǎng)站信息收集模塊、數(shù)據(jù)庫模塊、檢索和統(tǒng)計模塊、webui模塊;
所述系統(tǒng)管理模塊,用于導入待掃描網(wǎng)站列表,管理網(wǎng)站組件指紋,提交即時掃描任務并查看任務進度,收集系統(tǒng)中各部分的運行狀態(tài)并分別對各部分的運行狀態(tài)進行管理和控制,其中,所述待掃描網(wǎng)站列表中包括需要周期性掃描的網(wǎng)站信息;
所述網(wǎng)站信息收集模塊,用于針對所述待掃描網(wǎng)站列表中的域名或ip地址進行web頁面爬取、web組件識別、網(wǎng)站服務器主機掃描、端口探測;
所述數(shù)據(jù)庫模塊,用于保存所述待掃描網(wǎng)站列表、所述網(wǎng)站組件指紋、掃描策略以及掃描結(jié)果;
所述檢索和統(tǒng)計模塊,用于對保存在所述數(shù)據(jù)庫模塊中的掃描結(jié)果進行關(guān)鍵字檢索,并對檢索結(jié)果進行統(tǒng)計分析;
所述webui模塊,用于提供web界面,采用b/s模式完成用戶和系統(tǒng)的交互,提供系統(tǒng)管理、網(wǎng)站組件指紋更新、即時掃描任務提交、掃描結(jié)果查詢與統(tǒng)計、信息導入導出功能。
優(yōu)選地,所述數(shù)據(jù)庫模塊包括:元信息數(shù)據(jù)庫模塊、組件指紋數(shù)據(jù)庫模塊、掃描結(jié)果數(shù)據(jù)庫模塊;
所述元信息數(shù)據(jù)庫模塊,用于管理所述待掃描網(wǎng)站列表,其中,所述待掃描網(wǎng)站列表包括需要周期性掃描的網(wǎng)站的信息;
所述組件指紋數(shù)據(jù)庫模塊,用于存儲所述網(wǎng)站組件指紋,其中,所述網(wǎng)站組件指紋包含組件名稱、組件特征集合和組件識別規(guī)則;
所述掃描結(jié)果數(shù)據(jù)庫模塊,用于存儲所述網(wǎng)站信息收集模塊收集到的掃描結(jié)果,其中,所述掃描結(jié)果包括周期性掃描作業(yè)的執(zhí)行結(jié)果和即時掃描任務的執(zhí)行結(jié)果。
優(yōu)選地,所述系統(tǒng)管理模塊包括:網(wǎng)站元信息導入模塊、系統(tǒng)運行狀態(tài)管理模塊、即時任務管理模塊、指紋庫管理模塊;
所述網(wǎng)站元信息導入模塊,用于導入所述待掃描網(wǎng)站列表,其中,所述待掃描網(wǎng)站列表中包括需要周期性掃描的網(wǎng)站的信息;
所述系統(tǒng)運行狀態(tài)管理模塊,用于解析系統(tǒng)的配置,啟動或停止系統(tǒng)中其它模塊的運行,獲取其它各模塊的運行狀態(tài)信息,并對其它各模塊的運行狀態(tài)進行調(diào)整和控制;
所述即時任務管理模塊,用于管理和調(diào)度即時掃描任務的執(zhí)行,并跟蹤即時掃描任務執(zhí)行的狀態(tài)進度;
所述指紋庫管理模塊,用于管理所述組件指紋數(shù)據(jù)庫模塊中的網(wǎng)站組件指紋。
優(yōu)選地,所述網(wǎng)站信息收集模塊包括:任務調(diào)度模塊、消息隊列模塊、數(shù)據(jù)爬取模塊、分析識別模塊;
所述任務調(diào)度模塊,用于解析所述待掃描網(wǎng)站列表中的周期性掃描任務以及用戶提交的即時掃描任務,利用所述組件指紋數(shù)據(jù)庫解析出網(wǎng)站組件指紋識別過程中需要從服務器下載的信息,并調(diào)度所述數(shù)據(jù)爬取模塊從網(wǎng)站下載所述信息;
所述消息隊列模塊,用于供所述任務調(diào)度模塊向所述數(shù)據(jù)爬取模塊以消息隊列的方式傳遞下載任務;
所述數(shù)據(jù)爬取模塊,用于將爬取的信息通過消息隊列傳遞給所述分析識別模塊;
所述分析識別模塊,用于根據(jù)所述組件指紋數(shù)據(jù)庫模塊中的組件特征集合以及組件識別規(guī)則,對所述數(shù)據(jù)爬取模塊爬取的信息進行分析整理,將得到的網(wǎng)站內(nèi)容信息、網(wǎng)站組件信息以及用以識別出網(wǎng)站組件的特征數(shù)據(jù)存入所述掃描結(jié)果數(shù)據(jù)庫模塊。
優(yōu)選地,所述檢索和統(tǒng)計模塊包括:關(guān)鍵字檢索模塊和統(tǒng)計報表生成模塊;
所述關(guān)鍵字檢索模塊,用于提供針對保存在所述掃描結(jié)果數(shù)據(jù)庫模塊中的掃描結(jié)果的關(guān)鍵字檢索功能;
所述統(tǒng)計報表生成模塊,用于為檢索得到的結(jié)果生成預設(shè)格式的統(tǒng)計報表,所述統(tǒng)計報表用于掃描結(jié)果信息導出。
優(yōu)選地,所述webui模塊包括:webui查詢模塊和webui管理模塊;
所述webui查詢模塊,用于輸出結(jié)果查詢分析界面,并將用戶輸入的查詢請求發(fā)送給所述檢索和統(tǒng)計模塊;
所述webui管理模塊,用于提供站點元信息管理、系統(tǒng)狀態(tài)管理、指紋庫管理、即時任務管理,其中,所述站點元信息管理用于提供待掃描網(wǎng)站列表以及網(wǎng)站附加信息的輸入、查詢和導出功能,所述系統(tǒng)狀態(tài)管理用于展示系統(tǒng)中其它模塊的運行狀態(tài)信息,并輸出控制界面,以便于用戶控制系統(tǒng)中其它模塊的運行,所述指紋庫管理用于提供網(wǎng)站組件指紋的管理界面,所述即時任務管理用于提供提交和管理即時任務的功能。
優(yōu)選地,所述數(shù)據(jù)爬取模塊,具體用于通過定制爬蟲從用戶提交的url列表下載對應的web內(nèi)容,其中,所述下載過程為:開始抓取特定站點內(nèi)容時,種子url為該特定站點的首頁地址,將指向該特定站點的url加入下載隊列中,使內(nèi)容抓取只針對特定站點進行,有效限制爬取范圍。
優(yōu)選地,所述分析識別模塊中的分析識別過程包含被動檢測和主動分析兩個階段,所述分析識別模塊,具體用于首先從所述組件指紋數(shù)據(jù)庫模塊中讀取組件特征集合,然后確定從目標站點下載內(nèi)容的目標url和發(fā)送的探測ip報文,接著向目標url發(fā)送get請求或向網(wǎng)站主機發(fā)送探測ip報文,獲得從網(wǎng)站主機返回的數(shù)據(jù),通過分析http響應或者回送ip報文判斷是否檢測出組件的各個特征,最后根據(jù)檢測出的特征集合和匹配規(guī)則判斷目標站點是否使用了該網(wǎng)站指紋組件。
優(yōu)選地,所述系統(tǒng)采用分布式部署,所述系統(tǒng)的各模塊部署在同一個局域網(wǎng)的多臺服務器上,部署在不同服務器上的模塊之間通過遠程過程調(diào)用相互通信,且在集群中至少負責所述網(wǎng)站信息收集模塊的服務器能夠訪問互聯(lián)網(wǎng)。
總體而言,本發(fā)明方法與現(xiàn)有技術(shù)方案相比,能夠取得下列有益效果:
(1)本發(fā)明是一種集web組件掃描、鏈接分析、主機掃描、地址空間搜索等功能于一體的分布式的互聯(lián)網(wǎng)重要地址空間檢索系統(tǒng)。
(2)能夠準確及時地發(fā)現(xiàn)互聯(lián)網(wǎng)上的安全漏洞,推動監(jiān)管部門在漏洞出來的第一時間盡快解決,促進安全領(lǐng)域的進展。
(3)本發(fā)明的整個系統(tǒng)分布式架構(gòu)于一個集群之上,集群計算節(jié)點能夠根據(jù)掃描任務的多少進行動態(tài)增減,系統(tǒng)提供完善的web界面對所有的功能部件進行動態(tài)管理和使用。
(4)可以支持檢測多種國內(nèi)網(wǎng)站常用組件,并且具有檢測準確率高的嚴格分類式插件—web組件檢測功能。
(5)支持快速掃描網(wǎng)站所有web服務器的操作系統(tǒng)、開放端口、端口協(xié)議、服務軟件等信息,并根據(jù)網(wǎng)站ip地址準確定位服務器地理位置的主機掃描功能。
(6)支持根據(jù)用戶輸入的檢索條件,列出所有滿足條件的網(wǎng)站的詳細信息,并按照網(wǎng)站所屬機構(gòu)的等級進行排序的地址空間搜索功能。
(7)同時具備web組件檢測和主機掃描功能,并采用分布式部署和前后端分離的架構(gòu),還增加了集群管理模塊,方便用戶對整個系統(tǒng)進行實時監(jiān)控和管理。
(8)對web組件進行了嚴格分類,并且能夠達到自動化更新。同時根據(jù)用戶需求對需要檢測的網(wǎng)站,以及指紋庫中的每個web組件檢測差距劃定了等級,并根據(jù)網(wǎng)站等級和插件等級確定了系統(tǒng)在檢測網(wǎng)站時需要使用的插件集合,達到了重要網(wǎng)站詳細檢測,不重要網(wǎng)站粗略檢測的目的,合理配置了系統(tǒng)的計算資源。
(9)本發(fā)明是一個采用主從架構(gòu)模式的分布式系統(tǒng),能夠并行地執(zhí)行內(nèi)容爬取、web組件被動檢測、web組件主動探測和主機掃描等任務,具有穩(wěn)定高效、可定制性高的優(yōu)點。
附圖說明
圖1為本發(fā)明實施例公開的一種分布式的互聯(lián)網(wǎng)重要地址空間檢索系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例公開的一種系統(tǒng)管理模塊的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實施例公開的一種網(wǎng)站信息收集模塊的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例公開的一種組件指紋數(shù)據(jù)庫模塊的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例公開的一種檢索和統(tǒng)計模塊的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例公開的一種系統(tǒng)整體部署結(jié)構(gòu)圖;
圖7是本發(fā)明實施例公開的一種分布式掃描子系統(tǒng)整體結(jié)構(gòu)圖;
圖8是本發(fā)明實施例公開的一種針對特定相關(guān)站點的內(nèi)容抓取結(jié)構(gòu)示意圖;
圖9是本發(fā)明實施例公開的一種web組件層次結(jié)構(gòu);
圖10是本發(fā)明實施例公開的一種web組件指紋組織形式;
圖11是本發(fā)明實施例公開的一種web組件檢測流程圖;
圖12是本發(fā)明實施例公開的一種webui模塊與其他模塊交互示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,本發(fā)明包括系統(tǒng)管理模塊100、網(wǎng)站信息收集模塊200、元信息數(shù)據(jù)庫模塊300、組件指紋數(shù)據(jù)庫模塊400、掃描結(jié)果數(shù)據(jù)庫模塊500、檢索和統(tǒng)計模塊600、webui查詢模塊700和webui管理模塊800。
系統(tǒng)管理模塊100用于導入需要索引的網(wǎng)站信息,管理組件識別指紋庫,提交即時掃描任務并查看任務進度,收集系統(tǒng)中各個部分的運行狀態(tài)并分別對其進行管理和控制。
其中,系統(tǒng)管理模塊100又分為網(wǎng)站元信息導入模塊110、系統(tǒng)運行狀態(tài)管理模塊120、即時任務管理模塊130、指紋庫管理模塊140四個子模塊;其中網(wǎng)站元信息導入模塊110用于導入需要定期掃描的網(wǎng)站的域名或ip地址、服務器所在位置、網(wǎng)站類型、所屬機構(gòu)等信息,系統(tǒng)后續(xù)的周期性掃描將針對該模塊導入的網(wǎng)站列表進行。系統(tǒng)運行狀態(tài)管理模塊120用于解析系統(tǒng)的配置,啟動和停止系統(tǒng)中的其他模塊的運行,獲取其他各個模塊的運行狀態(tài)信息,并對其他模塊的運行狀態(tài)進行調(diào)整和控制。即時任務管理模塊130用于管理和調(diào)度及時掃描任務的執(zhí)行,并跟蹤任務執(zhí)行的狀態(tài)進度。指紋庫管理模塊140用于管理指紋數(shù)據(jù)庫中的網(wǎng)站組件指紋。系統(tǒng)管理模塊100的內(nèi)部結(jié)構(gòu)圖如圖2所示。
網(wǎng)站信息收集模塊200是系統(tǒng)的后端,用于處理來自系統(tǒng)管理模塊提交的掃描任務,存儲來自元信息數(shù)據(jù)庫模塊300的域名或ip地址,并負責將掃描結(jié)果發(fā)送給掃描數(shù)據(jù)庫模塊500。
其中,網(wǎng)站信息收集模塊200又分為任務調(diào)度模塊210、消息隊列模塊220、數(shù)據(jù)爬取模塊230、分析識別模塊240四個子模塊。其中任務調(diào)度模塊210用于解析周期性掃描任務以及用戶提交的及時掃描任務,利用組件指紋數(shù)據(jù)庫解析出網(wǎng)站組件識別過程中需要從服務器下載的信息,并調(diào)度數(shù)據(jù)爬取模塊從一定的網(wǎng)站下載相關(guān)數(shù)據(jù)。消息隊列模塊220供任務調(diào)度模塊210向數(shù)據(jù)爬取模塊230以消息隊列的方式傳遞下載任務,并跟蹤各個掃描識別模塊的運行狀態(tài)。同時,數(shù)據(jù)爬取模塊230爬取的信息也通過消息隊列傳遞給分析識別模塊240。分析識別模塊240是整個系統(tǒng)的核心,該模塊根據(jù)指紋庫中的組件指紋特征以及組件識別規(guī)則,對數(shù)據(jù)爬取模塊230獲得的數(shù)據(jù)進行分析整理。最終將得出的網(wǎng)站內(nèi)容信息和網(wǎng)站組件信息以及用以識別出該組件的特征數(shù)據(jù)存入掃描結(jié)果數(shù)據(jù)庫模塊500中,供檢索統(tǒng)計模塊600檢索和統(tǒng)計。網(wǎng)站信息收集模塊200的內(nèi)部結(jié)構(gòu)圖如圖3所示。
元信息數(shù)據(jù)庫模塊300用于管理需要周期性掃描的網(wǎng)站的域名、掃描優(yōu)先級、網(wǎng)站類型、地理位置、所屬機構(gòu)等信息,用戶可以根據(jù)這些信息對掃描結(jié)果進行查詢和統(tǒng)計。當有掃描任務時,網(wǎng)站信息收集模塊200會從元信息數(shù)據(jù)庫模塊300提取域名或ip地址。
組件指紋數(shù)據(jù)庫模塊400用于存儲用戶輸入的掃描數(shù)據(jù)項、組件指紋特征、組件識別規(guī)則等信息,供指紋管理模塊410和掃描識別模塊420使用。當有掃描任務時,網(wǎng)站信息收集模塊200會從組件指紋數(shù)據(jù)庫模塊400提取網(wǎng)站組件指紋。組件指紋數(shù)據(jù)庫模塊400的內(nèi)部結(jié)構(gòu)圖如圖4所示。
掃描結(jié)果數(shù)據(jù)庫模塊500用于存儲網(wǎng)站信息收集模塊200收集到的掃描結(jié)果,包括周期性掃描作業(yè)的執(zhí)行結(jié)果和即時掃描任務的執(zhí)行結(jié)果,供檢索和統(tǒng)計模塊600讀取和使用。
檢索和統(tǒng)計模塊600用于對保存在數(shù)據(jù)庫中的掃描結(jié)果進行關(guān)鍵字檢索,并對檢索結(jié)果進行統(tǒng)計分析。該模塊包含關(guān)鍵字檢索模塊610和統(tǒng)計報表生成模塊620兩個部分。其中關(guān)鍵字檢索模塊610用于提供針對掃描結(jié)果的關(guān)鍵字檢索功能,用于檢索的關(guān)鍵字信息包括:ip地址、域名、協(xié)議信息、網(wǎng)頁中特定內(nèi)容、服務器、所屬機構(gòu)、網(wǎng)站組件等。統(tǒng)計報表生成模塊620用于為檢索得到的結(jié)果生成特定格式的統(tǒng)計報表,方便用于掃描結(jié)果信息導出。檢索和統(tǒng)計模塊600的內(nèi)部結(jié)構(gòu)圖如圖5所示
webui查詢模塊700主要是用于結(jié)果查詢分析,提供結(jié)果查詢分析界面為用戶提供掃描結(jié)果展示功能,用戶可以在界面上通過關(guān)鍵字查詢掃描結(jié)果,并可以按照特定的格式生成結(jié)果報表并導出。當生成用戶查詢請求時,負責發(fā)送給檢索和統(tǒng)計模塊600。
webui管理模塊800提供站點元信息管理、系統(tǒng)狀態(tài)管理、指紋庫管理、即時任務管理共4個功能。其中站點元信息管理用于向用戶提供待掃描站點列表以及站點附加信息的輸入、查詢和導出功能。系統(tǒng)狀態(tài)管理向用戶展示系統(tǒng)中其他模塊的運行狀態(tài)信息,并提供控制界面,方便用戶控制系統(tǒng)中的其他模塊的運行。指紋庫管理為用戶提供指紋數(shù)據(jù)庫的管理界面,管理諸如web組件類型,檢測過程中需要獲取的數(shù)據(jù)項、組件指紋信息、組件識別規(guī)則等信息。即時任務管理為用戶提供提交和管理即時任務的功能。用戶將任務提交后可以查看任務的運行狀態(tài),并可以控制任務的執(zhí)行。
本系統(tǒng)擬采用分布式部署,整個系統(tǒng)的各個模塊部署在同一個局域網(wǎng)的多臺計算機上,部署在不同主機上的模塊之間通過遠程過程調(diào)用相互通信。本方案視模塊之間耦合的緊密程度和系統(tǒng)擴展性需求來決定各個主機上模塊的部署。由于系統(tǒng)中包含了網(wǎng)站信息收集模塊200,所以要求整個集群中至少負責網(wǎng)站信息掃描的服務器能夠訪問互聯(lián)網(wǎng)。
系統(tǒng)的整體部署結(jié)構(gòu)圖如圖6所示。其中系統(tǒng)管理服務器上部署系統(tǒng)管理模塊100的相關(guān)功能,處理系統(tǒng)的用戶輸入,并對其他各個模塊的運行狀態(tài)進行監(jiān)控可管理。web前端服務器上部署webui查詢模塊700和webui管理模塊800的相關(guān)功能,以web頁面的方式向用戶提供信息錄入、掃描結(jié)果查詢、作業(yè)提交和狀態(tài)管理的功能。為了減少數(shù)據(jù)網(wǎng)絡(luò)傳輸,檢索和統(tǒng)計模塊600、元信息數(shù)據(jù)庫模塊300、組件指紋數(shù)據(jù)庫模塊400、掃描結(jié)果數(shù)據(jù)庫模500部署在存儲和檢索服務器組中,服務器組中的各臺服務器都部署有這四個模塊,組內(nèi)服務器之間協(xié)作完成數(shù)據(jù)的存儲和檢索功能。為了提高系統(tǒng)的可擴展性,將網(wǎng)站信息收集模塊200分為4個部分來部署,該模塊是本發(fā)明的分布式掃描子系統(tǒng),其結(jié)構(gòu)如圖7所示。掃描調(diào)度器上部署任務調(diào)度模塊210的相關(guān)功能,該模塊通過查詢組件指紋數(shù)據(jù)庫模塊400,將掃描作業(yè)中的網(wǎng)站列表轉(zhuǎn)化為需要從網(wǎng)站采集的數(shù)據(jù)列表,并將調(diào)度信息和待采集的數(shù)據(jù)一起寫入消息隊列服務器中。通過消息隊列模塊220在掃描調(diào)度服務器與數(shù)據(jù)爬取服務器組,數(shù)據(jù)爬取服務器組與分析識別服務器組中傳遞數(shù)據(jù)和信息。數(shù)據(jù)爬取服務器組上部署數(shù)據(jù)爬取模塊230的相關(guān)功能,組內(nèi)爬取服務器從消息隊列服務器獲得需要爬取的任務列表,并從指定網(wǎng)站爬取數(shù)據(jù)。其中,每臺主機只負責爬取特定類型的數(shù)據(jù),即只從消息隊列中取出和自己能夠爬取的內(nèi)容相關(guān)的爬取任務并將爬取的數(shù)據(jù)與分析任務類型存入消息隊列服務器中。此外,組內(nèi)各個主機之間功能上相互獨立,可根據(jù)系統(tǒng)數(shù)據(jù)爬取的任務負載增添和減少服務器數(shù)量。分析識別服務器組上部署分析識別模塊240的相關(guān)功能,該服務器從消息隊列中取出爬取模塊下載的數(shù)據(jù)和分析任務信息,完成內(nèi)容分析和組件識別功能,并將得出的結(jié)果存入數(shù)據(jù)庫中。分析識別任務屬于計算類型任務,對組內(nèi)各臺服務器的性能有較高的要求,并且它們之間功能上相互獨立,可根據(jù)系統(tǒng)分析任務負載來增加和減少服務器數(shù)量。
本發(fā)明的系統(tǒng)后臺實現(xiàn)分布式的web內(nèi)容抓取、web組件識別和主機掃描功能,整個后臺系統(tǒng)的流程包括:
(1)web內(nèi)容抓取階段,網(wǎng)站信息收集模塊200中的數(shù)據(jù)爬取模塊230接收來自系統(tǒng)管理模塊100的掃描任務,根據(jù)用戶提交的統(tǒng)一資源定位符(uniformresourcelocator,url)列表進行web內(nèi)容抓取。本發(fā)明采用的是定制“爬蟲”,其特點是將鏈接分成了3類,包括不相關(guān)站點超鏈接、相關(guān)站點超鏈接和本站鏈接。其中相關(guān)站點的超鏈接不跟蹤,相關(guān)站點的超鏈接采用特殊方式處理,本站鏈接則有爬取深度的限制。同時,對鏈接采取多線程和用戶級線程進行處理。
(1.1)單獨下載某些指定url對應的web內(nèi)容,供web組件識別所用,抓取指定的url下的內(nèi)容無需用到調(diào)度隊列,直接通過超文本傳輸協(xié)議(hypertexttransferprotocol,http)協(xié)議下載對應的內(nèi)容即可。
(1.2)迭代抓取整個網(wǎng)站的超文本內(nèi)容,提取其中的郵箱地址和鏈接。抓取一個網(wǎng)站的所有超文本內(nèi)容的過程和傳統(tǒng)的“爬蟲”行為類似,都是以某些url開始對超文本內(nèi)容進行迭代抓取。但與傳統(tǒng)“爬蟲”不同的是,在開始抓取特定站點內(nèi)容時,種子url為站點的首頁地址,只將指向本站點的url加入下載隊列中,這樣可以使內(nèi)容抓取只針對一個網(wǎng)站進行。針對特定相關(guān)站點的內(nèi)容抓取其結(jié)構(gòu)圖如圖8所示,其中超文本分析器使用超級文本標記語言(hypertextmarkuplanguage,html)文檔解析工具從頁面中提取超鏈接和指定的文本內(nèi)容。
(2)第二階段是web組件識別,網(wǎng)站信息收集模塊200中的分析識別模塊240主要用于web組件檢測。組件指紋在指紋庫中按照嚴格的分類標準劃分,由上到下依次分為web前端框架、web應用、web開發(fā)框架、web服務器端語言、web容器、數(shù)據(jù)庫和操作系統(tǒng)等,層次結(jié)構(gòu)如圖9所示。組件指紋在指紋庫中包含組件名稱、組件特征集合和匹配規(guī)則,其組織形式如圖10所示。web組件識別過程又分為被動檢測和主動分析兩個子階段。
(2.1)被動檢測階段根據(jù)已下載的web內(nèi)容的http響應頭、響應主體(html文本、圖片等)推斷網(wǎng)站采用的web組件。
(2.2)主動分析階段制造特定的url與web服務器交互,通過對web服務器返回的信息來推斷其使用的web組件。
web組件識別階段采用的分析識別模塊240首先從組件指紋數(shù)據(jù)庫模塊400中讀取該組件的組件特征結(jié)合。然后根據(jù)特征采集方法確定從目標站點下載內(nèi)容的url和發(fā)送的探測網(wǎng)絡(luò)之間互連的協(xié)議(internetprotocol,ip)報文。接著向特定url發(fā)送get請求或向網(wǎng)站主機發(fā)送探測報文,獲得從主機返回的數(shù)據(jù)。通過分析http響應或者回送ip報文判斷是否檢測出組件的各個特征。最后根據(jù)檢測出特征集合和匹配規(guī)則判斷目標網(wǎng)站是否使用了該組件。具體的web組件檢測流程如圖11所示。
(3)網(wǎng)站信息收集模塊200中的分析識別模塊240還用于主機端口協(xié)議識別,屬于主機掃描階段,該階段用于檢測目標站點的存活性,收集操作系統(tǒng)版本、開放軟件服務、服務器端口號和軟件版本等信息,批量傳遞ip地址,將結(jié)果格式化輸出到掃描結(jié)果數(shù)據(jù)庫模塊500。
本發(fā)明的系統(tǒng)前端包含webui查詢模塊700和webui管理模塊800,這兩個模塊與其他模塊的交互如圖12所示,首先用戶向webui查詢模塊700發(fā)送查詢請求,接著webui管理模塊800向系統(tǒng)管理模塊100、網(wǎng)站信息收集模塊200、元信息數(shù)據(jù)庫模塊300、組件指紋數(shù)據(jù)庫模塊400、掃描結(jié)果數(shù)據(jù)庫模塊500發(fā)起遠程過程調(diào)用,待任務執(zhí)行完成將結(jié)果存儲在掃描結(jié)果數(shù)據(jù)庫模塊500中。檢索和統(tǒng)計模塊600從掃描結(jié)果數(shù)據(jù)庫模塊500中取掃描結(jié)果進行整理和分析,當用戶通過webui查詢模塊700提交查詢請求時,檢索和統(tǒng)計模塊600將檢索和統(tǒng)計結(jié)果發(fā)送給webui查詢模塊700,最終返回給用戶。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。