王羽 張琨 劉健 陳旋
摘 要: 蟲洞攻擊是一種針對移動(dòng)自組織網(wǎng)絡(luò)路由協(xié)議的攻擊,一般是至少由兩個(gè)節(jié)點(diǎn)進(jìn)行合謀的協(xié)同攻擊。攻擊節(jié)點(diǎn)之間通過蟲洞攻擊能夠大量吸引數(shù)據(jù)包,從而達(dá)到控制網(wǎng)絡(luò)的目的。基于按需距離矢量路由協(xié)議,根據(jù)移動(dòng)自組織網(wǎng)絡(luò)中的蟲洞攻擊原理,采用NS2仿真平臺,通過對按需距離矢量路由協(xié)議的修改,對蟲洞攻擊進(jìn)行了仿真,并且分析了蟲洞攻擊對網(wǎng)絡(luò)性能參數(shù)的影響。根據(jù)蟲洞攻擊特性,設(shè)計(jì)了三種攻擊檢測方法:地理位置定位、鄰居信任檢測以及鄰居監(jiān)聽。將這三種方法在NS2中仿真,驗(yàn)證了其可行性。
關(guān)鍵詞: 移動(dòng)自組織網(wǎng)絡(luò); 按需距離矢量路由協(xié)議; NS2; 蟲洞攻擊
中圖分類號:TP391.9 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2014)02-20-05
0 引言
移動(dòng)Ad Hoc網(wǎng)絡(luò)是沒有中心實(shí)體的自組織網(wǎng)絡(luò),依靠節(jié)點(diǎn)間的相互協(xié)作,在復(fù)雜、移動(dòng)的無線環(huán)境中自行成網(wǎng),借助于多跳轉(zhuǎn)發(fā)技術(shù)來彌補(bǔ)無線設(shè)備的有限傳輸距離,從而拓寬網(wǎng)絡(luò)的覆蓋范圍,為用戶提供各種業(yè)務(wù)服務(wù)。隨著Ad Hoc網(wǎng)絡(luò)的廣泛應(yīng)用,對其安全性的要求也越來越高,這使得無線Ad Hoc網(wǎng)絡(luò)安全問題逐漸成為研究熱點(diǎn)。移動(dòng)Ad Hoc網(wǎng)絡(luò)工作在一個(gè)節(jié)點(diǎn)共同協(xié)作的開放環(huán)境中,同時(shí)該網(wǎng)絡(luò)節(jié)點(diǎn)間共享型鏈路容易被截獲,具有通信缺乏身份認(rèn)證保障、沒有集中監(jiān)控和管理機(jī)制、拓?fù)浣Y(jié)構(gòu)變化頻繁和節(jié)點(diǎn)資源受限等特征。網(wǎng)絡(luò)中因此存在很多安全漏洞,極易受到各種類型的攻擊[1]。其中,蟲洞攻擊是一種針對移動(dòng)Ad Hoc網(wǎng)絡(luò)路由協(xié)議的高級攻擊方式。這種攻擊對網(wǎng)絡(luò)造成了很大的危害,并且極難防御,一般的安全加密手段對其作用不大。絕大部分Ad Hoc路由協(xié)議沒有針對蟲洞攻擊的安全機(jī)制,不能有效防御蟲洞攻擊。
1 移動(dòng)Ad Hoc中的蟲洞攻擊
蟲洞攻擊是由兩個(gè)合謀的惡意節(jié)點(diǎn)發(fā)起,彼此間建立一條私有“隧道”(“隧道”的距離一般遠(yuǎn)遠(yuǎn)大于合法節(jié)點(diǎn)的信號傳輸距離),攻擊者在網(wǎng)絡(luò)中的一個(gè)位置上記錄數(shù)據(jù)包的信息,利用這條私有“隧道”將竊取的信息傳遞到網(wǎng)絡(luò)的另外一個(gè)位置,造成數(shù)據(jù)包的泄露或破壞;同時(shí)因?yàn)樗接小八淼馈蹦軌蛟斐杀葘?shí)際路徑更短的虛假路徑,節(jié)點(diǎn)之間的路由選擇都會(huì)被擾亂,攻擊者就能夠控制網(wǎng)絡(luò)的路由。
蟲洞攻擊大體可以按照其表現(xiàn)形式分為兩類:第一種是攻擊節(jié)點(diǎn)不把自己的節(jié)點(diǎn)信息加入到路由中,即合法節(jié)點(diǎn)并不知道分組轉(zhuǎn)發(fā)過程中有攻擊節(jié)點(diǎn)的參與;第二種是合法節(jié)點(diǎn)能察覺到攻擊節(jié)點(diǎn)轉(zhuǎn)發(fā)分組,攻擊節(jié)點(diǎn)把自己節(jié)點(diǎn)信息加入到路由表中,但是節(jié)點(diǎn)之間的行為是私密的。本文將第一種蟲洞攻擊稱為隱式攻擊,將第二種稱為顯式攻擊,它們對路由的轉(zhuǎn)發(fā)如圖1所示[1]。
1.1 蟲洞攻擊的危害
蟲洞如果只是通過“隧道”對分組進(jìn)行了忠實(shí)的傳輸,對整個(gè)網(wǎng)絡(luò)沒有危害。但是由于蟲洞攻擊節(jié)點(diǎn)以及其“隧道”,吸引了大量的路由報(bào)文,相對于網(wǎng)絡(luò)中的其他節(jié)點(diǎn),攻擊節(jié)點(diǎn)處于關(guān)鍵地位,如果進(jìn)行惡意攻擊則危害很大。
移動(dòng)Ad Hoc網(wǎng)絡(luò)協(xié)議發(fā)現(xiàn)節(jié)點(diǎn)的基礎(chǔ)就是能夠收到來自其他節(jié)點(diǎn)的路由分組。蟲洞攻擊正是利用了這個(gè)特征,接收節(jié)點(diǎn)報(bào)文進(jìn)行攻擊。
1.2 蟲洞攻擊的特殊性
蟲洞攻擊的特殊性在于其極易于發(fā)動(dòng)和難于進(jìn)行檢測。
蟲洞攻擊易于發(fā)動(dòng)。只需要兩個(gè)合謀節(jié)點(diǎn)之間建立“隧道”,監(jiān)聽分組,傳輸分組,并且重放分組即可進(jìn)行蟲洞攻擊。這一切在無線網(wǎng)絡(luò)中極易于實(shí)現(xiàn)。并且在加密認(rèn)證下也能發(fā)起攻擊。
蟲洞攻擊難于檢測。蟲洞攻擊節(jié)點(diǎn)在上層協(xié)議是不可見的,蟲洞節(jié)點(diǎn)的表面的動(dòng)作和正常節(jié)點(diǎn)相似,必須得在路由協(xié)議中進(jìn)行研究才能發(fā)現(xiàn)蟲洞攻擊。
2 蟲洞攻擊的檢測方法
目前有很多用于檢測蟲洞攻擊的方法,本文主要實(shí)現(xiàn)了三種蟲洞攻擊檢測方法的核心協(xié)議。
2.1 基于地理位置定位的檢測方法
卡耐基大學(xué)有使用“數(shù)據(jù)包束縛”的方法檢測出蟲洞攻擊[2],其主要思想在于,在數(shù)據(jù)包中加入信息來控制數(shù)據(jù)包的傳輸范圍,主要有“時(shí)間束縛”與“空間束縛”。本文主要使用的是空間束縛,節(jié)點(diǎn)在發(fā)送報(bào)文的時(shí)候,把自己的位置信息加入到報(bào)文之中,接受節(jié)點(diǎn)在接收到報(bào)文時(shí)通過計(jì)算自己和上一跳節(jié)點(diǎn)的距離來判斷是不是在一跳距離之內(nèi),進(jìn)而檢測出蟲洞攻擊。還有一種類似的方法,是由Jane Zhen和Sampalli Srinivas[3]提出的一種稱之為循環(huán)旅行時(shí)間(Round Trip Time,RTT)的方法來檢測蟲洞。A節(jié)點(diǎn)計(jì)算與B節(jié)點(diǎn)之間的RTT,通過發(fā)送一個(gè)信息給B,要求立刻回復(fù)。A,B間的RTT就是從A發(fā)送請求,到接收到B的回復(fù)所經(jīng)歷的時(shí)間。每個(gè)節(jié)點(diǎn)都計(jì)算與鄰居節(jié)點(diǎn)間的RTT,因?yàn)閮蓚€(gè)假冒鄰居間的RTT必然大于真正鄰居間的RTT。因此通過比較A和A鄰居間的RTT,A節(jié)點(diǎn)可以確定哪個(gè)鄰居是假冒鄰居。這種方法不需要額外的硬件,并容易實(shí)現(xiàn)。
2.2 基于信任模型的檢測方法
根據(jù)前文的描述,蟲洞攻擊能夠控制路由,其在路由表中明顯的表現(xiàn)是,受攻擊節(jié)點(diǎn)在路由表下一跳表項(xiàng)中出現(xiàn)的頻率會(huì)變高。所以本文在路由表項(xiàng)中建立了一個(gè)信任值,其值與下一跳節(jié)點(diǎn)在整個(gè)路由表中下一跳出現(xiàn)的頻率有關(guān),即如果某路由項(xiàng)下一跳地址是很多路由項(xiàng)的下一跳地址,則該下一跳則很大可能是惡意節(jié)點(diǎn),目前本文尚未對具體出現(xiàn)的概率分布進(jìn)行深入分析,而只是在仿真環(huán)節(jié)進(jìn)行了試探性的實(shí)驗(yàn)[4]。
2.3 基于鄰居監(jiān)聽的分析方法
蟲洞攻擊的一個(gè)顯著特點(diǎn)就是某蟲洞節(jié)點(diǎn)在接受RREQ時(shí)并不進(jìn)行轉(zhuǎn)發(fā)而是直接通過“隧道”進(jìn)行傳輸,所以鄰居節(jié)點(diǎn)可以通過網(wǎng)卡的混雜模式來監(jiān)聽可疑的蟲洞節(jié)點(diǎn)。如果懷疑一個(gè)節(jié)點(diǎn)是蟲洞節(jié)點(diǎn),則發(fā)送RREQ報(bào)文,如果懷疑節(jié)點(diǎn)不進(jìn)行廣播而是直接傳給了另一個(gè)節(jié)點(diǎn),則該節(jié)點(diǎn)就是蟲洞節(jié)點(diǎn)[5]。
3 攻擊攻擊方法的仿真設(shè)計(jì)與實(shí)現(xiàn)
3.1 NS2仿真場景設(shè)置
針對設(shè)計(jì)要求,綜合各文獻(xiàn)對蟲洞攻擊與檢測仿真參數(shù)的設(shè)置,本文的場景參數(shù)設(shè)置如表1所示。
3.2.2 在無線物理層建立“隧道”
蟲洞攻擊仿真的一大難點(diǎn)是如何設(shè)置出一條蟲洞節(jié)點(diǎn)之間的合謀“隧道”。本文“隧道”的具體實(shí)現(xiàn)形式是:攻擊節(jié)點(diǎn)捕獲和重放合法節(jié)點(diǎn)控制分組時(shí),它們的傳輸范圍與合法節(jié)點(diǎn)一樣大??;然而當(dāng)攻擊節(jié)點(diǎn)間通過秘密鏈路建立通信時(shí),它們的傳輸范圍遠(yuǎn)遠(yuǎn)大于正常節(jié)點(diǎn)的一跳傳輸范圍。
在NS2中,移動(dòng)節(jié)點(diǎn)依據(jù)無線電波傳播模型計(jì)算傳輸能量損耗,以此確定節(jié)點(diǎn)的傳輸范圍,移動(dòng)節(jié)點(diǎn)在收到數(shù)據(jù)包后計(jì)算其能量損耗,并以此來確定是否接收分組。因此,本文仿真“隧道”的建立即通過修改NS2無線網(wǎng)絡(luò)模塊中物理層算法來實(shí)現(xiàn)。仿真實(shí)現(xiàn)中,攻擊節(jié)點(diǎn)的物理層接收模塊接收到數(shù)據(jù)包后,將檢查有沒有蟲洞附加標(biāo)志位:若有標(biāo)志位,說明該數(shù)據(jù)包來自合謀節(jié)點(diǎn),傳輸范圍門限將調(diào)整至“隧道”長度大??;若沒有標(biāo)志位,說明該數(shù)據(jù)包來自合法節(jié)點(diǎn),節(jié)點(diǎn)接收范圍門限將調(diào)整為正常節(jié)點(diǎn)傳輸范圍值。合謀蟲洞“隧道”效果如圖3所示。
依據(jù)無線電波傳播模型,在實(shí)現(xiàn)節(jié)點(diǎn)物理層動(dòng)態(tài)調(diào)整數(shù)據(jù)包接收門限算法后,攻擊節(jié)點(diǎn)X和Y能夠具備兩種傳輸范圍,并以此實(shí)現(xiàn)“隧道”通信。攻擊節(jié)點(diǎn)結(jié)合攻擊協(xié)議和“隧道”模型即能順利發(fā)動(dòng)蟲洞攻擊:X在合法節(jié)點(diǎn)傳輸范圍內(nèi)監(jiān)聽網(wǎng)絡(luò),捕獲合法節(jié)點(diǎn)A的分組,調(diào)整自己的傳輸范圍至“隧道”長度,將分組秘密傳輸給Y,Y接收到分組后,調(diào)整傳輸范圍至合法節(jié)點(diǎn)1跳距離,再將該分組重放到網(wǎng)絡(luò)中。節(jié)點(diǎn)B和C均能收到該分組,認(rèn)為A是自己的鄰居。
3.3 蟲洞節(jié)點(diǎn)合謀行為設(shè)計(jì)
本文的蟲洞節(jié)點(diǎn)的合謀設(shè)計(jì)主要集中在void AODV::recv(Packet *p, Handler*)這個(gè)函數(shù)中,這個(gè)函數(shù)指的是蟲洞節(jié)點(diǎn)在收到任何包時(shí)進(jìn)行的處理。具體蟲洞節(jié)點(diǎn)接收到報(bào)文之后的工作流程如圖4所示。
3.4 蟲洞攻擊對網(wǎng)絡(luò)性能影響
要對網(wǎng)絡(luò)協(xié)議性能進(jìn)行比較,則需要使用Awk語言對NS2仿真出來的結(jié)果進(jìn)行分析。Awk語言是一種使用編譯器而不需要編譯的語言,能夠方便地對NS2生成的trace.tr文件進(jìn)行分析。
本文使用了兩個(gè)根據(jù)無線trace進(jìn)行分析的awk腳本,分別是分析負(fù)載routeload以及ratio收發(fā)率,見表2。
4 對蟲洞檢測方法的設(shè)計(jì)與仿真實(shí)現(xiàn)
根據(jù)上文所描述的蟲洞攻擊檢測的方法,同樣使用對AODV協(xié)議修改的方法來加入蟲洞檢測模塊。下面詳細(xì)表述對蟲洞檢測的實(shí)現(xiàn)。
4.1 基于地理位置定位的檢測方法的仿真實(shí)現(xiàn)
5 結(jié)束語
隨著移動(dòng)Ad Hoc網(wǎng)絡(luò)的應(yīng)用越來越廣泛,其安全性也越來越受到重視,本文主要研究了在移動(dòng)Ad Hoc網(wǎng)絡(luò)中的一種特殊的攻擊方式——蟲洞攻擊。通過查找文獻(xiàn)了解到移動(dòng)網(wǎng)絡(luò)的特征,初步了解使用NS2對無線網(wǎng)絡(luò)進(jìn)行仿真,在查找文獻(xiàn)和閱讀源代碼的基礎(chǔ)上根據(jù)個(gè)人理解建立了蟲洞攻擊模型,并且依照已有的蟲洞檢測方法進(jìn)行了實(shí)現(xiàn)。
通過實(shí)驗(yàn)結(jié)果分析,本文所描述的仿真手段有效,能夠根據(jù)蟲洞攻擊的概念仿真出蟲洞攻擊,并且實(shí)現(xiàn)了基于地理位置定位、信任模型、鄰居監(jiān)聽等技術(shù)的檢測方法,對于Ad Hoc網(wǎng)絡(luò)蟲洞攻擊防御機(jī)制的研究起到了初步的參考作用。
對于蟲洞攻擊還有很多需要研究的方面,在有多對蟲洞攻擊節(jié)點(diǎn)的情況下,攻擊節(jié)點(diǎn)的合謀會(huì)更加復(fù)雜,其檢測方案還有待拓展和優(yōu)化。
參考文獻(xiàn):
[1] 于宏毅.無線移動(dòng)自組織網(wǎng)[M].人民郵電出版社,2006.
[2] Yih-Chun Hu,Adrian Perrig,David B. Johnson.Packet Leashes: ADefense against Wormhole Attacks in Wireless Networks[A].INFOCOM 2003[C].IEEE Societies,2003:1976-1986
[3] Jane Zhen,Sampalli Srinivas.Preventing Replay Attacks for SecureRouting in Ad Hoc Networks[A].Ad-Hoc, Mobile, and Wireless Networks[C].Springer Berlin Heidelberg,2003:140-150
[4] Lijun Qian, Ning Song, Xiangfang Li. Detecting and locatingwormhole attacks in wireless ad hoc networks through statistical analysis of multi-path[A].Wireless Communications and Networking Conference[C].IEEECommunications Society,2005:2106-2111
[5] 洪亮,洪帆,彭冰,陳晶.一種基于鄰居信任評估的蟲洞防御機(jī)制[J].計(jì)算機(jī)科學(xué),2006.33:130-133