趙遠(yuǎn)方,張 睿,白 瑋
(陸軍工程大學(xué) 指揮控制工程學(xué)院,南京 210014)
隨著信息社會(huì)的不斷發(fā)展,互聯(lián)網(wǎng)逐漸在國家經(jīng)濟(jì)發(fā)展、國防軍事、科學(xué)研究等領(lǐng)域扮演著愈發(fā)重要的角色。特別是隨著信息時(shí)代的到來,網(wǎng)絡(luò)空間已經(jīng)成為“第五空間”,據(jù)統(tǒng)計(jì)2020 年超過250 億臺(tái)設(shè)備接入互聯(lián)網(wǎng)。網(wǎng)絡(luò)資產(chǎn)探測(cè)技術(shù)也隨著互聯(lián)網(wǎng)規(guī)模的變化不斷更新迭代,為了能夠快速探測(cè)互聯(lián)網(wǎng)資產(chǎn)存活性,獲取其服務(wù)內(nèi)容及脆弱性信息,需要對(duì)網(wǎng)絡(luò)資產(chǎn)進(jìn)行快速探測(cè)且不斷更新,這也是網(wǎng)絡(luò)態(tài)勢(shì)感知的基礎(chǔ)工作。
當(dāng)前的互聯(lián)網(wǎng)探測(cè)技術(shù)大都依賴于單節(jié)點(diǎn)性能和單個(gè)大帶寬網(wǎng)絡(luò)出口,這實(shí)際上限制了互聯(lián)網(wǎng)探測(cè)技術(shù)的應(yīng)用,本文提出一種基于常見性能計(jì)算機(jī)環(huán)境的網(wǎng)絡(luò)狀態(tài)快速探測(cè)方法,使得互聯(lián)網(wǎng)探測(cè)不再受限于單節(jié)點(diǎn)網(wǎng)絡(luò)性能和網(wǎng)絡(luò)帶寬,在保證掃描準(zhǔn)確率不低于現(xiàn)有方法的同時(shí),性能消耗極大降低。
主動(dòng)探測(cè)使用基于服務(wù)指紋的主動(dòng)探測(cè)技術(shù),其探測(cè)內(nèi)容包括:存活性探測(cè)、服務(wù)內(nèi)容探測(cè)、目標(biāo)脆弱性探測(cè)和資產(chǎn)拓?fù)涮綔y(cè)等,是網(wǎng)絡(luò)資產(chǎn)探測(cè)的主要方法。
Nmap 是比較早期的主動(dòng)探測(cè)工具,提供端口掃描、主機(jī)發(fā)現(xiàn)、操作系統(tǒng)識(shí)別等功能[1]。半開放掃描(Half-open scanning)是其經(jīng)典的端口掃描模式,通過發(fā)送SYN 數(shù)據(jù)包到目標(biāo)端口,根據(jù)應(yīng)答數(shù)據(jù)包的返回內(nèi)容判斷端口狀態(tài)[2];DNmap 引入分布式的Nmap 掃描框架實(shí)現(xiàn)了大型網(wǎng)絡(luò)探測(cè)能力[3];ZMap 是美國密歇根大學(xué)研究者開發(fā)的一款開源探測(cè)工具,能在一個(gè)小時(shí)內(nèi)掃描整個(gè)公共互聯(lián)網(wǎng),顯示近40 億在線設(shè)備的信息[4];Masscan 類似于Nmap,是全網(wǎng)級(jí)別的端口掃描工具,速度更快但是在精確度上不如Nmap[5]。Masscan 通過異步傳輸?shù)姆绞竭M(jìn)行,針對(duì)TCP 端口進(jìn)行掃描,同樣使用SYN 掃描的方式,不建立一個(gè)完全的TCP 連接,允許自定義任意的地址范圍和端口范圍,對(duì)于非連續(xù)段IP 的掃描更加高效,可以有效降低目標(biāo)網(wǎng)絡(luò)負(fù)載壓力。Shamai 等[6]提出了單包隨機(jī)理論,對(duì)SYN/ACK 數(shù)據(jù)包的超時(shí)時(shí)間進(jìn)行分析,建立了116 個(gè)操作系統(tǒng)的數(shù)據(jù)庫用于識(shí)別和分類操作系統(tǒng)。
主動(dòng)探測(cè)方法雖然在近年來得到了廣泛應(yīng)用,但其必須保證與目標(biāo)網(wǎng)絡(luò)在同一可達(dá)網(wǎng)絡(luò)之內(nèi)。此外,由于需要向目標(biāo)網(wǎng)絡(luò)發(fā)送探測(cè)數(shù)據(jù)包,可能引發(fā)流量噪聲對(duì)目標(biāo)網(wǎng)絡(luò)造成一定的影響,且只能掌握探測(cè)時(shí)網(wǎng)絡(luò)的情況。
網(wǎng)絡(luò)資產(chǎn)探測(cè)的目標(biāo)是整個(gè)IPv4 地址空間中的網(wǎng)絡(luò)資產(chǎn),由于種類繁多、規(guī)模龐大,要在不影響目標(biāo)網(wǎng)絡(luò)正常運(yùn)行的情況下,高效、快速地進(jìn)行探測(cè),需要考慮統(tǒng)一、有序、合理的探測(cè)架構(gòu)。目前,分布式探測(cè)架構(gòu)已成為各大網(wǎng)絡(luò)空間探測(cè)系統(tǒng)的首選。分布式探測(cè)架構(gòu)通過部署多個(gè)具備資產(chǎn)探測(cè)功能的探測(cè)結(jié)點(diǎn),將IP 地址劃分為多個(gè)探測(cè)目標(biāo)IP列表,通過構(gòu)建探測(cè)結(jié)點(diǎn)選擇策略模型,為各IP 列表選擇合理的探測(cè)結(jié)點(diǎn),進(jìn)而進(jìn)行主機(jī)存活探測(cè)、端口掃描、獲取資產(chǎn)信息等。具體步驟如下:
(1)部署多個(gè)具備資產(chǎn)探測(cè)功能的探測(cè)節(jié)點(diǎn);
(2)控制節(jié)點(diǎn)根據(jù)策略通知探測(cè)節(jié)點(diǎn)掃描IP;
(3)各探測(cè)節(jié)點(diǎn)對(duì)目標(biāo)IP 進(jìn)行主機(jī)存活性探測(cè);
(4)各探測(cè)節(jié)點(diǎn)對(duì)目標(biāo)IP 進(jìn)行開放端口探測(cè);
(5)各探測(cè)節(jié)點(diǎn)對(duì)目標(biāo)IP 開放端口發(fā)送探測(cè)報(bào)文,并與指紋庫對(duì)比,獲取網(wǎng)絡(luò)資產(chǎn)信息。
DNmap 引入分布式的Nmap 掃描框架實(shí)現(xiàn)了大型網(wǎng)絡(luò)探測(cè)能力[7]。CENSYS 是最初由密歇根大學(xué)的研究人員發(fā)行,目前由谷歌提供支持的一款針對(duì)整個(gè)IPv4 地址空間的探測(cè)系統(tǒng)[8]。該系統(tǒng)的多個(gè)掃描工作器先使用ZMap 執(zhí)行主機(jī)發(fā)現(xiàn)掃描,使用掃描插件ZGrab 完成與主機(jī)握手,并從返回包中獲得結(jié)構(gòu)化字段,再將結(jié)構(gòu)化字段存入ZDb 中央數(shù)據(jù)庫中,ZDb 維護(hù)每臺(tái)主機(jī)的當(dāng)前狀態(tài)并將更新的記錄發(fā)送到網(wǎng)絡(luò)前端,研究人員可以在前端查詢數(shù)據(jù)。Shodan 是2009 年由一位美國學(xué)生John Matherly 創(chuàng)建的,在功能上雖然與CENSYS 相似,能通過Web頁面通過特定語法(限定IP、端口、HTML、證書、設(shè)備指紋等)搜索相關(guān)IP 及探測(cè)到的所有IP 對(duì)應(yīng)資產(chǎn)信息,但其采集目標(biāo)網(wǎng)絡(luò)指紋的方式是通過攔截網(wǎng)絡(luò)流量的非入侵式[9]。國內(nèi)知名網(wǎng)絡(luò)安全公司知道創(chuàng)宇開發(fā)了ZoomEye 搜索引擎,在集成了多個(gè)探測(cè)工具如Nmap、ZMap、Masscam 的基礎(chǔ)上,根據(jù)探測(cè)頻率、目標(biāo)所在區(qū)域、防護(hù)情況等策略模版執(zhí)行探測(cè)任務(wù),同時(shí)構(gòu)建了指紋規(guī)則庫、特殊服務(wù)識(shí)別庫、協(xié)議分析庫等,為用戶提供了設(shè)備指紋、Web 服務(wù)等搜索功能。
多級(jí)分布式探測(cè)架構(gòu)如圖1 所示,分為控制層和探測(cè)層,其主要特征是利用多個(gè)控制結(jié)點(diǎn)(圖1中以7 個(gè)為例),構(gòu)成分層路由網(wǎng)絡(luò),每一個(gè)控制層的控制節(jié)點(diǎn)負(fù)責(zé)一個(gè)探測(cè)集群的掃描控制,每個(gè)上層節(jié)點(diǎn)負(fù)責(zé)n個(gè)子節(jié)點(diǎn)(圖1 中n =2),路由節(jié)點(diǎn)上有網(wǎng)絡(luò)性能收集程序。
圖1 多級(jí)分布式探測(cè)架構(gòu)Fig.1 Multilevel distributed detection architecture
該架構(gòu)的主要優(yōu)勢(shì)是摒棄了傳統(tǒng)的由一個(gè)任務(wù)調(diào)度節(jié)點(diǎn)負(fù)責(zé)所有探測(cè)節(jié)點(diǎn)任務(wù)分發(fā)的工作模式,采用多級(jí)控制結(jié)點(diǎn)架構(gòu),解決了在常見性能計(jì)算機(jī)環(huán)境下,中心結(jié)點(diǎn)發(fā)送速率受限于網(wǎng)卡發(fā)送速率的問題。此外,相比于傳統(tǒng)單點(diǎn)掃描,由于采用分布式架構(gòu),掃描節(jié)點(diǎn)數(shù)量的增加可以提升整個(gè)探測(cè)效率。
控制層與探測(cè)層的功能如下:
控制層:處于探測(cè)層上層,負(fù)責(zé)探測(cè)任務(wù)分配,向探測(cè)節(jié)點(diǎn)下發(fā)探測(cè)任務(wù)。由于其分層結(jié)構(gòu),頂層控制結(jié)點(diǎn)為總控制節(jié)點(diǎn),負(fù)責(zé)向其下層控制節(jié)點(diǎn)分發(fā)探測(cè)任務(wù)。
探測(cè)層:主要負(fù)責(zé)掃描任務(wù)的執(zhí)行,根據(jù)其上級(jí)探測(cè)節(jié)點(diǎn)發(fā)送的任務(wù)及探測(cè)策略,開展相應(yīng)的探測(cè)行為。
控制層、探測(cè)層之間使用流量放大機(jī)制以提高帶寬利用效率。所謂流量放大機(jī)制是指下一級(jí)可以使用從上一級(jí)獲取的少量數(shù)據(jù)來產(chǎn)生不與其他節(jié)點(diǎn)沖突的大量數(shù)據(jù)并發(fā)往下一級(jí)。
多級(jí)分布式探測(cè)通信過程如圖2 所示,主要包括各個(gè)模塊之間的信息通信以及數(shù)據(jù)流向。廣譜掃描系統(tǒng)由分布式任務(wù)分發(fā)、掃描節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)解析、數(shù)據(jù)同步5 個(gè)功能模塊組成。
圖2 多級(jí)分布式探測(cè)通信過程Fig.2 Multistage distributed detection communication process
控制節(jié)點(diǎn)的任務(wù)分發(fā)模塊負(fù)責(zé)接收或者生成隨機(jī)IP 地址掃描策略,分發(fā)給一級(jí)探測(cè)節(jié)點(diǎn)。
探測(cè)節(jié)點(diǎn)按照策略開展探測(cè),將結(jié)果回傳至指定位置,通過數(shù)據(jù)自動(dòng)回傳加密通道,回傳至存儲(chǔ)服務(wù)器中。探測(cè)節(jié)點(diǎn)按照探測(cè)類型不同,可分為一級(jí)探測(cè)節(jié)點(diǎn)、二級(jí)探測(cè)節(jié)點(diǎn)和三級(jí)探測(cè)節(jié)點(diǎn)。一級(jí)探測(cè)節(jié)點(diǎn)負(fù)責(zé)探測(cè)端口開放情況;二級(jí)探測(cè)節(jié)點(diǎn)擔(dān)負(fù)協(xié)議交互和banner 數(shù)據(jù)的獲取;三級(jí)探測(cè)節(jié)點(diǎn)在二級(jí)探測(cè)的基礎(chǔ)上實(shí)現(xiàn)web 應(yīng)用的深度識(shí)別。
后端數(shù)據(jù)存儲(chǔ)負(fù)責(zé)存儲(chǔ)探測(cè)過程中產(chǎn)生的原始掃描數(shù)據(jù)和中間過程數(shù)據(jù)。后端數(shù)據(jù)存儲(chǔ)分為一級(jí)存儲(chǔ)和二級(jí)存儲(chǔ)。一級(jí)存儲(chǔ)使用非關(guān)系型數(shù)據(jù)庫,用以快速存儲(chǔ)前端探測(cè)回傳的非結(jié)構(gòu)化數(shù)據(jù);二級(jí)存儲(chǔ)綜合使用關(guān)系型、非關(guān)系型數(shù)據(jù)庫,用以支撐二級(jí)、深度掃描策略生成,為節(jié)點(diǎn)脆弱性分析和資源管理與塑造系統(tǒng)提供支持。
數(shù)據(jù)解析模塊根據(jù)一級(jí)探測(cè)結(jié)果生成二級(jí)探測(cè)策略,推送給二級(jí)探測(cè)節(jié)點(diǎn)并根據(jù)二級(jí)探測(cè)結(jié)果生成深度探測(cè)策略推送至深度探測(cè)節(jié)點(diǎn)。
數(shù)據(jù)同步實(shí)現(xiàn)探測(cè)結(jié)果和策略在前端節(jié)點(diǎn)和后端服務(wù)器之間加密自動(dòng)回傳。
任何主動(dòng)探測(cè)都需要有探測(cè)數(shù)據(jù)包,而IPv4 域的網(wǎng)絡(luò)探測(cè)需要針對(duì)每個(gè)探測(cè)節(jié)點(diǎn)構(gòu)造不同的探測(cè)包,由于IPv4 地址有40 多億個(gè),生成全部的探測(cè)包將消耗大量的存儲(chǔ)空間,打亂這些探測(cè)包的順序也需要消耗大量的時(shí)間。為解決這些問題,ZMap 提出了一種基于循環(huán)乘群的解決方式。這不是本文的原創(chuàng)方法,但是是后文的技術(shù)基礎(chǔ),所以在此簡要闡述。
群:數(shù)學(xué)上,把由一種集合以及一個(gè)二元運(yùn)算所組成的符合群公理的代數(shù)結(jié)構(gòu)稱之為群。群公理包含以下4 個(gè)性質(zhì):封閉性、結(jié)合律、單位元和逆元。比如,所有整數(shù)和加法構(gòu)成一個(gè)群。
循環(huán)群:一個(gè)群中所有元素能由其中的一個(gè)元素生成,稱之為循環(huán)群。比如,正整數(shù)加法群的所有元素可以由1 生成,正整數(shù)加法群就是一個(gè)循環(huán)群。
循環(huán)乘群:一個(gè)循環(huán)群,其二元運(yùn)算是乘法,那這個(gè)群就是循環(huán)乘群。
在實(shí)際應(yīng)用中,ZMap 使用整數(shù)模n乘法群算法建立覆蓋IPv4 地址空間的全排列。IPv4 地址為128 bit 換算成十進(jìn)制即1~232 的整數(shù)。所以ZMap通過選擇p為232 +15,再從需要遍歷的數(shù)列中選擇一個(gè)本源根u,通過將待排序的數(shù)字n與u相乘之后再與p取模,經(jīng)測(cè)試,3 是p的本源根。這樣,從該群中的任何一個(gè)生成元出發(fā),都可以不重復(fù)的遍歷該群中的所有元素,而所有IPv4 地址都可以映射到該群上,從而可以通過對(duì)群元素的遍歷來遍歷IPv4 地址。循環(huán)乘群相對(duì)于循環(huán)加群有一個(gè)優(yōu)勢(shì),循環(huán)乘群從生成元遍歷整個(gè)群元素的時(shí)候,遍歷順序相對(duì)來說規(guī)律性沒有循環(huán)加群那么明顯,帶有一定隨機(jī)性。
總控制節(jié)點(diǎn)任務(wù)調(diào)度算法見表1,總控制節(jié)點(diǎn)首先生成最大質(zhì)數(shù)p和本原根u,通過隨機(jī)生成數(shù)c,以及p,u,可以以一種隨機(jī)排列的方式訪問整個(gè)IPv4 地址空間;主控制節(jié)點(diǎn)通過計(jì)算迭代次數(shù)來控制向下一級(jí)控制節(jié)點(diǎn)發(fā)送的任務(wù),n可以看作發(fā)送給每個(gè)子控制節(jié)點(diǎn)的任務(wù)數(shù)量。通過迭代計(jì)算n次后,即算出發(fā)往下一個(gè)控制節(jié)點(diǎn)的地址起點(diǎn),但是任務(wù)數(shù)量n保持不變。這樣就可以將整個(gè)探測(cè)任務(wù)平均分配給下一層控制節(jié)點(diǎn)。
表1 總控制節(jié)點(diǎn)任務(wù)調(diào)度算法Tab.1 Task scheduling algorithm of master control node
其他控制節(jié)點(diǎn)在接收到上層節(jié)點(diǎn)發(fā)送的任務(wù)后,通過當(dāng)前數(shù)字c 獲知探測(cè)任務(wù)開始的起點(diǎn),如果還有下一層控制節(jié)點(diǎn),根據(jù)算法將任務(wù)平均分配給下一層控制節(jié)點(diǎn),如果沒有下一層控制節(jié)點(diǎn),則向探測(cè)集群下發(fā)掃描任務(wù),其任務(wù)調(diào)度算法見表2。
表2 控制節(jié)點(diǎn)任務(wù)調(diào)度算法Tab.2 Task scheduling algorithm of control node
任務(wù)調(diào)度管理服務(wù)在任務(wù)分發(fā)前,會(huì)將生成的探測(cè)IP 地址同黑名單進(jìn)行比對(duì),如果命中,就丟棄,重新生成IP 地址,如此往復(fù)。白名單是任務(wù)調(diào)度管理服務(wù)根據(jù)后臺(tái)管理的臨時(shí)需求,增加的優(yōu)先級(jí)較高的掃描任務(wù)。通過黑白名單機(jī)制,可以規(guī)避到風(fēng)險(xiǎn)較高的IP 地址段,也可以重點(diǎn)開展某段地址掃描,見表3。
表3 探測(cè)節(jié)點(diǎn)任務(wù)調(diào)度算法Tab.3 Task scheduling algorithm of detecting node
本方法具備快速掃描、分布部署、動(dòng)態(tài)擴(kuò)充和高容錯(cuò)性的特點(diǎn),由于Nmap、ZMap 和Masscan 不具備分布式掃描的功能,都為單機(jī)版運(yùn)行軟件。因此本系統(tǒng)任務(wù)分發(fā)程序與Nmap、ZMap、Masscan 于同一臺(tái)服務(wù)器同一網(wǎng)絡(luò)條件下,并關(guān)閉服務(wù)器上所有非必要軟件。
實(shí)驗(yàn)環(huán)境搭建于云服務(wù)器,操作系統(tǒng)版本為Ubuntu 16.04 LTS x64,配置信息為4 個(gè)E5 2620 v3核心,4 G 內(nèi)存,100 Mbps 網(wǎng)絡(luò)帶寬,通過docker 建立一個(gè)目標(biāo)集群,每次測(cè)試選取不同的節(jié)點(diǎn)作為探測(cè)節(jié)點(diǎn)進(jìn)行探測(cè),探測(cè)目標(biāo)為全網(wǎng)絡(luò),每個(gè)工具進(jìn)行10 次探測(cè)實(shí)驗(yàn),比較掃描的耗時(shí)、網(wǎng)絡(luò)占用、處理器占用、內(nèi)存占用、掃描穩(wěn)定性,實(shí)驗(yàn)數(shù)據(jù)取平均值,各參數(shù)意義與具體測(cè)算方法見表4。
表4 各參數(shù)意義與具體測(cè)算方法Tab.4 Significance of each parameter and specific calculation method
當(dāng)使用單個(gè)結(jié)點(diǎn)對(duì)4 096 個(gè)IP 進(jìn)行掃描時(shí),本方法在掃描耗時(shí)上并沒有優(yōu)勢(shì),但是,當(dāng)使用64 個(gè)結(jié)點(diǎn)計(jì)算等效全網(wǎng)耗時(shí)后,其分布式探測(cè)架構(gòu)縮小了全網(wǎng)掃描的時(shí)間,并從網(wǎng)絡(luò)占用率上優(yōu)于其他3種掃描方式,見表5。
表5 掃描時(shí)間對(duì)比Tab.5 Comparison of scanning time
資源占用率對(duì)比見表6,本方法無論是從處理器占有率還是內(nèi)存占用率方面都優(yōu)于其他掃描方式,說明分布式探測(cè)架構(gòu)相比傳統(tǒng)探測(cè)方法可降低資源占用率,達(dá)到節(jié)省資源的目的。
表6 資源占用率對(duì)比Tab.6 Resources utilization percentage comparison
從以上測(cè)試結(jié)果可以得出結(jié)論,本系統(tǒng)在掃描速度、資源占用、結(jié)果穩(wěn)定性方面均優(yōu)于現(xiàn)有軟件,并具有可動(dòng)態(tài)擴(kuò)充的特點(diǎn)。
但是從測(cè)試數(shù)據(jù)看,系統(tǒng)的實(shí)測(cè)掃描時(shí)間與理論計(jì)算值有大概20%的延長,該延長的產(chǎn)生原因?yàn)槌瑫r(shí)時(shí)間設(shè)置導(dǎo)致,試驗(yàn)中超時(shí)設(shè)置為10 s,實(shí)際發(fā)包時(shí)間大概38 s,這10 s 可通過流水線運(yùn)行等并行化技術(shù)進(jìn)行優(yōu)化,系統(tǒng)實(shí)際部署后性能可提高20%左右。
為了解決現(xiàn)有網(wǎng)絡(luò)資產(chǎn)探測(cè)工具帶寬消耗及資源消耗過大的問題,本文提出了一種基于常見性能計(jì)算機(jī)環(huán)境的快速探測(cè)方法,使用控制層和探測(cè)層兩層探測(cè)架構(gòu),在控制層和探測(cè)層各節(jié)點(diǎn)之間利用流量放大機(jī)制提高帶寬利用率從而實(shí)現(xiàn)快速全網(wǎng)探測(cè)。下一步將繼續(xù)開展網(wǎng)絡(luò)探測(cè)相關(guān)研究,提高探測(cè)精準(zhǔn)度和掃描效率。