路松松, 王曉鋒, 毛 力
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫214122)
隨著網(wǎng)絡(luò)的發(fā)展和應(yīng)用的深入,網(wǎng)絡(luò)蠕蟲已經(jīng)成為危害網(wǎng)絡(luò)正常運行的一個巨大威脅[1]。傳統(tǒng)的安全技術(shù)在與網(wǎng)絡(luò)蠕蟲的不斷對抗中常常處于劣勢。良性蠕蟲能夠在蠕蟲爆發(fā)初期,或者蠕蟲爆發(fā)之前主動修復(fù)網(wǎng)絡(luò)中漏洞主機,從而控制蠕蟲疫情的爆發(fā)范圍[2]。因此,良性蠕蟲已經(jīng)慢慢成為對抗網(wǎng)絡(luò)蠕蟲的一種有效措施。為了與良性蠕蟲對應(yīng),文中將網(wǎng)絡(luò)蠕蟲稱之為惡性蠕蟲。
仿真是對蠕蟲研究的重要手段之一,然而大規(guī)模的蠕蟲仿真不僅消耗極大的計算機資源,而且會花費大量的時間。為此,有人提出通過使用更多的處理器仿真網(wǎng)絡(luò)來增加計算能力,以提高仿真速度和處理數(shù)據(jù)的能力,即并行離散事件仿真(Parallel Discrete Event Simulation,PDES)[3]機制。莊新妍等人[4]以此為基礎(chǔ)提出了一種基于網(wǎng)格的蠕蟲行為模擬器,然而該模擬器并沒有提供良性蠕蟲,腳本生成和界面顯示方面也沒有具體介紹。
為了解決上述問題,文中以GTNetS[5]作為仿真器設(shè)計并實現(xiàn)了一種并行化蠕蟲對抗仿真系統(tǒng)。它不僅提供了良性蠕蟲,也能夠自動生成仿真腳本上傳到服務(wù)器運行,并將仿真結(jié)果在前臺界面進行實時展示。
Frank根據(jù)良性蠕蟲的擴散方式將良性蠕蟲分為:主動型、被動型、混合型和基于IDS共4種類型的良性蠕蟲[6]。良性蠕蟲的對抗策略分為集中修補型、主動擴散型和監(jiān)測驅(qū)動型。
系統(tǒng)提供的良性蠕蟲為主動良性蠕蟲:良性蠕蟲被釋放到網(wǎng)絡(luò)中,會通過主動掃描或其他方法確定目標主機,并迅速感染,良性蠕蟲感染主機后,會修補漏洞和清除惡性蠕蟲,之后進入新一輪的傳播流程。
系統(tǒng)使用的對抗策略為主動擴散型:良性蠕蟲像惡性蠕蟲一樣在網(wǎng)絡(luò)中自動尋找漏洞主機,自動進行滲入、修補、傳播和查殺一系列工作,傳播速度快,防御范圍廣,可在惡性蠕蟲爆發(fā)初期或爆發(fā)前有效對抗蠕蟲,從而將惡性蠕蟲疫情控制在最小范圍內(nèi)。
如圖1所示,系統(tǒng)主要由5個不可或缺的模塊組成。
網(wǎng)絡(luò)拓撲選擇模塊提供 NEM[7]和CAIDA[8]兩種不同規(guī)模的權(quán)威性網(wǎng)絡(luò)拓撲。拓撲任務(wù)劃分模塊采用TPBLE劃分方法 ,對仿真任務(wù)進行劃分以加快仿真的速度。子網(wǎng)間路由配置是為了保證不同仿真服務(wù)器上的節(jié)點之間能夠進行數(shù)據(jù)傳輸而所需的路由信息。仿真腳本生成模塊將根據(jù)用戶選擇的蠕蟲種類和劃分后的網(wǎng)絡(luò)拓撲實現(xiàn)對蠕蟲仿真腳本自動生成并投放到仿真服務(wù)器中運行。仿真結(jié)果展示模塊能夠?qū)崟r直觀地將實驗結(jié)果展示出來。
圖1 并行蠕蟲對抗仿真系統(tǒng)設(shè)計框架Fig.1 Design framework ofthe parallelworm warfare simulation system
如圖2所示,系統(tǒng)實現(xiàn)時,存在3個問題需要解決:(1)服務(wù)器管理;(2)并行化拓撲生成;(3)仿真結(jié)果展示。
圖2 并行蠕蟲對抗仿真系統(tǒng)實現(xiàn)框架Fig.2 Realization framework of the parallel worm warfare simulation system
服務(wù)器是仿真運行的載體,是系統(tǒng)的核心部分,因此服務(wù)器管理是系統(tǒng)的重要基礎(chǔ)。它不僅關(guān)系到仿真腳本的上傳與前端命令的傳達,也影響仿真運行時對服務(wù)器組仿真結(jié)果的處理。
系統(tǒng)在對服務(wù)器進行管理,實際上是對服務(wù)器的IP地址的管理。為此系統(tǒng)將會開辟一片存儲空間來對服務(wù)器的IP地址進行保存,存儲空間和IP地址采用一對一映射。
服務(wù)器的 IP地址集合為 A={IP1,IP2,…,IPn},其中n表示總的服務(wù)器數(shù)量;存儲空間的集合為 B={Space1,Space2,…,Spacen}。集合A 中的任意一個元素在集合B中都有一個其唯一的值與對應(yīng)。此方法在保證服務(wù)器組整體性的同時,保證了服務(wù)器的局部性。
系統(tǒng)獲取并行化拓撲的過程分為兩步:獲取固定規(guī)模拓撲和使用TPBLE劃分方法[10]對仿真任務(wù)進行劃分。
CAIDA是最重要的互聯(lián)網(wǎng)數(shù)據(jù)提供者之一。它在不同的鏈路和交換中心收集了不同種類的網(wǎng)絡(luò)數(shù)據(jù),因此CAIDA提供的信息更具有現(xiàn)實網(wǎng)絡(luò)的依據(jù)。
NEM是一個基于度的拓撲生成器:匹配一定的局部特征(度的分配)比捕獲大規(guī)模等級結(jié)構(gòu)要更加重要。因此與其他拓撲生成器(基于結(jié)構(gòu)的拓撲生成器)相比,這種基于度量的模型生成大規(guī)模拓撲更加精確。使用NEM拓撲生成器,可以很方便地直接生成數(shù)千節(jié)點的大規(guī)模網(wǎng)絡(luò)拓撲圖。
如圖3所示,根據(jù)CAIDA和NEM不同的特性,系統(tǒng)在獲取固定規(guī)模拓撲時的方法不同,但對仿真任務(wù)劃分采用了相同的方法。
圖3 CAIDA和NEM拓撲生成Fig.3 Topology generation of CAIDA and NEM
2.2.1 固定規(guī)模拓撲 CAIDA的初始拓撲是相當大的,利用數(shù)據(jù)庫的數(shù)據(jù)處理功能,可以輕松實現(xiàn)對CAIDA數(shù)據(jù)的梳理。系統(tǒng)采用逐層去除最外層節(jié)點的方式來獲取小規(guī)模的拓撲。此方法不僅簡單,而且能保留原始拓撲的核心部分。
使用NEM可以輕松地得到各種規(guī)模的拓撲,但是若要將NEM融入系統(tǒng)中又太復(fù)雜。為了以CAIDA對應(yīng),此系統(tǒng)將NEM生成各種規(guī)模的拓撲導(dǎo)入到數(shù)據(jù)庫中;系統(tǒng)會根據(jù)用戶需要規(guī)模的大小,從數(shù)據(jù)庫中查找相應(yīng)規(guī)模的拓撲。
經(jīng)過上述步驟可以得到CAIDA和NEM的固定規(guī)模的拓撲。
2.2.2 TPBLE劃分方法 并行網(wǎng)絡(luò)模擬時,結(jié)束時間是按最后運行完模擬任務(wù)節(jié)點時間計算的,因此,為了減少模擬運行時間,對網(wǎng)絡(luò)拓撲劃分時,需要均衡各模擬節(jié)點模擬任務(wù)的負載量。在多機模擬環(huán)境下對網(wǎng)絡(luò)拓撲的劃分,應(yīng)以使得網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包個數(shù)最小為目標。因此,并行網(wǎng)絡(luò)模擬的效率,與節(jié)點負載與鏈路負載有很大關(guān)系。在網(wǎng)絡(luò)模擬中,除非模擬完成,否則無法準確地知道每個節(jié)點和每條鏈路的負載。因此,必須通過估計的方法來獲得節(jié)點和鏈路負載的估計值。文中采用TPBLE劃分方法對拓撲進行劃分。
TPBLE劃分方法由綜合負載估計算法和METIS[10]劃分工具組成。綜合評估算法中使用了Dijkstra算法[11],以求獲得任意兩個節(jié)點之間在一個確定圖中的最短路徑。
負載估計算法描述如下:
假設(shè)網(wǎng)絡(luò)拓撲中有M條鏈路,N個路由器,其中終端路由器個數(shù)為P,P個終端路由器所連接的主機個數(shù)用 Num[P]存儲。鏈路相對負載值用Linkp[M]存儲,路由器相對負載值用 Node[N]存儲。
1)初始化 Link[M],Node[N];
2)采用Dijkstra算法計算出P個終端路由器間的最短路徑 → Path[P][P];
3)計算鏈路相對負載值與路由器相對負載值;
對 Path[P][P]中每一條最短路徑 Path[i][j]
{
對 Path[i][j]中每一條鏈路 k:
Link[k] =Link[k]+Num[i]*Num[j]
對Path[i][j]中的每一個中間路由器上l:
Node[l] =Node[l]+Num[i]*Num[j]
對起始路由器i:
Node[i] =Node[i]+2*Num[i]*Num[j]
對終止路由器j:
Node[j] =Node[j] +2*Num[i]*Num[j]
}
算法首先計算出各終端路由器間的最短路徑,針對每一條最短路徑:最短路徑中的各條鏈路與各個路由器相對負載值增加,增加的值與這條最短路徑兩端路由器所連接的主機節(jié)點這個數(shù)有關(guān)。在劃分是忽略了主機節(jié)點而只是對路由器拓撲進行劃分,主機節(jié)點的相對負載由終端路由器代表,因此每一條最短路徑的起始路由器與終止路由器的增加值是中間路由器的2倍。
算法最后得到了各鏈路和路由器相對負載值的估計,這與鏈路、路由器的核心程度成正比。估計值并不是針對在一次模擬中鏈路或路由器負載的絕對值,即經(jīng)過鏈路或路由器的數(shù)據(jù)包個數(shù),而是針對在一個模擬中鏈路與鏈路間或路由器與路由器間負載的相對比值。
通過上述算法估計負載得到具有點和變權(quán)值的拓撲圖后,采用METIS對該拓撲圖進行劃分,使得劃分實現(xiàn)各子網(wǎng)負載均衡及子網(wǎng)間通信量的最小化。
對節(jié)點間數(shù)據(jù)流不能事先確定的模擬應(yīng)用,無法估計路由器與鏈路的負載絕對值,因此只能采用負載相對值作為權(quán)值。對于拓撲圖劃分工具來說,采用負載相對比值作為鏈路和節(jié)點的權(quán)值與采用絕對負載值作為鏈路和節(jié)點的權(quán)值所獲得的劃分效果是一致的。
在并行化仿真時,各服務(wù)器只存放自身部分的仿真結(jié)果,此需要對服務(wù)器的仿真結(jié)果進行整合處理以得到整個仿真結(jié)果。
整合過程:假設(shè)n臺服務(wù)器分別向前臺傳輸m項的仿真結(jié)果,則在緩沖區(qū)中將開辟出n*m大的存儲空間,每項結(jié)果都對應(yīng)n個存儲空間;當結(jié)果經(jīng)Socket傳到緩沖區(qū)時系統(tǒng)會對結(jié)果進行提取,并將其投放到特性的n個存儲空間中;當所有服務(wù)器的結(jié)果到達后,對這特定的n個空間結(jié)果進行累加就可以得到該項整體仿真結(jié)果;最終將其在前臺再顯示出來。
為了驗證系統(tǒng)的可行性,采用3臺服務(wù)器對系統(tǒng)進行仿真測試。
在圖4,5中,上邊的曲線是感染節(jié)點總數(shù),下邊是蠕蟲發(fā)包的總數(shù)。由此可知,UDP類型的蠕蟲發(fā)包數(shù)與感染節(jié)點數(shù)成正比,而TCP類型的蠕蟲并非如此。出現(xiàn)這種差異的原因在于這兩種類型的蠕蟲感染原理不同。
圖4 UDP惡性蠕蟲仿真結(jié)果Fig.4 Result of the UDP worm simulation
圖5 TCP惡性蠕蟲仿真結(jié)果Fig.5 Result of the TCP worm simulation
UDP和TCP類型的蠕蟲都是通過數(shù)據(jù)包進行感染的,但UDP類型的蠕蟲不需要建立連接便可以發(fā)送數(shù)據(jù)包。也就是,不管目的地址的主機是否存在都進行正常發(fā)送,因此UDP類型蠕蟲的數(shù)據(jù)包和感染節(jié)點數(shù)成正比。TCP類型的蠕蟲在感染前需要建立連接,連接成功才會發(fā)送數(shù)據(jù)包。然而,目的IP是隨機產(chǎn)生的,并不能保證IP地址真實存在,也并不能保證每次都能建立鏈接,所以TCP類型蠕蟲的發(fā)包數(shù)與感染節(jié)點數(shù)不是正比關(guān)系。
在圖6中,上邊的曲線是UDP惡性蠕蟲的感染節(jié)點數(shù),下邊的是UDP良性蠕蟲修復(fù)的節(jié)點數(shù)。通過這兩條曲線可知,當仿真開始時,因為沒有修復(fù)的節(jié)點數(shù)很多,加上UDP惡性蠕蟲感染命中率高,導(dǎo)致UDP惡性蠕蟲感染節(jié)點數(shù)增加。在達到一定范圍后,可修復(fù)的節(jié)點數(shù)增加,以至于UDP良性蠕蟲的命中率增加,修復(fù)的節(jié)點數(shù)開始迅速增加,從而UDP惡性蠕蟲的感染速率下降。隨后UDP良性蠕蟲修復(fù)節(jié)點數(shù)增加到一定數(shù)量時,使得UDP惡性蠕蟲感染節(jié)點數(shù)保持穩(wěn)定。最終UDP惡性蠕蟲可感染的節(jié)點數(shù)減少,修復(fù)節(jié)點數(shù)增加,以至于感染的節(jié)點數(shù)下降,并最終為0,而在整個過程中UDP良性蠕蟲修復(fù)的節(jié)點數(shù)一直處于增長狀態(tài)。
圖6 UCP惡性蠕蟲和UDP良性蠕蟲運行結(jié)果Fig.6 Result of the UDP worm and UDP anti-worm simulation
本系統(tǒng)不僅為用戶提供了良性蠕蟲,而且采用自動生成蠕蟲仿真腳本和對仿真結(jié)果提供了實時展示的方式,使得蠕蟲仿真過程變得簡單,仿真效率也有極大提高。然而系統(tǒng)也有自己的缺陷,比如由于蠕蟲仿真過程中有大量的數(shù)據(jù)包轉(zhuǎn)發(fā),雖然系統(tǒng)有少量展示,但是仍然沒有達到理想的地步;再有蠕蟲仿真的隨機性,以至于腳本的仿真時間難以確定,需要提供足夠多的時間,以保證蠕蟲仿真完全。今后的工作將會在這些方面進行研究并逐步加以改善。
[1]楊昱.網(wǎng)絡(luò)蠕蟲的檢測和防治[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013(12):83-84.
YANG Yu.Network worm’s examination and prevention[J].Network Security Technology and Application,2013(12):83-84.(in Chinese)
[2]陳偉,孫志勇,許德武.良性蠕蟲的B+地址樹擴散策略[J].計算機工程,2012,38(6):135-138.
CHEN Wei,SUN Zhiyong,XU Dewu.B+Address tree diffusion strategy for benign worm[J].Computer Engineering,2013,38(6):135-138.(in Chinese)
[3]Fujimoto R M.Parallel discrete event simulation[J].Communications of the ACM,1990,33(10):30-53.
[4]莊新妍,劉揚,董改芳.基于網(wǎng)格的蠕蟲行為模擬器[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報:自然科學(xué)版,2014(2):151-157.
ZHUANG Xinyan,LIU Yang,DONG Gaifang.Internet worm behavior simulator based on grid[J].Journal of Inner Mongolia University:Natural Science Edition,2014(2):151-157.(in Chinese)
[5]George F Riley.Using the georgia tech network simulation[EB/OL].http://www.ece.gatech.edu/research/labs/MANIACS/GTNets/docs/GTN ets_manual.pdf.
[6]Castaneda F,Sezer E C,XU J.WORM vs.WORM:preliminary study of an active counter-attack mechanism[C]//Proceedings of the 2004 ACM Workshop on Rapid Malcode.Washingtom DC:Association for Computing Machinery,2004:83-93.
[7]Tangmunarunkit H,Govindan R,Jamin S,et al.Network topology generators:degree-based vs.structural[J].Proceedings of Acm Sigcomm Computer Communication Review.Pennsylvania:[s.n.],2002,31(4):147-159.
[8]楊望.CAIDA提供互聯(lián)網(wǎng)數(shù)據(jù)共享服務(wù)[J].中國教育網(wǎng)絡(luò),2008(5):27-28.
YANG Wang.CAIDA provide internet data services sharing[J].China Education Network,2008(5):27-28.(in Chinese)
[9]王曉鋒,方濱興,云曉春,等.并行網(wǎng)絡(luò)模擬中的一種拓撲劃分方法[J].通信學(xué)報,2006,27(2):16-21.
WANG Xiaofeng,WANG Binxing,YUN Xiaochun,et al.Approach for topology partitioning in parallel network simulation[J].Journal on Communications,2006,27(2):16-21.(in Chinese)
[10]George K,Kumar V P.METIS-a software package for partitioning unstructured graphs,partitioning meshes,and computing fillreducing orderings of sparse matrices,version 4.0[R].Twin Cities:University of Minnesota,1998.
[11]Dijkstra E W.A note on two problems in connexion with graphs[J].Numerische Mathematik,1959(1):269-271.