摘 ?要: 為滿足日益發(fā)展的網(wǎng)絡空間安全對空間內(nèi)IT資產(chǎn)的分布、存活、設備運行及漏洞分布情況的了解需求,本文提出了采用高速無感探測技術及poc漏洞驗證技術來實現(xiàn)對IT資產(chǎn)的快速梳理及漏洞的精準定位,實現(xiàn)了資產(chǎn)與漏洞關聯(lián),方便了對復雜網(wǎng)絡資產(chǎn)的管理,簡化了日常運維,為網(wǎng)絡空間安全快速發(fā)展提供了新的前進方向。
關鍵詞: 高速無感;資產(chǎn)探查;漏洞Poc
中圖分類號: TP393.08 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.12.037
本文著錄格式:秦丞,賀渝鑌. IT資產(chǎn)高速探查及漏洞發(fā)現(xiàn)系統(tǒng)的研究[J]. 軟件,2019,40(12):167170
Research on High Speed IT Asset Detection and Vulnerability Discovery System
QIN Cheng, HE Yu-bin
(Kunming Power Supply Bureau, Yunnan Power Grid Co., Ltd., Kunming 650000)
【Abstract】: In order to meet the growing demand of Cyberspace Security for understanding the distribution, survival, equipment operation and vulnerability distribution of IT assets in space, this paper proposes to use high-speed insensitive detection technology and POC vulnerability verification technology to realize the rapid combing of IT assets and the accurate location of vulnerabilities, and realize the assets and vulnerabilities. Relevance facilitates the management of complex network assets, simplifies the daily operation and maintenance, and provides a new direction for the rapid development of network space security.
【Key words】: High-speed insensitivity; Asset detection; Vulnerability Poc
0 ?引言
美國男子約翰·瑪瑟利花近10年時間建立搜索引擎“Shodan”,Shodan搜索引擎的出現(xiàn)向人們展示了網(wǎng)絡和真實世界的匯聚是如此之快,數(shù)以百萬計人每天依賴的工業(yè)系統(tǒng)在黑客入侵面前如此不堪一擊。它還揭示了網(wǎng)絡世界的連接性和復雜性超出任何人的理解,網(wǎng)絡中的漏洞比人們之前想象的要大得多。在過去兩年中,Shodan搜索引擎已收集到近1億臺工業(yè)設備的數(shù)據(jù)。
相比于國外更加面向工業(yè)設備,國內(nèi)方面,也有相關公司針對全球大約40億數(shù)量的IP進行了信息普查工作方面的研究,并出現(xiàn)了網(wǎng)絡空間搜索的相關系統(tǒng),可面向網(wǎng)絡空間的應用組件、網(wǎng)絡設備及工控設備進行探測,也是目前資產(chǎn)探測及漏洞發(fā)現(xiàn)中較為新興的技術。
近幾年來在以“互聯(lián)網(wǎng)+”模式的催生下,以及“物聯(lián)網(wǎng)”的飛速發(fā)展,網(wǎng)絡空間所覆蓋的行業(yè)領域及應用邊界在不斷擴大,導致原有網(wǎng)絡空間資源的安全監(jiān)控及防護手段所存在著滯后性及不完善性已日益凸顯,如:缺少高效、精準的技術手段,無法及時獲取系統(tǒng)和設備所開放的組件、服務和端口情況,以至無法實時、準確獲取網(wǎng)絡設備狀態(tài)信息及所存在威脅風險所覆蓋或影響的范圍,同時無法實現(xiàn)對威脅產(chǎn)生源頭的有效追溯,這類問題越來越明顯,在此基礎上,本文進行了資產(chǎn)高速探測技術及漏洞發(fā)現(xiàn)技術的研究,希望通過研究解決傳統(tǒng)資產(chǎn)探測中存在的問題。
1 ?高速無感探測技術研究
1.1 ?無狀態(tài)掃描
傳統(tǒng)資產(chǎn)探測技術都采用TCP發(fā)包技術,整個過程涉及到TCP三次握手連接的建立,持續(xù)時間長,發(fā)包量大,當出現(xiàn)請求連接失敗時,涉及到丟棄包的處理,易造成網(wǎng)絡堵塞[1-3]。
圖1 ?傳統(tǒng)資產(chǎn)探測技術示意圖
Fig.1 ?Sketch Map of Traditional Asset
Detection Technology
為了實現(xiàn)更快速的探測,本文研究使用無狀態(tài)掃描技術,無狀態(tài)掃描是指在掃描過程中,無需關心連接狀態(tài),不占用系統(tǒng)TCP/IP協(xié)議棧資源,忽略SYN、ACK、FIN、TIMEWAIT等狀態(tài),僅通過一次發(fā)包的回包來判斷端口開放性的一種掃描技術。由于掃描過程中一般僅向目標端口發(fā)送TCP三次握手中的SYN包,然后根據(jù)端口回包判斷此端口的開放性,因此這種掃描技術又被稱為半連接掃描。此種掃描技術無須維護連接狀態(tài),端口開放性判斷邏輯簡單,僅需要一個Bitmap結合回包內(nèi)容即可完成端口開放性的判斷,可以最大限度的利用服務器的CPU和帶寬資源,以最快速度完成端口開放性檢測。
圖2 ?無狀態(tài)掃描技術示意圖
Fig.2 ?Sketch of stateless scanning technology
1.2 ?IP列表拆分
傳統(tǒng)掃描系統(tǒng)在進行網(wǎng)絡掃描時,會依據(jù)IP地址進行按序掃描,而一些安全設備通常具有防掃描機制,會根據(jù)掃描的順序性來判斷,如果單一IP請求過多并帶有一定規(guī)則性,則很容易被判定為攻擊行為,后續(xù)的連接請求將會被阻斷,探測準確率也會因此下降。最常見的情況為對一個地址進行探測,一段時間后該地址提示訪問被拒絕[4]。
圖3 ?傳統(tǒng)掃描技術示意圖
Fig.3 ?Sketch of traditional scanning techniques
為了避免大量發(fā)包對正常業(yè)務造成影響,本文采用IP列表拆分技術,對探測的ip列表進行拆分,打亂順序進行掃描,掃描完成后將再次重新排列組合,避免掃描被安全設備的防御機制所阻斷。
圖4 ?IP拆分示意圖
Fig.4 ?IP splitting schematic
1.3 ?引用指紋庫
為了實現(xiàn)對資產(chǎn)組件探測的準確率,本文研究引用IT資產(chǎn)指紋庫,進行資產(chǎn)檢測時,首先探測目標系統(tǒng)的存活主機,對存活主機進行端口掃描,確定系統(tǒng)開放的端口,同時根據(jù)協(xié)議指紋技術識別出主機的操作系統(tǒng)類型。然后對開放的端口進行網(wǎng)絡服務類型的識別,確定其提供的網(wǎng)絡服務。根據(jù)目標系統(tǒng)的操作系統(tǒng)平臺和提供的網(wǎng)絡服務,調(diào)用漏洞資料庫中已知的各種漏洞進行逐一檢測,通過對探測響應數(shù)據(jù)包的分析判斷是否存在漏洞[5-7]。
端口指紋庫:研究引用端口指紋庫進而獲得組件的軟硬件類型、設備類型、廠商、品牌、型號等豐富信息。
操作系統(tǒng)指紋庫:據(jù) TCP/IP 協(xié)議棧指紋識別不同的操作系統(tǒng)。雖然 RFC 對 TCP/IP 協(xié)議有著詳細的描述,但其中依然存在著描述不明確或描述明確但沒有做強制約定的地方。因此不同操作系統(tǒng)不同版本在 TCP/IP 協(xié)議棧的實現(xiàn)方案上都會有其特殊的處理方式,引用指紋庫可以實現(xiàn)多種類別數(shù)據(jù)庫的探測。
Web組件指紋庫:HTTP協(xié)議作為應用層協(xié)議,其上構建著種類繁多的Web組件。對這些 Web 組件的識別既能夠幫助更精確、高效的完成漏洞應急任務,有可以作為重要的輔助信息完成對目標主機用途的研判。研究引用web逐漸指紋庫可以識別引擎具備上百種Web組件的識別能力。其中包括 Web 編程語言(ASP、Python、JSP等)、Web容器(Nginx、Squid、Tengine等)、Web應用(織夢CMS、phpwind、Wordpress等)、Web框架(Django、Tornado、ThinkPHP等)、前端框架(jQuery、Bootstrap等)等。
2 ?漏洞掃描技術研究
2.1 ?Poc漏洞驗證
現(xiàn)有的網(wǎng)絡漏洞掃描器主要是利用特征匹配的原理來識別各種已知的漏洞。掃描器發(fā)送含有某一漏洞特征探測碼的數(shù)據(jù)包,根據(jù)返回數(shù)據(jù)包中是否含有該漏洞的響應特征碼來判斷是否存在漏洞[8]。例如,對于IIS中的Uncode目錄遍歷漏洞,掃描器只要發(fā)送含有特征代碼%c1%1c的探測包;http:// x.x.x.x/scrlpts/..%c1%1c../winnt/system32/cmdexe?/c+ dir,如果應答數(shù)據(jù)包中含有200 OK則可以斷定該漏洞存在。這樣的驗證方式存在兩個明顯弊端,一個是驗證漏洞需要發(fā)送大量的數(shù)據(jù)包,容易被安全設備和服務器認定為攻擊行為而對IP進行阻斷;另一個方面,通過單純的發(fā)送帶有某個驗證規(guī)則的數(shù)據(jù)包,驗證的準確率低,易產(chǎn)生誤報。
為了解決傳統(tǒng)掃漏洞驗證方式存在的問題,本文研究采用的PoC漏洞驗證技術,所謂PoC即漏洞驗證程序,在計算機術語中是一段可以證明某個漏洞存在的代碼,通過運行這段代碼,會輸出一個結果,表明漏洞是否存在。常見的PoC有struts2驗證PoC,頭部信息如下所示:
def poc(url):
register_openers()
datagen, header = multipart_encode({"image1": open("tmp.txt", "rb")})
header["User-Agent"]="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/ 537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
request = urllib2.Request(url,datagen,headers=header)
response = urllib2.urlopen(request)
body=response.read()
PoC的驗證原理大多是模擬計算機去訪問可能存在漏洞的地址,再根據(jù)響應結果判斷漏洞是否存在,這樣即使是進行批量驗證,也會由于其模擬正常人為訪問而不會造成安全設備的攔截。另外成熟的PoC通用性很強,可以針對不同版本的組件進行漏洞的驗證。最重要的一點PoC基本都是開源的,有許多經(jīng)驗豐富的滲透測試人員的程序員進行長期更新和維護,這很大程度上保證了PoC代碼驗證的準確性和對新出漏洞的更新速度。采用對接豐富完善的PoC代碼庫,滿足對多種漏洞的驗證需求,并且PoC驗證程序大多使用Python語言編寫,入門簡單,開發(fā)效率高,有非常強大的第三方庫,大大降低了開發(fā)周期,高級語言,編寫程序時不需要考慮內(nèi)存管理一類的底層細節(jié)??梢浦残愿撸蓴U展,可嵌入,可以把Python程序嵌入C/C++,這些都方便了使用者編寫針對特定漏洞的PoC。
2.2 ?Poc漏洞關聯(lián)
漏洞驗證作為掃描過程中最耗時的部分,常常成為漏洞應急和漏洞常規(guī)普查中的關鍵節(jié)點。要加快漏洞驗證的速度,減少需要驗證的目標數(shù)量就成了最直接有效的一種方法。為了實現(xiàn)漏洞的資產(chǎn)的數(shù)據(jù)關聯(lián),本文研究使用漏洞關聯(lián)技術,在進行漏洞驗證時,將漏洞都帶有與之相關的組件的特征信息嵌入其中,當一個新的漏洞出來的時候,有可能漏洞發(fā)布者并沒有指明漏洞影響的版本號,這個時候通過漏洞詳情明確該漏洞影響的版本具體有那個或者那些,將其版本信息寫入PoC程序中,將與之相關的資產(chǎn)組件分布情況也羅列出來。如果不明確漏洞影響,在漏洞驗證的同時既不能關聯(lián)漏洞,又浪費大量時間。所以使用漏洞關聯(lián)技術能有效縮小漏洞驗證的目標范圍,大大加快漏洞驗證速度,提升漏洞檢測效率,并實現(xiàn)漏洞與資產(chǎn)組件的互相關聯(lián)。
3 ?大數(shù)據(jù)技術研究
研究IT資產(chǎn)探查和漏洞發(fā)現(xiàn),是針對海量數(shù)據(jù)的批量操作,為了實現(xiàn)對大量數(shù)據(jù)的迅速響應和使用者對數(shù)據(jù)快速增刪查改的功能,本文研究使用大數(shù)據(jù)處理技術。
3.1 ?大數(shù)據(jù)分布存儲
IT資產(chǎn)探測的網(wǎng)絡設備數(shù)量巨大,采集信息的種類多,為滿足大數(shù)據(jù)的存儲要求,本文研究采用MongoDB數(shù)據(jù)庫進行存儲。MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫[9-10]。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的軟件,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的。支持的數(shù)據(jù)結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現(xiàn)類似關系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。利用MongoDB分布式的各種優(yōu)點,可用于存儲各種類型網(wǎng)絡設備及應用相關的數(shù)據(jù)及結果數(shù)據(jù)、統(tǒng)計數(shù)據(jù)等大的數(shù)據(jù)內(nèi)容
3.2 ?大數(shù)據(jù)深入分析
基于MongoDB中存儲的網(wǎng)絡組件大數(shù)據(jù)庫,深入研究各個組件和各種協(xié)議的安全性,例如對不同版本的SSL/TLS協(xié)議進行深入分析,分析是否存在缺少邊界檢查的問題,這個問題會造成緩存區(qū)的超讀,從而引發(fā)著名的心臟滴血漏洞。通過對大數(shù)據(jù)的深入分析,可以對IT資產(chǎn)組件的安全性做出快速精確的分析,加快響應速度,方便對數(shù)據(jù)的檢索。
3.3 ?數(shù)據(jù)實時檢索
MongoDB中存儲的數(shù)據(jù)進過深入分析之后,需要快速實現(xiàn)對分析后數(shù)據(jù)的實時檢索,本文研究使用ElasticSearch檢索技術,ElasticSearch 是一個分布式、高擴展、高實時的搜索與數(shù)據(jù)分析引擎。它能很方便的使大量數(shù)據(jù)具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸縮性,能使數(shù)據(jù)在生產(chǎn)環(huán)境變得更有價值。ElasticSearch 的實現(xiàn)原理主要分為以下幾個步驟,首先用戶將數(shù)據(jù)提交到Elastic Search數(shù)據(jù)庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一并存入數(shù)據(jù),當用戶搜索數(shù)據(jù)時候,再根據(jù)權重將結果排名,打分,再將返回結果呈現(xiàn)給用戶。在資產(chǎn)探查和漏洞掃描中,依靠 Elasticsearch強大的數(shù)據(jù)檢索能力
實現(xiàn)大數(shù)據(jù)深入分析結果的實時檢索。
圖5 ?數(shù)據(jù)實時檢索示意圖
Fig.5 ?Schematic diagram of real-time data retrieval
4 ?結語
本文通過對高速無感探測技術及漏洞PoC驗證技術的研究,結合大數(shù)據(jù)分析,為網(wǎng)絡空間組件安全的研究提出了新的解決思路,在發(fā)展中有廣闊的應用前景。
參考文獻
[1]王宸東, 郭淵博, 甄帥輝, 等. 網(wǎng)絡資產(chǎn)探測技術研究[J]. 計算機科學, 2018, 45(12): 24-31.
[2]肖宇峰, 何明, 汪來富. 電信運營商網(wǎng)絡資產(chǎn)安全管理技術的應用研究與實踐[J]. 廣東通信技術, 2018, 38(07): 32-41+51.
[3]陳錦春. 基于加權余弦相似度的網(wǎng)絡資產(chǎn)資源預匹配方案[J]. 電信技術, 2018(02): 46-49.
[4]賀鳴. 對廣電網(wǎng)絡資產(chǎn)的會計核算處理方法研究[J]. 納稅, 2017(34): 94.
[5]夏智偉, 李樂成. 網(wǎng)絡安全態(tài)勢感知系統(tǒng)研究與設計[J]. 信息通信, 2017(05): 147-148.
[6]傅濤. 基于源碼與二進制文件的漏洞挖掘技術[J]. 軟件, 2018, 39(7): 95-97.
[7]印杰, 李千目. 軟件代碼漏洞的電子取證技術綜述[J]. 軟件, 2015, 36(12): 49-59.
[8]唐菁敏, 王紅彬, 王朝陽, 等. 基于SSM+ZD的漏洞管理平臺設計與實現(xiàn)[J]. 軟件, 2018, 39(2): 139-142.
[9]謝華成, 馬學文. MongoDB 數(shù)據(jù)庫下文件型數(shù)據(jù)存儲研究[J]. 軟件, 2015, 36(11): 12-14.
[10]白長清, 劉敏. MongoDB 在氣象傳感器數(shù)據(jù)處理中的應用[J]. 軟件, 2015, 36(11): 34-37.