路松松, 王曉鋒, 毛 力
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫214122)
隨著網(wǎng)絡(luò)的發(fā)展和應(yīng)用的深入,網(wǎng)絡(luò)蠕蟲已經(jīng)成為危害網(wǎng)絡(luò)正常運(yùn)行的一個(gè)巨大威脅[1]。傳統(tǒng)的安全技術(shù)在與網(wǎng)絡(luò)蠕蟲的不斷對(duì)抗中常常處于劣勢(shì)。良性蠕蟲能夠在蠕蟲爆發(fā)初期,或者蠕蟲爆發(fā)之前主動(dòng)修復(fù)網(wǎng)絡(luò)中漏洞主機(jī),從而控制蠕蟲疫情的爆發(fā)范圍[2]。因此,良性蠕蟲已經(jīng)慢慢成為對(duì)抗網(wǎng)絡(luò)蠕蟲的一種有效措施。為了與良性蠕蟲對(duì)應(yīng),文中將網(wǎng)絡(luò)蠕蟲稱之為惡性蠕蟲。
仿真是對(duì)蠕蟲研究的重要手段之一,然而大規(guī)模的蠕蟲仿真不僅消耗極大的計(jì)算機(jī)資源,而且會(huì)花費(fèi)大量的時(shí)間。為此,有人提出通過使用更多的處理器仿真網(wǎng)絡(luò)來增加計(jì)算能力,以提高仿真速度和處理數(shù)據(jù)的能力,即并行離散事件仿真(Parallel Discrete Event Simulation,PDES)[3]機(jī)制。莊新妍等人[4]以此為基礎(chǔ)提出了一種基于網(wǎng)格的蠕蟲行為模擬器,然而該模擬器并沒有提供良性蠕蟲,腳本生成和界面顯示方面也沒有具體介紹。
為了解決上述問題,文中以GTNetS[5]作為仿真器設(shè)計(jì)并實(shí)現(xiàn)了一種并行化蠕蟲對(duì)抗仿真系統(tǒng)。它不僅提供了良性蠕蟲,也能夠自動(dòng)生成仿真腳本上傳到服務(wù)器運(yùn)行,并將仿真結(jié)果在前臺(tái)界面進(jìn)行實(shí)時(shí)展示。
Frank根據(jù)良性蠕蟲的擴(kuò)散方式將良性蠕蟲分為:主動(dòng)型、被動(dòng)型、混合型和基于IDS共4種類型的良性蠕蟲[6]。良性蠕蟲的對(duì)抗策略分為集中修補(bǔ)型、主動(dòng)擴(kuò)散型和監(jiān)測(cè)驅(qū)動(dòng)型。
系統(tǒng)提供的良性蠕蟲為主動(dòng)良性蠕蟲:良性蠕蟲被釋放到網(wǎng)絡(luò)中,會(huì)通過主動(dòng)掃描或其他方法確定目標(biāo)主機(jī),并迅速感染,良性蠕蟲感染主機(jī)后,會(huì)修補(bǔ)漏洞和清除惡性蠕蟲,之后進(jìn)入新一輪的傳播流程。
系統(tǒng)使用的對(duì)抗策略為主動(dòng)擴(kuò)散型:良性蠕蟲像惡性蠕蟲一樣在網(wǎng)絡(luò)中自動(dòng)尋找漏洞主機(jī),自動(dòng)進(jìn)行滲入、修補(bǔ)、傳播和查殺一系列工作,傳播速度快,防御范圍廣,可在惡性蠕蟲爆發(fā)初期或爆發(fā)前有效對(duì)抗蠕蟲,從而將惡性蠕蟲疫情控制在最小范圍內(nèi)。
如圖1所示,系統(tǒng)主要由5個(gè)不可或缺的模塊組成。
網(wǎng)絡(luò)拓?fù)溥x擇模塊提供 NEM[7]和CAIDA[8]兩種不同規(guī)模的權(quán)威性網(wǎng)絡(luò)拓?fù)洹M負(fù)淙蝿?wù)劃分模塊采用TPBLE劃分方法 ,對(duì)仿真任務(wù)進(jìn)行劃分以加快仿真的速度。子網(wǎng)間路由配置是為了保證不同仿真服務(wù)器上的節(jié)點(diǎn)之間能夠進(jìn)行數(shù)據(jù)傳輸而所需的路由信息。仿真腳本生成模塊將根據(jù)用戶選擇的蠕蟲種類和劃分后的網(wǎng)絡(luò)拓?fù)鋵?shí)現(xiàn)對(duì)蠕蟲仿真腳本自動(dòng)生成并投放到仿真服務(wù)器中運(yùn)行。仿真結(jié)果展示模塊能夠?qū)崟r(shí)直觀地將實(shí)驗(yàn)結(jié)果展示出來。
圖1 并行蠕蟲對(duì)抗仿真系統(tǒng)設(shè)計(jì)框架Fig.1 Design framework ofthe parallelworm warfare simulation system
如圖2所示,系統(tǒng)實(shí)現(xiàn)時(shí),存在3個(gè)問題需要解決:(1)服務(wù)器管理;(2)并行化拓?fù)渖?(3)仿真結(jié)果展示。
圖2 并行蠕蟲對(duì)抗仿真系統(tǒng)實(shí)現(xiàn)框架Fig.2 Realization framework of the parallel worm warfare simulation system
服務(wù)器是仿真運(yùn)行的載體,是系統(tǒng)的核心部分,因此服務(wù)器管理是系統(tǒng)的重要基礎(chǔ)。它不僅關(guān)系到仿真腳本的上傳與前端命令的傳達(dá),也影響仿真運(yùn)行時(shí)對(duì)服務(wù)器組仿真結(jié)果的處理。
系統(tǒng)在對(duì)服務(wù)器進(jìn)行管理,實(shí)際上是對(duì)服務(wù)器的IP地址的管理。為此系統(tǒng)將會(huì)開辟一片存儲(chǔ)空間來對(duì)服務(wù)器的IP地址進(jìn)行保存,存儲(chǔ)空間和IP地址采用一對(duì)一映射。
服務(wù)器的 IP地址集合為 A={IP1,IP2,…,IPn},其中n表示總的服務(wù)器數(shù)量;存儲(chǔ)空間的集合為 B={Space1,Space2,…,Spacen}。集合A 中的任意一個(gè)元素在集合B中都有一個(gè)其唯一的值與對(duì)應(yīng)。此方法在保證服務(wù)器組整體性的同時(shí),保證了服務(wù)器的局部性。
系統(tǒng)獲取并行化拓?fù)涞倪^程分為兩步:獲取固定規(guī)模拓?fù)浜褪褂肨PBLE劃分方法[10]對(duì)仿真任務(wù)進(jìn)行劃分。
CAIDA是最重要的互聯(lián)網(wǎng)數(shù)據(jù)提供者之一。它在不同的鏈路和交換中心收集了不同種類的網(wǎng)絡(luò)數(shù)據(jù),因此CAIDA提供的信息更具有現(xiàn)實(shí)網(wǎng)絡(luò)的依據(jù)。
NEM是一個(gè)基于度的拓?fù)渖善?匹配一定的局部特征(度的分配)比捕獲大規(guī)模等級(jí)結(jié)構(gòu)要更加重要。因此與其他拓?fù)渖善?基于結(jié)構(gòu)的拓?fù)渖善?相比,這種基于度量的模型生成大規(guī)模拓?fù)涓泳_。使用NEM拓?fù)渖善鳎梢院芊奖愕刂苯由蓴?shù)千節(jié)點(diǎn)的大規(guī)模網(wǎng)絡(luò)拓?fù)鋱D。
如圖3所示,根據(jù)CAIDA和NEM不同的特性,系統(tǒng)在獲取固定規(guī)模拓?fù)鋾r(shí)的方法不同,但對(duì)仿真任務(wù)劃分采用了相同的方法。
圖3 CAIDA和NEM拓?fù)渖蒄ig.3 Topology generation of CAIDA and NEM
2.2.1 固定規(guī)模拓?fù)?CAIDA的初始拓?fù)涫窍喈?dāng)大的,利用數(shù)據(jù)庫(kù)的數(shù)據(jù)處理功能,可以輕松實(shí)現(xiàn)對(duì)CAIDA數(shù)據(jù)的梳理。系統(tǒng)采用逐層去除最外層節(jié)點(diǎn)的方式來獲取小規(guī)模的拓?fù)?。此方法不僅簡(jiǎn)單,而且能保留原始拓?fù)涞暮诵牟糠帧?/p>
使用NEM可以輕松地得到各種規(guī)模的拓?fù)?,但是若要將NEM融入系統(tǒng)中又太復(fù)雜。為了以CAIDA對(duì)應(yīng),此系統(tǒng)將NEM生成各種規(guī)模的拓?fù)鋵?dǎo)入到數(shù)據(jù)庫(kù)中;系統(tǒng)會(huì)根據(jù)用戶需要規(guī)模的大小,從數(shù)據(jù)庫(kù)中查找相應(yīng)規(guī)模的拓?fù)洹?/p>
經(jīng)過上述步驟可以得到CAIDA和NEM的固定規(guī)模的拓?fù)洹?/p>
2.2.2 TPBLE劃分方法 并行網(wǎng)絡(luò)模擬時(shí),結(jié)束時(shí)間是按最后運(yùn)行完模擬任務(wù)節(jié)點(diǎn)時(shí)間計(jì)算的,因此,為了減少模擬運(yùn)行時(shí)間,對(duì)網(wǎng)絡(luò)拓?fù)鋭澐謺r(shí),需要均衡各模擬節(jié)點(diǎn)模擬任務(wù)的負(fù)載量。在多機(jī)模擬環(huán)境下對(duì)網(wǎng)絡(luò)拓?fù)涞膭澐?,?yīng)以使得網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包個(gè)數(shù)最小為目標(biāo)。因此,并行網(wǎng)絡(luò)模擬的效率,與節(jié)點(diǎn)負(fù)載與鏈路負(fù)載有很大關(guān)系。在網(wǎng)絡(luò)模擬中,除非模擬完成,否則無法準(zhǔn)確地知道每個(gè)節(jié)點(diǎn)和每條鏈路的負(fù)載。因此,必須通過估計(jì)的方法來獲得節(jié)點(diǎn)和鏈路負(fù)載的估計(jì)值。文中采用TPBLE劃分方法對(duì)拓?fù)溥M(jìn)行劃分。
TPBLE劃分方法由綜合負(fù)載估計(jì)算法和METIS[10]劃分工具組成。綜合評(píng)估算法中使用了Dijkstra算法[11],以求獲得任意兩個(gè)節(jié)點(diǎn)之間在一個(gè)確定圖中的最短路徑。
負(fù)載估計(jì)算法描述如下:
假設(shè)網(wǎng)絡(luò)拓?fù)渲杏蠱條鏈路,N個(gè)路由器,其中終端路由器個(gè)數(shù)為P,P個(gè)終端路由器所連接的主機(jī)個(gè)數(shù)用 Num[P]存儲(chǔ)。鏈路相對(duì)負(fù)載值用Linkp[M]存儲(chǔ),路由器相對(duì)負(fù)載值用 Node[N]存儲(chǔ)。
1)初始化 Link[M],Node[N];
2)采用Dijkstra算法計(jì)算出P個(gè)終端路由器間的最短路徑 → Path[P][P];
3)計(jì)算鏈路相對(duì)負(fù)載值與路由器相對(duì)負(fù)載值;
對(duì) Path[P][P]中每一條最短路徑 Path[i][j]
{
對(duì) Path[i][j]中每一條鏈路 k:
Link[k] =Link[k]+Num[i]*Num[j]
對(duì)Path[i][j]中的每一個(gè)中間路由器上l:
Node[l] =Node[l]+Num[i]*Num[j]
對(duì)起始路由器i:
Node[i] =Node[i]+2*Num[i]*Num[j]
對(duì)終止路由器j:
Node[j] =Node[j] +2*Num[i]*Num[j]
}
算法首先計(jì)算出各終端路由器間的最短路徑,針對(duì)每一條最短路徑:最短路徑中的各條鏈路與各個(gè)路由器相對(duì)負(fù)載值增加,增加的值與這條最短路徑兩端路由器所連接的主機(jī)節(jié)點(diǎn)這個(gè)數(shù)有關(guān)。在劃分是忽略了主機(jī)節(jié)點(diǎn)而只是對(duì)路由器拓?fù)溥M(jìn)行劃分,主機(jī)節(jié)點(diǎn)的相對(duì)負(fù)載由終端路由器代表,因此每一條最短路徑的起始路由器與終止路由器的增加值是中間路由器的2倍。
算法最后得到了各鏈路和路由器相對(duì)負(fù)載值的估計(jì),這與鏈路、路由器的核心程度成正比。估計(jì)值并不是針對(duì)在一次模擬中鏈路或路由器負(fù)載的絕對(duì)值,即經(jīng)過鏈路或路由器的數(shù)據(jù)包個(gè)數(shù),而是針對(duì)在一個(gè)模擬中鏈路與鏈路間或路由器與路由器間負(fù)載的相對(duì)比值。
通過上述算法估計(jì)負(fù)載得到具有點(diǎn)和變權(quán)值的拓?fù)鋱D后,采用METIS對(duì)該拓?fù)鋱D進(jìn)行劃分,使得劃分實(shí)現(xiàn)各子網(wǎng)負(fù)載均衡及子網(wǎng)間通信量的最小化。
對(duì)節(jié)點(diǎn)間數(shù)據(jù)流不能事先確定的模擬應(yīng)用,無法估計(jì)路由器與鏈路的負(fù)載絕對(duì)值,因此只能采用負(fù)載相對(duì)值作為權(quán)值。對(duì)于拓?fù)鋱D劃分工具來說,采用負(fù)載相對(duì)比值作為鏈路和節(jié)點(diǎn)的權(quán)值與采用絕對(duì)負(fù)載值作為鏈路和節(jié)點(diǎn)的權(quán)值所獲得的劃分效果是一致的。
在并行化仿真時(shí),各服務(wù)器只存放自身部分的仿真結(jié)果,此需要對(duì)服務(wù)器的仿真結(jié)果進(jìn)行整合處理以得到整個(gè)仿真結(jié)果。
整合過程:假設(shè)n臺(tái)服務(wù)器分別向前臺(tái)傳輸m項(xiàng)的仿真結(jié)果,則在緩沖區(qū)中將開辟出n*m大的存儲(chǔ)空間,每項(xiàng)結(jié)果都對(duì)應(yīng)n個(gè)存儲(chǔ)空間;當(dāng)結(jié)果經(jīng)Socket傳到緩沖區(qū)時(shí)系統(tǒng)會(huì)對(duì)結(jié)果進(jìn)行提取,并將其投放到特性的n個(gè)存儲(chǔ)空間中;當(dāng)所有服務(wù)器的結(jié)果到達(dá)后,對(duì)這特定的n個(gè)空間結(jié)果進(jìn)行累加就可以得到該項(xiàng)整體仿真結(jié)果;最終將其在前臺(tái)再顯示出來。
為了驗(yàn)證系統(tǒng)的可行性,采用3臺(tái)服務(wù)器對(duì)系統(tǒng)進(jìn)行仿真測(cè)試。
在圖4,5中,上邊的曲線是感染節(jié)點(diǎn)總數(shù),下邊是蠕蟲發(fā)包的總數(shù)。由此可知,UDP類型的蠕蟲發(fā)包數(shù)與感染節(jié)點(diǎn)數(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ù)包進(jìn)行感染的,但UDP類型的蠕蟲不需要建立連接便可以發(fā)送數(shù)據(jù)包。也就是,不管目的地址的主機(jī)是否存在都進(jìn)行正常發(fā)送,因此UDP類型蠕蟲的數(shù)據(jù)包和感染節(jié)點(diǎn)數(shù)成正比。TCP類型的蠕蟲在感染前需要建立連接,連接成功才會(huì)發(fā)送數(shù)據(jù)包。然而,目的IP是隨機(jī)產(chǎn)生的,并不能保證IP地址真實(shí)存在,也并不能保證每次都能建立鏈接,所以TCP類型蠕蟲的發(fā)包數(shù)與感染節(jié)點(diǎn)數(shù)不是正比關(guān)系。
在圖6中,上邊的曲線是UDP惡性蠕蟲的感染節(jié)點(diǎn)數(shù),下邊的是UDP良性蠕蟲修復(fù)的節(jié)點(diǎn)數(shù)。通過這兩條曲線可知,當(dāng)仿真開始時(shí),因?yàn)闆]有修復(fù)的節(jié)點(diǎn)數(shù)很多,加上UDP惡性蠕蟲感染命中率高,導(dǎo)致UDP惡性蠕蟲感染節(jié)點(diǎn)數(shù)增加。在達(dá)到一定范圍后,可修復(fù)的節(jié)點(diǎn)數(shù)增加,以至于UDP良性蠕蟲的命中率增加,修復(fù)的節(jié)點(diǎn)數(shù)開始迅速增加,從而UDP惡性蠕蟲的感染速率下降。隨后UDP良性蠕蟲修復(fù)節(jié)點(diǎn)數(shù)增加到一定數(shù)量時(shí),使得UDP惡性蠕蟲感染節(jié)點(diǎn)數(shù)保持穩(wěn)定。最終UDP惡性蠕蟲可感染的節(jié)點(diǎn)數(shù)減少,修復(fù)節(jié)點(diǎn)數(shù)增加,以至于感染的節(jié)點(diǎn)數(shù)下降,并最終為0,而在整個(gè)過程中UDP良性蠕蟲修復(fù)的節(jié)點(diǎn)數(shù)一直處于增長(zhǎng)狀態(tài)。
圖6 UCP惡性蠕蟲和UDP良性蠕蟲運(yùn)行結(jié)果Fig.6 Result of the UDP worm and UDP anti-worm simulation
本系統(tǒng)不僅為用戶提供了良性蠕蟲,而且采用自動(dòng)生成蠕蟲仿真腳本和對(duì)仿真結(jié)果提供了實(shí)時(shí)展示的方式,使得蠕蟲仿真過程變得簡(jiǎn)單,仿真效率也有極大提高。然而系統(tǒng)也有自己的缺陷,比如由于蠕蟲仿真過程中有大量的數(shù)據(jù)包轉(zhuǎn)發(fā),雖然系統(tǒng)有少量展示,但是仍然沒有達(dá)到理想的地步;再有蠕蟲仿真的隨機(jī)性,以至于腳本的仿真時(shí)間難以確定,需要提供足夠多的時(shí)間,以保證蠕蟲仿真完全。今后的工作將會(huì)在這些方面進(jìn)行研究并逐步加以改善。
[1]楊昱.網(wǎng)絡(luò)蠕蟲的檢測(cè)和防治[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+地址樹擴(kuò)散策略[J].計(jì)算機(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]莊新妍,劉揚(yáng),董改芳.基于網(wǎng)格的蠕蟲行為模擬器[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào):自然科學(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].中國(guó)教育網(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ò)模擬中的一種拓?fù)鋭澐址椒ǎ跩].通信學(xué)報(bào),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.