馬程
[摘要]伴隨著大數(shù)據(jù)的廣泛應(yīng)用,網(wǎng)絡(luò)安全已不再是一個(gè)信息孤島。從第一個(gè)莫里斯病毒的傳播,到今天互聯(lián)網(wǎng)隨處可見(jiàn)的APT攻擊,網(wǎng)絡(luò)攻擊與防御的博弈已經(jīng)從單邊的代碼漏洞發(fā)展到了大數(shù)據(jù)對(duì)抗階段。為此,論文以國(guó)外著名的Shodan搜索引擎為例,通過(guò)結(jié)合日常攻防實(shí)踐、傳統(tǒng)搜索引擎原理和Shodan搜索引擎的特征,深度剖析以Shodan為代表的網(wǎng)絡(luò)空間搜索引擎的工作原理,并提出其在網(wǎng)絡(luò)攻防方面的實(shí)戰(zhàn)應(yīng)用。進(jìn)而為網(wǎng)絡(luò)安全從業(yè)和研究人員,在網(wǎng)絡(luò)安全研究及該類(lèi)平臺(tái)的建設(shè)中,提供有價(jià)值的參考和建議。
[關(guān)鍵詞]網(wǎng)絡(luò)空間搜索引擎;Shodan;原理研究;網(wǎng)絡(luò)攻防實(shí)戰(zhàn)
1 引言
傳統(tǒng)搜索引擎對(duì)我們來(lái)說(shuō)并不陌生,像Google、百度、Bing等,只要我們打開(kāi)網(wǎng)頁(yè)幾乎就會(huì)用到。對(duì)于傳統(tǒng)搜索引擎的理論研究,從上世紀(jì)末就已經(jīng)開(kāi)始。雖然到目前為止,Google和百度等搜索引擎廠商,仍未公布其核心算法,但是學(xué)界已經(jīng)有一定的研究成果,并且形成了相對(duì)成熟的理論體系。
相比于傳統(tǒng)搜索引擎,網(wǎng)絡(luò)空間搜索引擎作為一個(gè)新穎的概念,它的誕生和研究則要滯后很多。以Shodan搜索引擎為例,Shodan是在2009年由著名安全專(zhuān)家JohnMatherly所創(chuàng)建的,是全球第一個(gè)全網(wǎng)設(shè)備搜索引擎。而不同于傳統(tǒng)搜索引擎的以網(wǎng)頁(yè)內(nèi)容索引為主,Shodan的搜索目標(biāo)集中在全球的IP地址上。即搜索范圍在1.1.1.1-255.255.255.255的所有設(shè)備及服務(wù)上。這樣的搜索結(jié)果對(duì)于普通網(wǎng)民來(lái)說(shuō)可能沒(méi)有意義,但對(duì)于網(wǎng)絡(luò)安全研究人員來(lái)說(shuō),這就是一個(gè)“聚寶盆”。相比國(guó)外來(lái)說(shuō),“網(wǎng)絡(luò)空間搜索引擎”這個(gè)概念,據(jù)考證,是知道創(chuàng)宇安全公司于2013年首次在國(guó)內(nèi)提出的,從定義的角度來(lái)說(shuō),還是比較合理地描述了Shodan等的功能特性。因此,本文在做分析時(shí),采用了這個(gè)概念。據(jù)此,知道創(chuàng)宇也在國(guó)內(nèi)建立了第一個(gè)網(wǎng)絡(luò)空間搜索引擎——ZoomEye,ZoomEye與Shodan在掃描原理上大同小異,在指紋識(shí)別的重點(diǎn)上略有差異。本文在重點(diǎn)分析Shodan搜索引擎原理的同時(shí),也會(huì)結(jié)合分析部分ZoomEye的優(yōu)點(diǎn)和特性。
客觀來(lái)說(shuō)。不管作為理論研究還是應(yīng)用研究,目前學(xué)界對(duì)網(wǎng)絡(luò)空間搜索引擎的研究非常少,還沒(méi)有形成一個(gè)清晰的定義和完善的理論體系。部分文章中也只是提到對(duì)Shodan等搜索引擎的簡(jiǎn)單使用,未涉及到深層次的原理分析。本文通過(guò)結(jié)合攻防實(shí)踐、傳統(tǒng)搜索引擎原理以及Shodan搜索引擎的特診,深度剖析以Shodan為代表的網(wǎng)絡(luò)空間搜索引擎的原理模型和功能模塊,并提出相應(yīng)的實(shí)戰(zhàn)應(yīng)用方法,以期為網(wǎng)絡(luò)安全從業(yè)及研究人員。在之后的網(wǎng)絡(luò)空間搜索引擎平臺(tái)建設(shè)和攻防實(shí)戰(zhàn)中,提供相應(yīng)的參考和依據(jù)。
2 網(wǎng)絡(luò)空間搜索引擎原理及功能分析
根據(jù)Shodan官網(wǎng)描述,Shodan能不間斷地對(duì)全球40億IP地址進(jìn)行掃描及指紋識(shí)別,并提供快速、準(zhǔn)確的結(jié)果搜索,每個(gè)月至少更新4億的裝置數(shù)據(jù)。本文對(duì)Shodan原理及功能的分析方法,主要是依據(jù)傳統(tǒng)搜索引擎的原理,結(jié)合Shodan搜索引擎的特征,盡可能在理論上還原Shodan的工作模式,并在此基礎(chǔ)上提出本文對(duì)搭建一個(gè)網(wǎng)絡(luò)空間搜索引擎的幾點(diǎn)可能的方案,以供安全人員參考和借鑒。圖1是Shodan的應(yīng)用截圖。
2.1 框架模型分析
網(wǎng)絡(luò)空間搜索引擎來(lái)源于傳統(tǒng)搜索引擎,因此在對(duì)前者框架模型進(jìn)行分析時(shí),我們可以借用相對(duì)比較成熟的傳統(tǒng)搜索引擎模型,這樣更符合實(shí)際。
傳統(tǒng)搜索引擎的基礎(chǔ)技術(shù)主要包括四個(gè)重要環(huán)節(jié):網(wǎng)絡(luò)爬蟲(chóng)、建立索引、內(nèi)容檢索和鏈接分析。網(wǎng)絡(luò)空間搜索引擎因處理的對(duì)象不同,故模塊的重點(diǎn)也與傳統(tǒng)搜索引擎有所不同,相比而言,前者技術(shù)上更容易實(shí)現(xiàn)。據(jù)此,本文根據(jù)傳統(tǒng)搜索引擎及Shodan的功能特性,繪制出了簡(jiǎn)單的Shodan框架模型圖,如圖2所示。
在圖2中。我們將Shodan的框架模型分為五個(gè)部分:掃描和指紋識(shí)別、分布存儲(chǔ)、索引、UI界面以及調(diào)度程序,其中數(shù)據(jù)在前三個(gè)部分之間的傳輸都是雙向的,調(diào)度程序則保證整個(gè)流程的運(yùn)行。這個(gè)模型不難理解,是一個(gè)比較通用的搜索引擎框架,遵循了數(shù)據(jù)輸入——數(shù)據(jù)處理——數(shù)據(jù)輸出的基本原則。
2.2 功能模塊分析
在上文中,分析了Shodan框架包含的五個(gè)構(gòu)成部分,其中Web UI、調(diào)度程序和索引都是我們?nèi)粘1容^熟悉的。所以本節(jié)中將重點(diǎn)分析掃描和指紋識(shí)別、存儲(chǔ)這兩個(gè)網(wǎng)絡(luò)空間搜索引擎的核心功能模塊。
2.2.1 掃描模塊
在對(duì)Shodan進(jìn)行分析時(shí),有一個(gè)疑問(wèn):究竟Shodan是怎么進(jìn)行快速掃描的?全球從1.1.1.1到255.255.255.255,一共42億個(gè)IP地址,除去局域網(wǎng)IP地址,大概還有約40億個(gè)IP地址。Shodan又是怎么保證快速更新IP掃描結(jié)果的?這個(gè)問(wèn)題對(duì)于傳統(tǒng)搜索引擎來(lái)說(shuō),它是不會(huì)考慮的,因?yàn)橹┲氲墓ぷ鞣绞绞桥佬芯W(wǎng)頁(yè)鏈接,沒(méi)有就不爬了,但是IP的掃描不同。對(duì)IP進(jìn)行掃描時(shí),既要掃描存活又要識(shí)別服務(wù)。
對(duì)于上述的疑問(wèn),基于現(xiàn)有的掃描知識(shí),本文提出了幾點(diǎn)可能的方法:(1)使用分布式的Nmap進(jìn)行掃描:服務(wù)識(shí)別準(zhǔn)確度高,掃描速度慢;(2)使用自己開(kāi)發(fā)的分布式掃描腳本:準(zhǔn)確度有待確定,速度可控;(3)使用分布式Zmap掃描開(kāi)放端口,Nmap做服務(wù)識(shí)別:速度快,準(zhǔn)確度也有保證。
經(jīng)過(guò)對(duì)比,以上第三種方法無(wú)疑是比較理想的,用Zmap掃描端口,用Nmap做服務(wù)識(shí)別。Nmap應(yīng)該是網(wǎng)絡(luò)安全研究人員的老朋友了,因?yàn)樗鼉?yōu)秀的掃描功能,所以一直是網(wǎng)絡(luò)掃描的首選。Zmap是2015年由美國(guó)密歇根大學(xué)研究人員組成的一個(gè)團(tuán)隊(duì)開(kāi)發(fā)的,因?yàn)樗褂谩盁o(wú)狀態(tài)”方式掃描,所以掃描速度非???。圖3是Zmap掃描2萬(wàn)個(gè)主機(jī)873端口開(kāi)放情況的掃描結(jié)果,僅用8s時(shí)間。因此,使用Zmap可以完美解答之前提出的疑問(wèn):使用分布式Zmap對(duì)全球IP進(jìn)行不間斷的循環(huán)掃描,發(fā)現(xiàn)IP信息變化,則在數(shù)據(jù)庫(kù)將原IP信息進(jìn)行更新。
2.2.2 指紋識(shí)別模塊
在圖1的Shodan使用截圖中,我們不難發(fā)現(xiàn)Shodan強(qiáng)大的功能。當(dāng)我們搜索873端口時(shí)(Port:873),Shodan不但列出了所有開(kāi)放873端口的主機(jī),同時(shí)還對(duì)其進(jìn)行了安全測(cè)試。因?yàn)?73端口的開(kāi)放服務(wù)是Sync(Linux下的數(shù)據(jù)鏡像備份服務(wù)),Sync的默認(rèn)配置是不需要密碼就能訪問(wèn)的,這樣帶來(lái)的安全隱患是不僅有可能造成源代碼等敏感信息泄露。同時(shí)攻擊者可直接通過(guò)此通道修改源代碼。圖4是我們對(duì)Shodan搜索出來(lái)的IP地址103.27.208.227的驗(yàn)證情況,結(jié)果證明Shodan確實(shí)利用了sync的漏洞對(duì)該IP地址進(jìn)行了安全測(cè)試。
通過(guò)搜索結(jié)果繼續(xù)分析。Shodan內(nèi)部的指紋識(shí)別應(yīng)該使用了多重識(shí)別機(jī)制,按照不同的端口采取了不同的的識(shí)別辦法,主要包含三個(gè)部分。
(1)常規(guī)端口識(shí)別。Shodan內(nèi)置了常規(guī)端口的識(shí)別庫(kù),比如21(FTP服務(wù))、22(Ssh服務(wù))、873(Sync服務(wù))、6379(Redis服務(wù))、11211(Memcached服務(wù))等端口。同時(shí),Shodan還為這些端口提供了相應(yīng)的漏洞庫(kù),一經(jīng)識(shí)別該端口開(kāi)放,便可直接調(diào)用相應(yīng)漏洞進(jìn)行安全測(cè)試。
(2)非常規(guī)端口識(shí)別。首先使用Nmap內(nèi)置的腳本進(jìn)行非常規(guī)端口識(shí)別,比如“nmap-sV”命令即可:如果仍無(wú)法識(shí)別,使用返回Banner進(jìn)行云識(shí)別。
(3)Web指紋識(shí)別。目前Shodan在Web服務(wù)識(shí)別上面,使用的是HTTP響應(yīng)頭識(shí)別的方式,一般主要看響應(yīng)頭的“X-Powered-By”標(biāo)簽。當(dāng)然這種方式的識(shí)別結(jié)果,不是特別完整,這與Shodan主要做網(wǎng)絡(luò)設(shè)備有關(guān)系。相比之下,在Web服務(wù)識(shí)別方面,國(guó)內(nèi)的ZoomEye提供的識(shí)別服務(wù)是比較準(zhǔn)確的,它的識(shí)別方式很多,包括各種CMS系統(tǒng)的標(biāo)簽、特征值、特殊文件等等。
2.2.3 數(shù)據(jù)存儲(chǔ)模塊
從圖1的搜索結(jié)果中可以看出,Shodan采集的條目主要包含幾個(gè)數(shù)據(jù):(1)IP、端口信息;(2)地理位置信息,包括國(guó)家、城市;(3)操作系統(tǒng)、組件信息;(4)Web服務(wù)信息,包括Title、HTTP響應(yīng)信息;(5)更新時(shí)間信息。
不同于傳統(tǒng)搜索引擎的頁(yè)面緩存,Shodan需要存儲(chǔ)的數(shù)據(jù)量并不是非常大,因此可能采用分布式性能較好的Mongodb數(shù)據(jù)庫(kù),或直接采用ElasticSearch做存儲(chǔ)加索引,這樣的搭配方式不僅解決了分布式的困擾,也降低了數(shù)據(jù)存儲(chǔ)的運(yùn)營(yíng)難度。
3 網(wǎng)絡(luò)攻防方面的應(yīng)用
本文在上一節(jié)以Shodan為例,分析了網(wǎng)絡(luò)空間搜索引擎的框架和功能模塊,旨在幫助安全研究人員更深刻地理解其工作原理。網(wǎng)絡(luò)安全的研究離不開(kāi)網(wǎng)絡(luò)攻防實(shí)戰(zhàn),只有在攻擊與防御的博弈中,才能發(fā)現(xiàn)更多的安全問(wèn)題和提出更適合的修補(bǔ)措施,才能將網(wǎng)絡(luò)安全的研究推向新的高度。作為一個(gè)安全搜索引擎,網(wǎng)絡(luò)空間搜索引擎的建設(shè)初衷就是為網(wǎng)絡(luò)攻防提供服務(wù),其在攻防實(shí)戰(zhàn)中優(yōu)秀的表現(xiàn)也讓安全研究人員更重視、更青睞。因此,學(xué)會(huì)在實(shí)踐中熟練地使用網(wǎng)絡(luò)空間搜索引擎,不僅能大大減少工作量,還能為研究人員帶來(lái)想象不到的收獲和樂(lè)趣。
目前網(wǎng)絡(luò)上存在的空間搜索引擎,在原理和工作模式上大同小異,故本文在做實(shí)戰(zhàn)應(yīng)用示例時(shí),還是以Shodan平臺(tái)為主,其他搜索引擎平臺(tái)方法基本通用。
3.1 基礎(chǔ)用法
基礎(chǔ)用法主要提供常用的幾種網(wǎng)絡(luò)空間搜索引擎的檢索方法和語(yǔ)句,以下用法并不涵蓋所有,具體可參考Shodan官網(wǎng)提供的說(shuō)明。
(1)多關(guān)鍵詞檢索:“keyword1 keyword2”。
(2)指定國(guó)家或城市檢索:“keyword”“country:”cn”或“keywords”city:“beijing”。
(3)指定開(kāi)放端口檢索:“port:873”。
(4)指定IP地址或IP范圍檢索:“1.2.3.4”或“net:1.2.3.0/24”。
(5)指定操作系統(tǒng)或域名檢索:“keyword”os:”linux”或“keyword”hosmame:”.org”。
(6)指定日期范圍檢索:“keyword”before[after]:01/01/2016。
3.2 API接口的使用
當(dāng)前主流的網(wǎng)絡(luò)空間搜索引擎為了方便安全人員開(kāi)展工作,都提供了相應(yīng)的API接口,使用這些API接口,我們可以在自己的腳本代碼里輕松的獲取和利用搜索結(jié)果。尤其是在進(jìn)行批量安全測(cè)試時(shí),API接口能發(fā)揮事半功倍的作用。以下是利用Python編寫(xiě)的一段簡(jiǎn)單的Shodan API利用代碼,代碼的作用是打印API接口的所有屬性和方法,并利用該API接口搜索“NetScreen”,最后將搜索結(jié)果總數(shù)打印出來(lái)。
圖5是上述代碼的執(zhí)行結(jié)果,從圖中我們可以發(fā)現(xiàn),Shodan API接口提供了20多個(gè)屬性和方法供我們使用,上述代碼中我們使用的就是其中的一個(gè)方法:search()。搜索結(jié)果共包含兩個(gè)鍵值:Matches和Total,其中Matches是搜索結(jié)果的明細(xì),Total是搜索結(jié)果的總數(shù)。從圖中我們看到,Shodan對(duì)“NetScreen”的搜索結(jié)果一共是24828個(gè)。因?yàn)樗阉鹘Y(jié)果太多,在這里我們就不展示詳細(xì)搜索信息了。
下面我們從搜索結(jié)果中選出一個(gè)IP地址:1.36.17.49(美國(guó))進(jìn)行驗(yàn)證。“NetScreen”是Juniper的一款高端防火墻和VPN產(chǎn)品,2013年被曝出存在Root權(quán)限的后門(mén)漏洞,默認(rèn)后門(mén)登錄密碼:<<<%s un='%s')=%u。我們將簡(jiǎn)單測(cè)試一下該IP是否開(kāi)了NetScreen服務(wù),并且是否存在后門(mén)密碼。
在圖6中我們使用了NetScreen后門(mén)密碼,成功登錄了1.36.17.49。圖中顯示NetScreen的版本是6.3.or18.0,這個(gè)版本也是明確存在后門(mén)漏洞的。
3.3 其他利用方法
像Shodan這樣的網(wǎng)絡(luò)空間搜索引擎,不僅提供上述兩種使用方法,它還提供了其他更方便、快捷的方法。比如在Metasploit(一種滲透測(cè)試框架)中。我們可以利用Shodan模塊“auxiliary/gather/Shodansearch”進(jìn)行搜索。
同時(shí),互聯(lián)網(wǎng)上也有以命令行版本的,支持Python、Ruby.Perl、.Net等多種編程語(yǔ)言比如Shodan-Python等,支持不同的執(zhí)行環(huán)境,用起來(lái)非常方便,在Github等公開(kāi)的互聯(lián)網(wǎng)上就可以下載到。
4 結(jié)束語(yǔ)
網(wǎng)絡(luò)空間搜索引擎是一個(gè)較新的研究領(lǐng)域,目前安全人員對(duì)其研究較少。本文通過(guò)以Shodan為例,全面分析了網(wǎng)絡(luò)空間搜索引擎的框架模型和工作原理,并就該原理提出了可能的平臺(tái)搭建方案。同時(shí),通過(guò)結(jié)合作者日常攻防實(shí)戰(zhàn)案例,為網(wǎng)絡(luò)安全從業(yè)及研究人員,提供了三種不同的網(wǎng)絡(luò)空間搜索引擎使用方法。