劉 昕,賈春福,胡志超,劉國友,王 冬
(1. 中國石油大學(xué)(華東)計算機與通信工程學(xué)院,青島266580;2. 南開大學(xué)計算機與信息安全系,天津300071;3. 南京大學(xué)計算機軟件新技術(shù)國家重點實驗室,南京210093)
目前 P2P系統(tǒng)已經(jīng)廣泛應(yīng)用于文件共享、多媒體傳輸、分布式數(shù)據(jù)存儲、分布式計算、實時通信及協(xié)同工作等領(lǐng)域,其中文件共享應(yīng)用最多,與普通用戶關(guān)系最為密切.無結(jié)構(gòu)P2P網(wǎng)絡(luò)KaZaA是非常流行的文件共享應(yīng)用系統(tǒng).
已經(jīng)出現(xiàn)的一些利用 P2P系統(tǒng)的蠕蟲有Gnuman[1]、W32.Benjamin.Worm[2]和 W32.Noobert[3]等.這些蠕蟲都需要人的參與,因此威脅比較?。?P2P網(wǎng)絡(luò)中節(jié)點的鄰居列表自動傳播的蠕蟲威脅則非常大.2005年,Zhou等[4]第 1次提出 P2P蠕蟲的概念.他們認為P2P蠕蟲是一種拓撲蠕蟲,可以利用 P2P網(wǎng)絡(luò)的拓撲結(jié)構(gòu)自動傳播,通過鄰居列表獲取下一個傳播對象.拓撲蠕蟲沒有掃描過程且連接成功率很高,并且這種 P2P蠕蟲的傳播融于正常的 P2P通信中,基于異常的檢測方式很難識別,因此這種蠕蟲傳播得非常快且難以控制.許多學(xué)者對P2P蠕蟲傳播進行了分析.夏春和等[5]建立了P2P 蠕蟲在3種典型結(jié)構(gòu)化對等網(wǎng)中的傳播模型.Ramachandran等[6]對 Gnutella型分布式 P2P網(wǎng)絡(luò)中惡意軟件的傳播進行了建模.
根據(jù) P2P網(wǎng)絡(luò)的拓撲性質(zhì),許多研究將其分割成多個子網(wǎng)圍堵P2P蠕蟲[7-8].無結(jié)構(gòu)P2P網(wǎng)絡(luò)節(jié)點的度數(shù)遵循冪律分布,即少量的節(jié)點擁有極大的連接數(shù),這類骨干節(jié)點實質(zhì)上支撐了 P2P網(wǎng)絡(luò)的運行,其安全對整個網(wǎng)絡(luò)影響很大.若 P2P蠕蟲首先感染這些節(jié)點,則會快速地傳播到周圍節(jié)點,進而導(dǎo)致整個P2P網(wǎng)絡(luò)癱瘓.已有研究利用節(jié)點在 P2P網(wǎng)絡(luò)中的位置對抗P2P蠕蟲的傳播[9-10].
現(xiàn)有的系統(tǒng)軟件和應(yīng)用軟件存在著各種漏洞,而且在補丁發(fā)布之后,很多用戶仍然不愿意為系統(tǒng)和軟件打上補丁,使得網(wǎng)絡(luò)上的主機存在諸多安全隱患.這些漏洞對用戶主機的影響也不盡相同.蠕蟲利用的漏洞嚴重級別越高,造成的危害就越大.節(jié)點存在漏洞的數(shù)目和嚴重級別直接決定著該節(jié)點抵抗蠕蟲的能力.以往的蠕蟲圍堵策略沒有區(qū)分漏洞級別,考慮不同節(jié)點抵抗蠕蟲能力的不同.筆者采用 2個鄰居列表的機制[11],在區(qū)分漏洞級別的基礎(chǔ)上定義節(jié)點間的距離,依據(jù)節(jié)點抵抗蠕蟲的能力為其選擇不同數(shù)量的鄰居,使得無結(jié)構(gòu) P2P網(wǎng)絡(luò)中節(jié)點的分布更加合理,提高了對 P2P蠕蟲圍堵的能力,并且將該機制應(yīng)用于KaZaA網(wǎng)絡(luò)中.
對于 Internet蠕蟲圍堵,許多研究采用發(fā)布警告的方式,通知那些沒有被蠕蟲感染但有漏洞的節(jié)點,收到警告的節(jié)點在蠕蟲到達之前生成過濾器防止被感染,或者安裝補丁對節(jié)點免疫[4,8,12].這種發(fā)布警告的方式也可用于對P2P網(wǎng)絡(luò)蠕蟲的圍堵.
在 P2P網(wǎng)絡(luò)中,節(jié)點使用的操作系統(tǒng)和應(yīng)用軟件的多樣性可以降低相同漏洞的感染幾率[4].安裝不同操作系統(tǒng)和應(yīng)用軟件的節(jié)點不容易受到同一個蠕蟲的攻擊,所以大部分蠕蟲不能感染 P2P網(wǎng)絡(luò)中所有的節(jié)點.一些研究者提出基于節(jié)點平臺多樣性的蠕蟲圍堵策略,這使得 P2P蠕蟲很難利用鄰居列表傳播[13-15].
Di-jest是一個基于異質(zhì)性的自動鄰居選擇方法,認為如果2個節(jié)點之間的差異較大,那么節(jié)點之間的距離就較大[13].Di-jest服務(wù)器利用了一個決策樹集合,決策樹是根據(jù)節(jié)點的系統(tǒng)配置和安裝的應(yīng)用軟件產(chǎn)生的.該決策樹可以確定一個節(jié)點受蠕蟲攻擊的幾率.Di-jest服務(wù)器為每個節(jié)點推薦和它差異比較大的節(jié)點作為其鄰居.該方法減小了 P2P蠕蟲傳播的速度和范圍.但是這些推薦的鄰居不能使得蠕蟲隔離效果最好,而且該方法沒有使用警告機制.
Zhu等[9]提出了一個在傳播的早期階段圍堵手機蠕蟲的對抗策略,通過對網(wǎng)絡(luò)流量的分析提取出一個社會關(guān)系圖,即手機蠕蟲最可能傳播路徑的表示;通過2個不同的算法分割社會關(guān)系圖,并選擇一個最優(yōu)移動電話集來優(yōu)先打補丁,因為這些移動節(jié)點可能感染的節(jié)點數(shù)目最多.
羅衛(wèi)敏等[10]認為優(yōu)質(zhì)節(jié)點擁有比其他節(jié)點更多的連接度數(shù)和更高的性能,基于混合型良性蠕蟲概念設(shè)計出自動優(yōu)先趨近優(yōu)質(zhì)節(jié)點的對抗策略(APTHQN策略),合理利用優(yōu)質(zhì)節(jié)點的拓撲優(yōu)勢對抗P2P蠕蟲.
Fan等[16]提出了一種針對 P2P蠕蟲傳播的邏輯矩陣建模方法.他們發(fā)現(xiàn)在 P2P網(wǎng)絡(luò)中網(wǎng)絡(luò)特征對P2P蠕蟲的攻擊性能有影響.P2P蠕蟲傳播模型是用邏輯矩陣的差分方程描述的.本文采用這種方法對鄰居選擇機制進行建模,分析該機制的性能.
文獻[11]提出了基于 P2P網(wǎng)絡(luò)中節(jié)點之間的同質(zhì)性和異質(zhì)性的蠕蟲圍堵策略.在同質(zhì)性和異質(zhì)性的基礎(chǔ)上構(gòu)建了2個鄰居列表,其中最大距離鄰居列表的構(gòu)建基于異質(zhì)性,用來進行正常的通信.最小距離鄰居列表的構(gòu)建基于同質(zhì)性,用于警告的傳播.只在警告需要發(fā)送給其他節(jié)點時構(gòu)建,警告發(fā)送完之后該鄰居列表即被刪除.
以上這些策略沒有考慮蠕蟲利用不同級別的漏洞對網(wǎng)絡(luò)和主機造成危害程度不同的問題.為了解決這個問題,節(jié)點之間的距離根據(jù)漏洞的級別進行計算,可以更準確地反映節(jié)點與鄰居之間抵抗蠕蟲能力的差異,并根據(jù)節(jié)點抵抗蠕蟲的能力選擇合適的鄰居來抑制蠕蟲傳播.
節(jié)點間的同質(zhì)性表明節(jié)點之間具有同一漏洞的可能性比較大,節(jié)點易受同一蠕蟲的攻擊;異質(zhì)性則相反.利用特定漏洞的蠕蟲不能感染沒有該漏洞的節(jié)點.文獻[11]的蠕蟲圍堵機制是基于 P2P網(wǎng)絡(luò)中節(jié)點之間的同質(zhì)性和異質(zhì)性的.2個節(jié)點間的差異越大,被同一蠕蟲感染的幾率就越低.如果一個被蠕蟲感染的節(jié)點的鄰居節(jié)點不存在該蠕蟲利用的漏洞,那么該蠕蟲無法通過這些鄰居節(jié)點傳播出去,也無法到達P2P中其他有漏洞的節(jié)點,從而限制了蠕蟲在P2P網(wǎng)絡(luò)中的傳播.由于節(jié)點系統(tǒng)平臺和軟件的多樣性,網(wǎng)絡(luò)中某個節(jié)點檢測到蠕蟲攻擊的可能性很大.當節(jié)點檢測到蠕蟲攻擊,它會警告那些未被感染但具有可被該蠕蟲利用的漏洞的節(jié)點.對抗該蠕蟲的警告應(yīng)該在蠕蟲到達易感染節(jié)點之前發(fā)送給這些節(jié)點.蠕蟲沿著最大距離路由傳播,而警告沿著最小距離路由傳播.
在 P2P網(wǎng)絡(luò)中設(shè)置安全服務(wù)器用來存儲P2P網(wǎng)絡(luò)中的節(jié)點信息并為所有節(jié)點選擇鄰居.節(jié)點間進行正常通信時,一個節(jié)點向其最大距離的鄰居節(jié)點發(fā)送信息.如果某個蠕蟲利用鄰居列表在P2P網(wǎng)絡(luò)中感染其他節(jié)點,最大距離鄰居的方法可以減緩其傳播速度.
當某個節(jié)點檢測到一個蠕蟲,它能創(chuàng)建一個警告,然后向服務(wù)器請求最小距離鄰居列表,把警告發(fā)送給這些鄰居節(jié)點.對于已知漏洞和未知漏洞采用不同的鄰居選擇方法.已知蠕蟲利用的是已知漏洞,相應(yīng)的警告應(yīng)當發(fā)送給那些具有這個漏洞的節(jié)點.它向服務(wù)器請求易感染已知蠕蟲的鄰居節(jié)點.檢測到未知蠕蟲的節(jié)點向服務(wù)器請求與之距離最小的鄰居節(jié)點,這些鄰居存在對應(yīng)蠕蟲所利用的漏洞的可能性比較大.
2009年 10月 18日,中國信息安全“國家漏洞庫”正式投入運行[17],該漏洞庫已經(jīng)收錄 4萬多個漏洞.對于早期的很多漏洞,廠商都已經(jīng)發(fā)布補丁,無法被蠕蟲利用,因此根據(jù)漏洞發(fā)現(xiàn)的時間和重要程度選擇部分漏洞存儲到漏洞矩陣.漏洞編號采用標準CVE編號.
微軟于 2002年 11月根據(jù)客戶的反饋對漏洞等級評定系統(tǒng)進行了修訂[18],目的是幫助客戶根據(jù)具體環(huán)境決定應(yīng)用哪些修補程序以避免危害,以及需要在多長時間之內(nèi)采取行動.其漏洞等級的定義如表 1所示.
表1 Microsoft 安全響應(yīng)中心安全公告嚴重等級評定Tab.1 Severity rating assessment in security bulletin ofmicrosoft security response center
根據(jù)統(tǒng)計,2009—2010年微軟發(fā)布的補丁數(shù)如表 2所示.其中等級為嚴重的大約占總數(shù)的 46%,重要的大約占 44%,中等的大約占 10%.后面實驗將以這個比例來布置各個等級的漏洞數(shù)目.
根據(jù) 2個節(jié)點之間不同的漏洞數(shù)以及這些漏洞的等級定義2個節(jié)點之間的距離.有些漏洞2個節(jié)點都不存在,這 2個節(jié)點無法被相應(yīng)蠕蟲感染,計算距離時也將這些漏洞計入總數(shù).根據(jù)表 1,不同等級的漏洞設(shè)置不同的權(quán)值,等級越嚴重的漏洞權(quán)值越大.
表2 2009—2010年Microsoft發(fā)布的補丁數(shù)Tab.2 Numbers of patches published by Microsoft in2009—2010
P2P網(wǎng)絡(luò)中各節(jié)點系統(tǒng)存在的近期漏洞被收集起來,形成一個漏洞列表.“1”表示節(jié)點存在某個漏洞,而“0”表示節(jié)點不能被利用該漏洞的蠕蟲感染.服務(wù)器將這些邏輯數(shù)據(jù)存入一個漏洞矩陣,矩陣的每一行代表一個節(jié)點的漏洞情況,用行向量 Xi表示.元素 Xij=1表示第 i個節(jié)點存在第 j個漏洞.對任何2個行向量進行按位AND操作,然后計算結(jié)果向量中嚴重漏洞和重要漏洞以及中等漏洞中“0”的個數(shù),分別用 c1、c2、c3表示,乘以相應(yīng)的權(quán)值 w1、w2、w3(其中 w1> w2> w3),最后相加所得數(shù)值就是2個節(jié)點間的距離,即
根據(jù)式(1)計算,漏洞個數(shù)相同的情況下,一個節(jié)點與具有嚴重漏洞個數(shù)越少(對應(yīng)行向量0的個數(shù)越多)的節(jié)點間的距離會越大.下面舉例說明漏洞級別對距離的影響.假設(shè)系統(tǒng)中存在4個漏洞(前2個漏洞是嚴重級別,后 2個漏洞是重要級別),且節(jié)點A、B、C的漏洞向量分別是(1 1 1 0)、(1 1 0 0)和(1 0 1 0),節(jié)點A與B、C對應(yīng)的向量分別AND操作之后結(jié)果分別為(1 1 0 0)和(1 0 1 0),則節(jié)點A與B、節(jié)點 A與 C間的距離分別為 DAB=2w2和 DAC=w1+w2,顯然DAC>DAB.因此,節(jié)點 A的最大距離鄰居節(jié)點首先選擇節(jié)點C.這說明區(qū)分漏洞的等級進行距離計算,可以為一個節(jié)點優(yōu)先選擇存在等級比較低的漏洞的節(jié)點作為鄰居,因此使得網(wǎng)絡(luò)中節(jié)點分布更利于對蠕蟲的圍堵.
所有的距離都存儲在服務(wù)器的一個距離矩陣中,服務(wù)器利用距離矩陣為 P2P中的每個節(jié)點選擇鄰居.
節(jié)點之間的距離表示 2個節(jié)點抵抗蠕蟲能力的差異性.2個節(jié)點之間的距離大說明它們之間相同的漏洞比較少.一個蠕蟲利用的特定漏洞在一個節(jié)點上存在,在另一個與它距離大的節(jié)點上存在的可能性會比較?。疄橐粋€節(jié)點選擇距離最大的節(jié)點作為其鄰居時,若該節(jié)點被一個蠕蟲感染,該蠕蟲傳播出去的可能性會比較?。従庸?jié)點的個數(shù)根據(jù)這個節(jié)點的漏洞情況來確定.若節(jié)點的漏洞個數(shù)比較少,為其選擇的鄰居個數(shù)就多一些,反之,則少一些,這樣蠕蟲抵抗能力強的節(jié)點的度就會高一些.因為漏洞個數(shù)多的節(jié)點更容易受到蠕蟲的感染,若該節(jié)點感染了蠕蟲,限制其連接的節(jié)點數(shù)目,蠕蟲傳播出去的可能性就會降低.
每個節(jié)點維護最大距離鄰居列表作為它的鄰居列表.在與其他節(jié)點正常通信時,如搜索數(shù)據(jù)對象或者傳送文件,節(jié)點使用最大距離鄰居列表.而拓撲蠕蟲也正是利用該鄰居列表進行傳播.
2個節(jié)點間的距離小說明它們之間平臺和軟件的相似程度比較高,抵抗同一個蠕蟲的能力相似,而且抵抗能力低.根據(jù)距離的計算方法,一個節(jié)點與有嚴重漏洞數(shù)目比較多的節(jié)點的距離會比它與其他節(jié)點的距離更?。粋€蠕蟲利用的漏洞在一個節(jié)點上存在,在另一個與它距離小的節(jié)點上存在的可能性會比較大,且這個節(jié)點的漏洞數(shù)目比較多,所以警告必須首先被發(fā)送到這些具有最小距離的節(jié)點.
對于未知蠕蟲,選取那些與該節(jié)點有最小距離的節(jié)點作為鄰居,有利于警告的快速傳播.對于已知蠕蟲,直接選擇那些有該蠕蟲利用的漏洞的節(jié)點作為警告?zhèn)鞑サ泥従庸?jié)點.這些鄰居列表如果被惡意代碼利用,會加速惡意代碼的傳播,因此需要將其加密,并且在鄰居節(jié)點收到警告后,最小距離鄰居列表應(yīng)當立即被刪除.當這個節(jié)點想要發(fā)送另一個警告時,重新向服務(wù)器發(fā)送請求,服務(wù)器將為其生成另一個最小距離鄰居列表.最小距離鄰居列表不用于正常信息的傳送,不會長期存放在一個節(jié)點上,只是暫時駐留一段時間.
KaZaA基于FastTrack協(xié)議,是非常流行的無結(jié)構(gòu)雙層 P2P網(wǎng)絡(luò),上層由超節(jié)點組成,下層由普通節(jié)點組成.每天在線用戶超過 300萬節(jié)點,超節(jié)點數(shù)平均在25,000~40,000之間,而超節(jié)點之間的連接是松散的,采用無結(jié)構(gòu)的連接方式.每個超節(jié)點平均與覆蓋網(wǎng)中 40~60個超節(jié)點建立連接,每個超節(jié)點平均連接 60~150個普通節(jié)點[19].上層網(wǎng)絡(luò)是骨干網(wǎng)絡(luò),本文中鄰居選擇機制只部署在上層網(wǎng)絡(luò),為超節(jié)點選擇上層網(wǎng)絡(luò)中的鄰居節(jié)點,下層普通鄰居節(jié)點不變.
在 KaZaA網(wǎng)絡(luò)中,設(shè)置安全服務(wù)器用來存儲漏洞矩陣、距離矩陣、漏洞數(shù)向量和每個超節(jié)點的信息.漏洞矩陣中的每一個元素是 1位的邏輯值,代表一個超節(jié)點是否可以被某個蠕蟲感染.距離矩陣存儲每個超節(jié)點與其他超節(jié)點之間的距離,通過漏洞矩陣能夠計算得出距離矩陣.服務(wù)器計算每個節(jié)點的漏洞數(shù)并放入漏洞數(shù)向量,一個節(jié)點的漏洞數(shù)表明一個節(jié)點系統(tǒng)的安全程度.
每個超節(jié)點安裝一個客戶端漏洞掃描工具,并且可以和安全服務(wù)器進行通信.一個超節(jié)點掃描本地的漏洞,并把是否存在這些漏洞的信息放入一個邏輯向量中,用 Vi表示.然后該節(jié)點將信息上傳給服務(wù)器.服務(wù)器將該邏輯向量存儲到漏洞矩陣中.利用這個矩陣,服務(wù)器計算每個行向量上“1”的總數(shù)作為每個節(jié)點的漏洞數(shù),并存儲在漏洞數(shù)向量中.服務(wù)器對漏洞矩陣中任意2個行向量AND操作之后,根據(jù)式(1)計算節(jié)點之間的距離,將這個距離放入距離矩陣.
一個超節(jié)點初始加入 KaZaA網(wǎng)絡(luò),向安全服務(wù)器請求鄰居列表,安全服務(wù)器根據(jù)該節(jié)點上存在的漏洞數(shù)和漏洞級別,為其選擇不同數(shù)目的鄰居.參考原始KaZaA網(wǎng)絡(luò)中節(jié)點的分布規(guī)律和節(jié)點數(shù)目以及模擬實驗中的數(shù)據(jù),從漏洞數(shù)向量中選擇100個數(shù)值最小的節(jié)點作為安全程度最高的節(jié)點,為它們選擇 60個最大距離鄰居節(jié)點.再選擇 100個漏洞數(shù)最大的節(jié)點,為其選擇 40個鄰居,其他節(jié)點選擇 50個鄰居.保持 KaZaA中超節(jié)點正常的平均連接數(shù),可以在提高安全性的同時維持網(wǎng)絡(luò)的文件查詢性能.如果距離最大的幾個值對應(yīng)的節(jié)點數(shù)多于要求的鄰居節(jié)點個數(shù),服務(wù)器會比較這些節(jié)點之間的漏洞數(shù)量,并選擇漏洞數(shù)目最少的節(jié)點作為最大距離鄰居.
因為 KaZaA網(wǎng)絡(luò)是動態(tài)的,在安全服務(wù)器上新加入節(jié)點的信息應(yīng)當及時添加,離開節(jié)點的信息應(yīng)當及時刪除,漏洞矩陣和距離矩陣隨之更新.服務(wù)器定期向每個超節(jié)點發(fā)送為其選擇的鄰居,更新超節(jié)點的鄰居列表,使得每個節(jié)點可以和可用的節(jié)點通信.
當一個超節(jié)點檢測到一個蠕蟲嘗試感染該節(jié)點,它會產(chǎn)生一個警告.如果該蠕蟲利用的是未知漏洞,該節(jié)點向服務(wù)器請求最小距離的鄰居.如果漏洞是已知的,該節(jié)點將向服務(wù)器請求有該漏洞的節(jié)點作為鄰居.服務(wù)器收到請求后,首先驗證請求的合法性,這是為了避免惡意偽造的請求.如果請求合法,服務(wù)器返回加密過的最小距離節(jié)點列表給請求節(jié)點.然后警告由該節(jié)點發(fā)送到其最小距離鄰居節(jié)點,收到警告的節(jié)點采取一些措施來對抗蠕蟲.對于已知漏洞,該節(jié)點會下載安裝相應(yīng)的補丁.對于未知漏洞,節(jié)點根據(jù)警告中攜帶的關(guān)于蠕蟲的信息來阻止感染.隨后它們向服務(wù)器請求最小距離鄰居,繼續(xù)分發(fā)警告.如果一個節(jié)點以前收到過警告,不會再請求最小距離鄰居.最終警告?zhèn)鞑ネV梗?/p>
通常情況下,最大距離鄰居列表存儲在節(jié)點中.如果蠕蟲試圖攻擊 KaZaA網(wǎng)絡(luò)中的超節(jié)點,它會選擇鄰居列表中的節(jié)點進行下一步感染.其超節(jié)點鄰居大多數(shù)都沒有該蠕蟲利用的漏洞,不能被感染,這使得蠕蟲很難繼續(xù)在上層網(wǎng)絡(luò)中傳播.如果某個超節(jié)點發(fā)現(xiàn)了這個蠕蟲,該節(jié)點產(chǎn)生警告并發(fā)送給其他最小距離的節(jié)點,使這些最有可能具有這個漏洞的節(jié)點對該蠕蟲免疫.這種策略可以抑制 P2P蠕蟲在KaZaA上層網(wǎng)絡(luò)中的傳播,提高主干網(wǎng)絡(luò)的安全性.
為了抵抗蠕蟲形成安全 P2P系統(tǒng),通過為節(jié)點選擇合適的鄰居實現(xiàn)對 P2P蠕蟲的圍堵.在蠕蟲圍堵系統(tǒng)中有 3個關(guān)鍵參數(shù):反應(yīng)時間、圍堵策略和部署方案[20].
圍堵系統(tǒng)的反應(yīng)時間包括必要的惡意行為檢測時間、信息傳播到系統(tǒng)中所有主機需要的時間、主機收到信息后激活圍堵策略所需要的時間.本文系統(tǒng)仍然采用雙鄰居列表,最大距離鄰居列表用來減緩蠕蟲傳播的速度,減少感染的節(jié)點數(shù),不需要檢測時間和激活時間;最小距離鄰居列表用來分發(fā)相應(yīng)的警告給易受感染的節(jié)點,這使得警告比蠕蟲先到達節(jié)點.所以系統(tǒng)的全部反應(yīng)時間比蠕蟲到達所有節(jié)點的時間短.
圍堵策略是指用于隔離蠕蟲和易感染主機的技術(shù).本文策略為易感染某蠕蟲的節(jié)點選擇不容易被該蠕蟲感染的鄰居來隔離該蠕蟲.由于一個節(jié)點和它的最大距離鄰居節(jié)點之間具有異質(zhì)性,若該節(jié)點被蠕蟲感染,其鄰居節(jié)點具有較強的對該蠕蟲的抵抗能力,使得該節(jié)點上的蠕蟲無法通過該節(jié)點的鄰居節(jié)點來傳播,因而蠕蟲無法到達那些有漏洞的主機.這種鄰居選擇機制能夠成功地將蠕蟲與易感染主機隔離.
每個節(jié)點根據(jù)其漏洞情況連接不同數(shù)目的鄰居,使得 P2P網(wǎng)絡(luò)中節(jié)點分布非常合理.每個節(jié)點與和它具有異質(zhì)性的節(jié)點通信,起到抑制蠕蟲傳播的作用;每個易感染節(jié)點向有相同漏洞的鄰居分發(fā)警告.P2P網(wǎng)絡(luò)中的每個節(jié)點都能夠參與蠕蟲的圍堵,這是非常理想的部署方案.
警告分發(fā)沒有采用洪泛技術(shù),因為洪泛時應(yīng)用最大距離鄰居列表,一個節(jié)點與其鄰居節(jié)點存在相同漏洞的可能性比較小,所以警告難以快速到達有漏洞的節(jié)點.最大距離鄰居可能減緩警告的分發(fā)速度,并且洪泛技術(shù)會占用大量的帶寬.因此,采用最小距離鄰居的警告分發(fā)機制,蠕蟲可以被自動控制,而不會明顯加大正常流量.
選擇最大距離的節(jié)點作為鄰居,改變了 P2P覆蓋網(wǎng)絡(luò)的拓撲結(jié)構(gòu),使得 P2P網(wǎng)絡(luò)難以達到拓撲一致性.
根據(jù)文獻[16]中的定義,一個包含 m個節(jié)點的P2P覆蓋網(wǎng)絡(luò)的拓撲結(jié)構(gòu)可以用一個 m×m的方陣T表示,它的元素 tij(在第 i行和第 j列)表示是否存在一個從節(jié)點i到節(jié)點j的直接連接.狀態(tài)矩陣S是一個n×m矩陣(n為漏洞個數(shù)),它的元素 sij(在第 i行和第j列)表示節(jié)點j是否已經(jīng)被蠕蟲i感染.漏洞矩陣 V是一個 n×m矩陣,它的元素 vij(在第 i行和第j列)表示節(jié)點j是否存在第i個漏洞.
式中 Sg+1代表狀態(tài)邏輯矩陣 Sg的下一個狀態(tài)矩陣,即第g+1個狀態(tài),表示經(jīng)過 g+1步后,每個節(jié)點是否被蠕蟲感染.
結(jié)果C=SgT是一個n×m矩陣,P=CV是一個元素與元素相乘的結(jié)果矩陣,即它的元素 pij是 2個邏輯矩陣對應(yīng)元素cij與vij進行邏輯與操作的結(jié)果.
下面是一個簡單的例子,假設(shè) P2P網(wǎng)絡(luò)中有 8個節(jié)點和4個蠕蟲.
漏洞矩陣 V的元素是預(yù)先給定的.T1表示消息沿著最小距離鄰居傳播時的拓撲矩陣.T1′表示消息沿著最大距離鄰居傳播時的拓撲矩陣.S1和 S2分別是沿著最小距離鄰居列表和最大距離鄰居列表傳播的下一個狀態(tài)矩陣.蠕蟲傳播一步后,S1中節(jié)點被 4個蠕蟲感染的總數(shù)是13個,在S2中是1個.說明采用最大距離鄰居列表時蠕蟲傳播非常緩慢.沒有區(qū)分漏洞嚴重級別的情況,相應(yīng)的結(jié)果是12和7[11],這說明區(qū)分漏洞級別以后效果更加明顯.
下一步的狀態(tài)矩陣可以通過式(2)獲得.如果P2P網(wǎng)絡(luò)中節(jié)點數(shù)足夠大,節(jié)點之間的差異性更大,鄰居選擇機制的效果會更加明顯.
T1′的拓撲如圖1所示.圖1中忽略了服務(wù)器,因為服務(wù)器不傳遞正常通信的信息.如果一個節(jié)點本身擁有的漏洞數(shù)不小于3(如圖 1中的節(jié)點3、6、7),那么為其選擇 2個鄰居.為節(jié)點 3選擇 2個鄰居節(jié)點2和4.如果1個節(jié)點擁有的漏洞數(shù)等于2(如圖1中的節(jié)點 1、2),那么為其選擇 3個鄰居.剩余的節(jié)點選擇 5個鄰居(如圖 1中節(jié)點的 4、5、8).節(jié)點 3、6、7容易被蠕蟲感染,其連接的鄰居數(shù)較少,蠕蟲傳播出去的可能性也比較小.
圖1 采用最大距離鄰居列表的P2P覆蓋網(wǎng)拓撲結(jié)構(gòu)Fig.1 P2P overlay network topology based on the largest neighbor list
模擬實驗基于以下假設(shè):
(1) 一個被蠕蟲感染的節(jié)點會將蠕蟲傳播給它在覆蓋網(wǎng)中的所有鄰居;
(2) 鄰居節(jié)點一旦從被感染的節(jié)點收到帶有蠕蟲的信息即被感染,當且僅當鄰居節(jié)點是有漏洞且沒有被感染過;
(3) 一個被蠕蟲感染的節(jié)點如果再次收到一個帶有蠕蟲的包,它的狀態(tài)不變;
(4) 不存在蠕蟲所利用漏洞的節(jié)點將不會被感染.
仿真實驗中采用模擬軟件 peersim1.0.5.設(shè)置初始節(jié)點數(shù)目為10,000,漏洞數(shù)目為50個.每個元素的邏輯值是以0.5的概率隨機初始化為0或者1.
實驗考慮了4種情況:不采用鄰居選擇機制即隨機生成覆蓋網(wǎng)絡(luò)、APTHQN策略、只應(yīng)用最大距離鄰居列表形成覆蓋網(wǎng)絡(luò)、應(yīng)用雙鄰居列表策略形成覆蓋網(wǎng)絡(luò).對于后 2種情況,區(qū)分節(jié)點抵抗蠕蟲能力基礎(chǔ)上的策略與以前的策略進行對比.每種情況只考慮嚴重和重要2個級別的漏洞,因為中等及以下級別的漏洞,基本不具備蠕蟲傳播的條件.
表3顯示了在P2P網(wǎng)絡(luò)中有10,000個節(jié)點、50個漏洞的情況下,蠕蟲利用一個級別為嚴重的漏洞,從一個節(jié)點開始每一步感染的節(jié)點數(shù)目.
情況 1 漏洞矩陣以概率 0.5隨機生成,存在這個漏洞的節(jié)點有5,027個.對于一個用peersim隨機構(gòu)造的 P2P網(wǎng)絡(luò),感染節(jié)點數(shù)達到了 4,923,其中有漏洞的節(jié)點大部分都被感染了.另外有一部分沒有被感染,這是因為 P2P網(wǎng)絡(luò)中節(jié)點平臺的多樣性使得蠕蟲沒有到達某些有漏洞的節(jié)點.
情況 2 采用文獻[10]的方法,P2P蠕蟲感染數(shù)目增長很快,網(wǎng)絡(luò)中接近一半節(jié)點被感染,然后由良性蠕蟲最后將它們?nèi)壳宄耍?/p>
情況 3 采用文獻[11]的方法,不區(qū)分漏洞的級別,為每個節(jié)點選擇 7個鄰居節(jié)點,被感染的節(jié)點數(shù)在采用最大距離鄰居列表和雙鄰居列表時分別為896和360.
表3 利用嚴重漏洞每一步感染的節(jié)點數(shù)目Tab.3 Numbers of infected peers in each step when worm exploiting critical vulnerability
情況 4 根據(jù)節(jié)點漏洞情況為每個節(jié)點選擇不同數(shù)目的鄰居.根據(jù)多組實驗結(jié)果進行如下設(shè)置:如果一個節(jié)點存在 35個及以上的漏洞,其安全程度較低,則為其選擇 5個鄰居;若節(jié)點有 16個以下的漏洞,說明其安全程度較高,則為其選擇 10個鄰居;其他節(jié)點選 7個鄰居.被感染的節(jié)點數(shù)在采用最大距離鄰居列表和雙鄰居列表時分別是 14和 8,相比文獻[11]的方法,相同條件下感染的節(jié)點數(shù)有明顯減少.采用雙鄰居列表機制,區(qū)分漏洞級別的選擇機制比文獻[11]的方法減少了97.78%.
圖2顯示了6種情況下的傳播情況,被感染的節(jié)點總數(shù)隨著步數(shù)的增加而增加.隨機網(wǎng)絡(luò)中被感染的節(jié)點數(shù)目的增長速度很快,說明蠕蟲在某個時刻集中爆發(fā).采用 APTHQN策略最終良性蠕蟲將惡性蠕蟲全部清除掉了,但是沒有改變?nèi)湎x集中爆發(fā)的情況.最大距離鄰居列表和雙鄰居列表方案的曲線上升較慢并且較平緩,區(qū)分漏洞等級之后的曲線最平穩(wěn),感染的節(jié)點總數(shù)最少,能夠有效地阻止蠕蟲在P2P網(wǎng)絡(luò)中爆發(fā).利用網(wǎng)絡(luò)中節(jié)點的位置保護有漏洞的節(jié)點,通過改變拓撲結(jié)構(gòu)增強 P2P網(wǎng)絡(luò)抵抗蠕蟲的能力.
圖2 6種情況下的傳播情況Fig.2 Worm propagation in 6 cases
表4顯示了不同情況下感染節(jié)點的減少率.應(yīng)用區(qū)分漏洞級別的鄰居選擇方法,比文獻[11]中的方法感染節(jié)點的減少率明顯提高.
表4 感染節(jié)點的減少率Tab.4 Reduction rates of infected peers%
改變?nèi)湎x開始傳播的個數(shù)為1、3、10,圖3顯示了3種情況下每步蠕蟲感染節(jié)點的總數(shù),表明在 10,000個節(jié)點的P2P網(wǎng)絡(luò)中,即使蠕蟲從10個感染節(jié)點同時開始傳播,這個蠕蟲的傳播也能被較好地控制.
圖3 改變?nèi)湎x開始傳播的節(jié)點個數(shù)的傳播情況Fig.3 Worm propagation when varing number of beginning peers
圖4 表明改變具有某個漏洞的節(jié)點比例時,本文中策略所產(chǎn)生的效果.在具有這個漏洞的節(jié)點數(shù)達到網(wǎng)絡(luò)中總節(jié)點數(shù)的90%,即網(wǎng)絡(luò)中大部分節(jié)點都具有這個漏洞時,利用該漏洞的蠕蟲感染的節(jié)點比較多,但是也能被很好地控制.由于每個節(jié)點選擇的鄰居節(jié)點數(shù)不同,改變?nèi)湎x初始感染的節(jié)點分別是具有16、25和36個漏洞的節(jié)點,感染的節(jié)點數(shù)目如圖 5所示.顯然,初始感染節(jié)點是漏洞數(shù)最多的節(jié)點時,整個網(wǎng)絡(luò)中被感染的節(jié)點數(shù)最少.這說明在蠕蟲抵抗能力低的節(jié)點上的蠕蟲在 P2P中更難以傳播.區(qū)分漏洞級別的鄰居選擇機制最大程度上利用了網(wǎng)絡(luò)中節(jié)點抵抗蠕蟲的不同能力來抑制蠕蟲的傳播.
圖4 改變某個漏洞的節(jié)點比例的傳播情況Fig.4 Worm propagation when varing vulnerability rate
圖5 改變初始感染節(jié)點的傳播情況Fig.5 Worm propagation when varing initial infected peers
不同安全程度的節(jié)點在 P2P網(wǎng)絡(luò)中作用不同,節(jié)點之間的距離在區(qū)分漏洞級別的基礎(chǔ)上重新定義,根據(jù)節(jié)點抵抗蠕蟲的能力為其選擇鄰居,形成2個鄰居列表進行蠕蟲圍堵,使得 P2P網(wǎng)絡(luò)中節(jié)點的分布更加合理,有效地抑制P2P蠕蟲的傳播.實驗結(jié)果表明,采用雙鄰居列表蠕蟲圍堵策略時,根據(jù)節(jié)點抵抗蠕蟲的能力選擇鄰居節(jié)點,蠕蟲感染的節(jié)點數(shù)比普通P2P網(wǎng)絡(luò)中感染的節(jié)點數(shù)減少了 99.8%,比文獻[11]中方法減少了 97.78%,而采用 Di-jest蠕蟲感染的節(jié)點數(shù)比普通 P2P網(wǎng)絡(luò)中感染的節(jié)點數(shù)最多減少80%[13],采用 APTHQN 策略沒有改變?nèi)湎x集中爆發(fā)的情況.改變初始感染節(jié)點數(shù)和有漏洞節(jié)點在系統(tǒng)中的比例,采用該鄰居選擇機制仍然能夠很好地控制蠕蟲的傳播;在安全程度低的節(jié)點上的蠕蟲在 P2P中更難以傳播.
,
[1] Symantec. W32 Gnuman Worm[EB/OL]. http://www.symantec. com/security_response/writeup. jsp?docid=2001-022710-3046-99,2007-02-13.
[2] Symantec. W32 Benjamin Worm[EB/OL]. http://www.symantec. com/security_response/writeup. jsp?docid=2002-052016-0139-99,2007-02-13.
[3] Symantec. 通過電驢傳播的感染型蠕蟲病毒:W32 Noobert[EB/OL]. http://www. symantec. com/connect/blogs/ w32noobert,2010-01-18.Symantec. An Infecting Worm Which Propagates Via the EMule File-Sharing Network:W32. Noobert[EB/OL].http://www. symantec. com/connect/blogs/ w32noobert,2010-01-18(in Chinese).
[4] Zhou Lidong,Zhang Lintao,McSherry F,et al. A first look at peer-to-peer worms:Threats and devenses [C] //Proceedings of the IPTPS. Ithaca,New York,USA,2005:24-25.
[5] 夏春和,石昀平,李肖堅. 結(jié)構(gòu)化對等網(wǎng)中的 P2P 蠕蟲傳播模型研究[J]. 計算機學(xué)報,2006,29(6):952-959.Xia Chunhe,Shi Yunping,Li Xiaojian. Research on epidemic models of P2P worm in structured peer-to-peer networks[J]. Chinese Journal of Computers,2006,29(6):952-959(in Chinese).
[6] Ramachandran K, Sikdar B. Modeling malware propagation in Gnutella type peer-to-peer networks[C]//The 3rd International Workshop on Hot Topics in Peer-to-Peer Systems(Hot-P2P). Rhodes Island,Greece,2006:447-454.
[7] Xie Liang,Zhu Sencun. A feasibility study on defending against ultra-fast topological worms[C]//Proceedings of the 7th IEEE International Conference on Peer-to-Peer Computing(P2P '07). Galway,Ireland,2007:61-68.
[8] Filipe F,Edgar M,Rodrigo R,et al. Verme:Worm containment in overlay networks [C] // IEEE/IFIP International Conference on Dependable Systems and Networks(DSN). Estoril Lisbon,Portugal,2009:155-164.
[9] Zhu Zhichao,Cao Guohong,Zhu Sencun,et al. A social network based patching scheme for worm containment in cellular networks [C] // IEEE INFOCOM 2009 Proceedings. Rio de Janeiro,Brazil,2009:1476-1484.
[10] 羅衛(wèi)敏,劉井波,范成瑜. 基于良性蠕蟲對抗 P2P 蠕蟲的策略研究[J]. 計算機應(yīng)用研究,2009,26(12):4764-4767.Luo Weimin,Liu Jingbo,F(xiàn)an Chengyu. Research of policy defending against P2P worm based on benign worm[J]. Application Research of Computers,2009,26(12):4764-4767(in Chinese).
[11] Jia Chunfu,Liu Xin,Liu Guoyou,et al. Worm containment based on double-neighbor lists in P2P overlay networks[C]// Proceedings of 2010 IEEE International Conference on Information Theory and Information Security(ICITIS 2010). Beijing,China,2010:558-562.
[12] Yang Sirui,Jin Hai,Li Bo,et al. Worm containment in peer-to-peer networks [C] // Proceedings of the 2009 International Conference on Scalable Computing and Communications,Eighth International Conference on Embedded Computing. Dalian,China,2009:208-313.
[13] McIlwraith D,Paquier M,Kotsovinos E. Di-jest:AutonomicnNeighbour management for worm resilience in P2P systems[C] // Proceedings of IEEE Inernational Symposium on a World of Wireless,Mobile and Multimedia Networks. Newport Beach,USA,2008:1-6.
[14] Weaver N,Paxson V,Staniford S,et al. A taxonomy of computer worms [C] // Proceedings of WORM '03.Washington,USA,2003:11-18.
[15] Moore D,Shannon C,Brown J. Code red:A case study on the spread and victims of an internet worm [C]//ACM/USENIX IMW. Marseille,F(xiàn)rance,2002:273-284.
[16] Fan Xiang,Xiang Yang. Propagation modeling of peerto-peer worms [C]// 24th IEEE International Conference on Advanced Information Networking and Applications(AINA). Perth,Australia,2010:1128-1135.
[17] 中國信息安全評測中心. 中國國家信息安全漏洞庫[EB/OL]. http://www. cnnvd. org. cn/vulnerability,2011.China Information Technology Security Evaluation Center. China National Vulnerability Database of Information Security [EB/OL]. http:// www. cnnvd.org. cn/vulnerability,2011(in Chinese).
[18] Microsoft. Microsoft 安全響應(yīng)中心安全公告嚴重等級評定系統(tǒng) [EB/OL]. http://www. microsoft. com/china/technet/ security/bulletin/rating. mspx,2002-11.Microsoft. Microsoft Security Response Center Security Bulletin Severity Rating Assessment[EB/OL]. http://www. microsoft. com/china/technet/security/bulletin/rating. mspx,2002-11(in Chinese).
[19] Liang Jian,Kumar R,Ross K W. The KaZaA overlay:A measurement study[J]. Computer Networks Journal,2005,50(6):842-858.
[20] Arce I,Levy E. An analysis of the slapper worm[J].IEEE Security and Privacy,2003,1(1):82-87.