


摘 ?要: 為滿足日益發展的網絡空間安全對空間內IT資產的分布、存活、設備運行及漏洞分布情況的了解需求,本文提出了采用高速無感探測技術及poc漏洞驗證技術來實現對IT資產的快速梳理及漏洞的精準定位,實現了資產與漏洞關聯,方便了對復雜網絡資產的管理,簡化了日常運維,為網絡空間安全快速發展提供了新的前進方向。
關鍵詞: 高速無感;資產探查;漏洞Poc
中圖分類號: TP393.08 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.12.037
本文著錄格式:秦丞,賀渝鑌. IT資產高速探查及漏洞發現系統的研究[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搜索引擎的出現向人們展示了網絡和真實世界的匯聚是如此之快,數以百萬計人每天依賴的工業系統在黑客入侵面前如此不堪一擊。它還揭示了網絡世界的連接性和復雜性超出任何人的理解,網絡中的漏洞比人們之前想象的要大得多。在過去兩年中,Shodan搜索引擎已收集到近1億臺工業設備的數據。
相比于國外更加面向工業設備,國內方面,也有相關公司針對全球大約40億數量的IP進行了信息普查工作方面的研究,并出現了網絡空間搜索的相關系統,可面向網絡空間的應用組件、網絡設備及工控設備進行探測,也是目前資產探測及漏洞發現中較為新興的技術。
近幾年來在以“互聯網+”模式的催生下,以及“物聯網”的飛速發展,網絡空間所覆蓋的行業領域及應用邊界在不斷擴大,導致原有網絡空間資源的安全監控及防護手段所存在著滯后性及不完善性已日益凸顯,如:缺少高效、精準的技術手段,無法及時獲取系統和設備所開放的組件、服務和端口情況,以至無法實時、準確獲取網絡設備狀態信息及所存在威脅風險所覆蓋或影響的范圍,同時無法實現對威脅產生源頭的有效追溯,這類問題越來越明顯,在此基礎上,本文進行了資產高速探測技術及漏洞發現技術的研究,希望通過研究解決傳統資產探測中存在的問題。
1 ?高速無感探測技術研究
1.1 ?無狀態掃描
傳統資產探測技術都采用TCP發包技術,整個過程涉及到TCP三次握手連接的建立,持續時間長,發包量大,當出現請求連接失敗時,涉及到丟棄包的處理,易造成網絡堵塞[1-3]。
圖1 ?傳統資產探測技術示意圖
Fig.1 ?Sketch Map of Traditional Asset
Detection Technology
為了實現更快速的探測,本文研究使用無狀態掃描技術,無狀態掃描是指在掃描過程中,無需關心連接狀態,不占用系統TCP/IP協議棧資源,忽略SYN、ACK、FIN、TIMEWAIT等狀態,僅通過一次發包的回包來判斷端口開放性的一種掃描技術。由于掃描過程中一般僅向目標端口發送TCP三次握手中的SYN包,然后根據端口回包判斷此端口的開放性,因此這種掃描技術又被稱為半連接掃描。此種掃描技術無須維護連接狀態,端口開放性判斷邏輯簡單,僅需要一個Bitmap結合回包內容即可完成端口開放性的判斷,可以最大限度的利用服務器的CPU和帶寬資源,以最快速度完成端口開放性檢測。
圖2 ?無狀態掃描技術示意圖
Fig.2 ?Sketch of stateless scanning technology
1.2 ?IP列表拆分
傳統掃描系統在進行網絡掃描時,會依據IP地址進行按序掃描,而一些安全設備通常具有防掃描機制,會根據掃描的順序性來判斷,如果單一IP請求過多并帶有一定規則性,則很容易被判定為攻擊行為,后續的連接請求將會被阻斷,探測準確率也會因此下降。最常見的情況為對一個地址進行探測,一段時間后該地址提示訪問被拒絕[4]。
圖3 ?傳統掃描技術示意圖
Fig.3 ?Sketch of traditional scanning techniques
為了避免大量發包對正常業務造成影響,本文采用IP列表拆分技術,對探測的ip列表進行拆分,打亂順序進行掃描,掃描完成后將再次重新排列組合,避免掃描被安全設備的防御機制所阻斷。
圖4 ?IP拆分示意圖
Fig.4 ?IP splitting schematic
1.3 ?引用指紋庫
為了實現對資產組件探測的準確率,本文研究引用IT資產指紋庫,進行資產檢測時,首先探測目標系統的存活主機,對存活主機進行端口掃描,確定系統開放的端口,同時根據協議指紋技術識別出主機的操作系統類型。然后對開放的端口進行網絡服務類型的識別,確定其提供的網絡服務。根據目標系統的操作系統平臺和提供的網絡服務,調用漏洞資料庫中已知的各種漏洞進行逐一檢測,通過對探測響應數據包的分析判斷是否存在漏洞[5-7]。
端口指紋庫:研究引用端口指紋庫進而獲得組件的軟硬件類型、設備類型、廠商、品牌、型號等豐富信息。
操作系統指紋庫:據 TCP/IP 協議棧指紋識別不同的操作系統。雖然 RFC 對 TCP/IP 協議有著詳細的描述,但其中依然存在著描述不明確或描述明確但沒有做強制約定的地方。因此不同操作系統不同版本在 TCP/IP 協議棧的實現方案上都會有其特殊的處理方式,引用指紋庫可以實現多種類別數據庫的探測。
Web組件指紋庫:HTTP協議作為應用層協議,其上構建著種類繁多的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漏洞驗證
現有的網絡漏洞掃描器主要是利用特征匹配的原理來識別各種已知的漏洞。掃描器發送含有某一漏洞特征探測碼的數據包,根據返回數據包中是否含有該漏洞的響應特征碼來判斷是否存在漏洞[8]。例如,對于IIS中的Uncode目錄遍歷漏洞,掃描器只要發送含有特征代碼%c1%1c的探測包;http:// x.x.x.x/scrlpts/..%c1%1c../winnt/system32/cmdexe?/c+ dir,如果應答數據包中含有200 OK則可以斷定該漏洞存在。這樣的驗證方式存在兩個明顯弊端,一個是驗證漏洞需要發送大量的數據包,容易被安全設備和服務器認定為攻擊行為而對IP進行阻斷;另一個方面,通過單純的發送帶有某個驗證規則的數據包,驗證的準確率低,易產生誤報。
為了解決傳統掃漏洞驗證方式存在的問題,本文研究采用的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的驗證原理大多是模擬計算機去訪問可能存在漏洞的地址,再根據響應結果判斷漏洞是否存在,這樣即使是進行批量驗證,也會由于其模擬正常人為訪問而不會造成安全設備的攔截。另外成熟的PoC通用性很強,可以針對不同版本的組件進行漏洞的驗證。最重要的一點PoC基本都是開源的,有許多經驗豐富的滲透測試人員的程序員進行長期更新和維護,這很大程度上保證了PoC代碼驗證的準確性和對新出漏洞的更新速度。采用對接豐富完善的PoC代碼庫,滿足對多種漏洞的驗證需求,并且PoC驗證程序大多使用Python語言編寫,入門簡單,開發效率高,有非常強大的第三方庫,大大降低了開發周期,高級語言,編寫程序時不需要考慮內存管理一類的底層細節。可移植性高,可擴展,可嵌入,可以把Python程序嵌入C/C++,這些都方便了使用者編寫針對特定漏洞的PoC。
2.2 ?Poc漏洞關聯
漏洞驗證作為掃描過程中最耗時的部分,常常成為漏洞應急和漏洞常規普查中的關鍵節點。要加快漏洞驗證的速度,減少需要驗證的目標數量就成了最直接有效的一種方法。為了實現漏洞的資產的數據關聯,本文研究使用漏洞關聯技術,在進行漏洞驗證時,將漏洞都帶有與之相關的組件的特征信息嵌入其中,當一個新的漏洞出來的時候,有可能漏洞發布者并沒有指明漏洞影響的版本號,這個時候通過漏洞詳情明確該漏洞影響的版本具體有那個或者那些,將其版本信息寫入PoC程序中,將與之相關的資產組件分布情況也羅列出來。如果不明確漏洞影響,在漏洞驗證的同時既不能關聯漏洞,又浪費大量時間。所以使用漏洞關聯技術能有效縮小漏洞驗證的目標范圍,大大加快漏洞驗證速度,提升漏洞檢測效率,并實現漏洞與資產組件的互相關聯。
3 ?大數據技術研究
研究IT資產探查和漏洞發現,是針對海量數據的批量操作,為了實現對大量數據的迅速響應和使用者對數據快速增刪查改的功能,本文研究使用大數據處理技術。
3.1 ?大數據分布存儲
IT資產探測的網絡設備數量巨大,采集信息的種類多,為滿足大數據的存儲要求,本文研究采用MongoDB數據庫進行存儲。MongoDB是一個基于分布式文件存儲的數據庫[9-10]。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的軟件,是非關系數據庫當中功能最豐富,最像關系數據庫的。支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。它的特點是高性能、易部署、易使用,存儲數據非常方便。利用MongoDB分布式的各種優點,可用于存儲各種類型網絡設備及應用相關的數據及結果數據、統計數據等大的數據內容
3.2 ?大數據深入分析
基于MongoDB中存儲的網絡組件大數據庫,深入研究各個組件和各種協議的安全性,例如對不同版本的SSL/TLS協議進行深入分析,分析是否存在缺少邊界檢查的問題,這個問題會造成緩存區的超讀,從而引發著名的心臟滴血漏洞。通過對大數據的深入分析,可以對IT資產組件的安全性做出快速精確的分析,加快響應速度,方便對數據的檢索。
3.3 ?數據實時檢索
MongoDB中存儲的數據進過深入分析之后,需要快速實現對分析后數據的實時檢索,本文研究使用ElasticSearch檢索技術,ElasticSearch 是一個分布式、高擴展、高實時的搜索與數據分析引擎。它能很方便的使大量數據具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸縮性,能使數據在生產環境變得更有價值。ElasticSearch 的實現原理主要分為以下幾個步驟,首先用戶將數據提交到Elastic Search數據庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一并存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再將返回結果呈現給用戶。在資產探查和漏洞掃描中,依靠 Elasticsearch強大的數據檢索能力
實現大數據深入分析結果的實時檢索。
圖5 ?數據實時檢索示意圖
Fig.5 ?Schematic diagram of real-time data retrieval
4 ?結語
本文通過對高速無感探測技術及漏洞PoC驗證技術的研究,結合大數據分析,為網絡空間組件安全的研究提出了新的解決思路,在發展中有廣闊的應用前景。
參考文獻
[1]王宸東, 郭淵博, 甄帥輝, 等. 網絡資產探測技術研究[J]. 計算機科學, 2018, 45(12): 24-31.
[2]肖宇峰, 何明, 汪來富. 電信運營商網絡資產安全管理技術的應用研究與實踐[J]. 廣東通信技術, 2018, 38(07): 32-41+51.
[3]陳錦春. 基于加權余弦相似度的網絡資產資源預匹配方案[J]. 電信技術, 2018(02): 46-49.
[4]賀鳴. 對廣電網絡資產的會計核算處理方法研究[J]. 納稅, 2017(34): 94.
[5]夏智偉, 李樂成. 網絡安全態勢感知系統研究與設計[J]. 信息通信, 2017(05): 147-148.
[6]傅濤. 基于源碼與二進制文件的漏洞挖掘技術[J]. 軟件, 2018, 39(7): 95-97.
[7]印杰, 李千目. 軟件代碼漏洞的電子取證技術綜述[J]. 軟件, 2015, 36(12): 49-59.
[8]唐菁敏, 王紅彬, 王朝陽, 等. 基于SSM+ZD的漏洞管理平臺設計與實現[J]. 軟件, 2018, 39(2): 139-142.
[9]謝華成, 馬學文. MongoDB 數據庫下文件型數據存儲研究[J]. 軟件, 2015, 36(11): 12-14.
[10]白長清, 劉敏. MongoDB 在氣象傳感器數據處理中的應用[J]. 軟件, 2015, 36(11): 34-37.