李樹軍,朱立才
(鹽城師范學(xué)院信息科學(xué)與技術(shù)學(xué)院,江蘇鹽城 224002)
在較早的時(shí)候,國外一些研究者對(duì)RIPng路由協(xié)議的安全性做了一些研究[1-3],國內(nèi)也有學(xué)者進(jìn)行過類似研究[4],但相關(guān)研究僅對(duì)RIPng路由協(xié)議可能存在的安全缺陷進(jìn)行了簡單分析,遺憾的是受限于當(dāng)時(shí)的攻擊手段與攻擊技術(shù),要實(shí)現(xiàn)一次成功的攻擊并不容易,因此這些安全問題并沒有得到大家足夠的重視.在Defcon 2008國際網(wǎng)絡(luò)安全技術(shù)大會(huì)上,研究人員利用路由協(xié)議的漏洞進(jìn)行網(wǎng)絡(luò)攻擊的演示再次引起了人們對(duì)路由協(xié)議安全性的關(guān)注[4].本文對(duì)RIPng路由協(xié)議的安全性做了分析并通過實(shí)驗(yàn)進(jìn)行了驗(yàn)證,同時(shí),提出了幾種切實(shí)可行的攻擊模型及相應(yīng)的防御措施.
RIPng又稱為下一代RIP協(xié)議,它是對(duì)原來的IPv4網(wǎng)絡(luò)中RIP-2協(xié)議的擴(kuò)展,大多數(shù)RIP的概念都可以用于RIPng.為了在 IPv6網(wǎng)絡(luò)中應(yīng)用,RIPng對(duì)原有的RIP協(xié)議做了一些修改,比如,使用UDP的521端口發(fā)送和接收路由信息,使用FF02∶∶9作為鏈路本地范圍內(nèi)的RIPng路由器組播地址,并由RFC 2080正式定義.
RIPng路由協(xié)議的首部包括命令字段和版本號(hào)字段.同RIP一樣,命令字段用來區(qū)分報(bào)文要實(shí)現(xiàn)的各種操作.其中命令號(hào)1表示請(qǐng)求部分或全部選路信息,命令號(hào)2表示響應(yīng).版本號(hào)字段包含了協(xié)議的版本號(hào)(目前的版本號(hào)值為1).報(bào)文的剩余部分是一個(gè)RTE(路由表項(xiàng))序列,其中每一個(gè)RTE由目的IPv6前綴、路由標(biāo)記、前綴的有效長度以及到目的網(wǎng)絡(luò)的花銷4部分組成.
與RIPv2不同的是,RIPng的下一跳字段是由一個(gè)單獨(dú)的RTE指定的.在表示下一跳的RTE中,路由標(biāo)記和前綴長度字段必須為0,而度量字段為0xFF.如果數(shù)據(jù)報(bào)中沒有下一跳RTE條目或者下一跳地址為0,則采用數(shù)據(jù)報(bào)的源IPv6地址作為下一跳地址.
RIPng對(duì)報(bào)文的合法性做了比較嚴(yán)格的檢查:對(duì)于非主動(dòng)請(qǐng)求的響應(yīng)報(bào)文,報(bào)文的源端口和目的端口必須為521;源IP必須為鏈路本地地址且不能為路由器自身的地址;報(bào)文的跳數(shù)必須為最大值255,保證了報(bào)文是相鄰路由器發(fā)送來的(因?yàn)橹虚g路由器轉(zhuǎn)發(fā)報(bào)文的時(shí)候會(huì)對(duì)跳數(shù)做減1處理);下一跳RTE條目中,下一跳地址必須為鏈路本地地址.
此外,RIPng沒有單獨(dú)設(shè)計(jì)安全驗(yàn)證機(jī)制,其安全性由IPv6的擴(kuò)展AH和ESP頭提供保障[5,6].從目前使用的情況來看,相對(duì)RIPv1和RIPv2而言,RIPng的安全性并沒有得到明顯提高.
雖然RIPng相應(yīng)的標(biāo)準(zhǔn)早在1997年便被制訂出來,但是對(duì)于使用者來說卻是比較新的概念,其安全方面的缺陷主要包括:
(1)由于各設(shè)備生產(chǎn)廠商在協(xié)議的實(shí)現(xiàn)上的限制和密鑰的管理與分發(fā)方面的問題,IPv6的安全選項(xiàng)并不能保證被有效啟用 (至少在目前的實(shí)驗(yàn)用與試商用IPv6環(huán)境里,IPv6的安全選項(xiàng)沒有被廣泛使用),而RIPng本身缺乏驗(yàn)證機(jī)制,這對(duì)使用UDP方式來進(jìn)行信息交換的RIPng將是致命的威脅.
(2)網(wǎng)絡(luò)攻擊者可以假冒路由器發(fā)送路由請(qǐng)求報(bào)文給目標(biāo)路由器,獲得目標(biāo)路由器的路由表,從而完成對(duì)目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)的探測.
(3)網(wǎng)絡(luò)攻擊者可以發(fā)送欺騙數(shù)據(jù)包到其相鄰的路由器,修改路由表或者插入新的路由條目,進(jìn)行路由欺騙攻擊.
(4)在協(xié)議各功能模塊的實(shí)現(xiàn)上,各生產(chǎn)廠商采用的算法和對(duì)RIPng報(bào)文的處理上存在一些缺陷,附帶了不少安全方面的問題.
綜上所述,RIPng路由協(xié)議在設(shè)計(jì)、實(shí)現(xiàn)和使用過程中存在諸多不足,網(wǎng)絡(luò)攻擊者利用這些不足可以很容易地進(jìn)行網(wǎng)絡(luò)攻擊.其中較易實(shí)施且危害極大的莫過于通過修改路由器的路由表來控制數(shù)據(jù)包的流向,從而進(jìn)一步進(jìn)行拒絕服務(wù)、數(shù)據(jù)監(jiān)聽、網(wǎng)絡(luò)欺騙等攻擊行為.
Scapy是一個(gè)功能強(qiáng)大的交互式數(shù)據(jù)包處理程序,支持常見網(wǎng)絡(luò)協(xié)議,利用它可以很方便地構(gòu)造各種數(shù)據(jù)包用于安全測試.
RIPng路由協(xié)議安全缺陷驗(yàn)證用網(wǎng)絡(luò)拓?fù)浜驮O(shè)備各接口IPv6地址如圖1所示.
圖1 RIPng安全測試網(wǎng)絡(luò)拓?fù)鋱D
圖1中,PC1與PC2的系統(tǒng)平臺(tái)為Windows XP Sp3中文專業(yè)版,R1與R2為H3C SW5510路由交換機(jī),VRP(通用路由平臺(tái))版本為5.20.
在驗(yàn)證中,各設(shè)備按照拓?fù)鋱D進(jìn)行連接并做IPv6地址與RIPng相關(guān)配置后,完成實(shí)驗(yàn)環(huán)境的構(gòu)建.配置完成后R1的路由表如圖2所示(以fe80開頭的為設(shè)備接口鏈路本地地址,由設(shè)備自動(dòng)生成,不需要配置).
測試1 在PC1上發(fā)送欺騙數(shù)據(jù)包給R1,在R1上添加一條新的路由條目2001:1:1:1::/64.注意數(shù)據(jù)包的IPv6協(xié)議頭的跳數(shù)必須設(shè)置成255,數(shù)據(jù)包的目的地址為ff02::9組播地址,源地址為鏈路本地地址.如果要修改已經(jīng)存在的路由條目,設(shè)置的metric值需要比原來的小.新添加到R1的路由條目會(huì)被擴(kuò)散到R2,從而影響R1所在的整個(gè)AS(自治系統(tǒng)).R1被修改后的路由表如圖3所示.
圖2 R1真實(shí)的IPv6路由表
圖3 R1被修改后的IPv6路由表
測試用Scapy命令如下:
測試2 發(fā)送路由請(qǐng)求包,得到目標(biāo)路由器的路由表,從而得到網(wǎng)絡(luò)拓?fù)湎嚓P(guān)信息.
測試用Scapy代碼如下:
在測試1中,由于路由器對(duì)接收到的數(shù)據(jù)包的跳數(shù)進(jìn)行嚴(yán)格檢查,所以不可能直接修改遠(yuǎn)程路由器的路由表.網(wǎng)絡(luò)攻擊者在實(shí)際攻擊時(shí),可以在目標(biāo)路由器所在的網(wǎng)絡(luò)尋找弱點(diǎn)主機(jī)作為跳板進(jìn)行攻擊.在測試2中,目標(biāo)路由器返回的路由表信息在變量ans里,要得到直觀的結(jié)果還需進(jìn)一步處理.此外,我們?cè)跍y試時(shí)還發(fā)現(xiàn),發(fā)送大量的虛假路由信息給目標(biāo)路由器會(huì)使其路由表膨脹,會(huì)消耗掉其有限的CPU和內(nèi)存資源.
以上測試說明,RIPng路由協(xié)議的確存在安全方面的缺陷,其危害較大.而比較容易實(shí)施的莫過于發(fā)送偽造的數(shù)據(jù)包給目標(biāo)路由器,通過修改其路由表來控制數(shù)據(jù)的流向.網(wǎng)絡(luò)攻擊者有可能利用這種缺陷進(jìn)行網(wǎng)絡(luò)攻擊.
不同于其他攻擊方式,路由協(xié)議攻擊需要攻擊者具有較高的專業(yè)技能,需要多種攻擊手段相結(jié)合.針對(duì)前述的RIPng路由協(xié)議安全缺陷的實(shí)驗(yàn)和分析,我們可以構(gòu)建如下兩類攻擊模型.
拒絕服務(wù)類攻擊模型的拓?fù)浣Y(jié)構(gòu)如圖4所示.
圖4 拒絕服務(wù)類攻擊模型拓?fù)浣Y(jié)構(gòu)示意圖
在這種攻擊模型中,可以有如下4種攻擊方式:
(1)構(gòu)造下一跳地址無效的路由表項(xiàng).
(2)構(gòu)造路由環(huán)路.如在圖4的網(wǎng)絡(luò)環(huán)境中,假設(shè)從PCA到網(wǎng)絡(luò)X的數(shù)據(jù)需要經(jīng)過R6→R1→R2→R3這一路徑,網(wǎng)絡(luò)攻擊者可以修改R1中到網(wǎng)絡(luò)X的路由表項(xiàng)的下一跳地址為R6的地址,導(dǎo)致數(shù)據(jù)包在R1和R6之間往復(fù)循環(huán),直到TT L值為0.
(3)流量牽引,堵塞鏈路.在如圖4的網(wǎng)絡(luò)環(huán)境里,有可能把R1→R2→R3和R1→R6→R7的流量定向?yàn)镽1→R5→R4→R2→R3和R1→R5→R6→R7,從而干擾數(shù)據(jù)正常流向,R1→R5的有限帶寬有可能被全部消耗掉.
(4)發(fā)送大量的欺騙包給網(wǎng)絡(luò)里的路由器,讓路由器的路由表無限膨脹,消耗路由器的CPU和內(nèi)存資源.在測試中,我們也發(fā)現(xiàn)不少型號(hào)的路由器在處理超過每秒6 000多個(gè)路由響應(yīng)數(shù)據(jù)包的時(shí)候會(huì)宕機(jī).
上述4種攻擊方式中,方式(3)需要對(duì)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行詳細(xì)的探測,實(shí)施攻擊的難度相對(duì)大一些,其余3種攻擊方式很容易實(shí)施.和傳統(tǒng)的拒絕服務(wù)類攻擊手段相比,上述攻擊方式具有代價(jià)小,效果明顯的特點(diǎn).
利用類攻擊模型的拓?fù)浣Y(jié)構(gòu)如圖5所示.
圖5 利用類攻擊模型拓?fù)浣Y(jié)構(gòu)示意圖
在這種攻擊模型中,結(jié)合其他技術(shù)手段,可以有如下2種攻擊方式.
(1)欺騙攻擊.在圖5的網(wǎng)絡(luò)環(huán)境里,網(wǎng)絡(luò)攻擊者B可以發(fā)送欺騙包給R2,讓R2把攻擊者所在子網(wǎng)里到DNS SERVER的流量傳遞給它,這樣網(wǎng)絡(luò)攻擊者就可以假冒DNS SERVER回復(fù)普通用戶的DNS查詢,達(dá)到欺騙的目的.在此基礎(chǔ)上,網(wǎng)絡(luò)攻擊者可以進(jìn)行網(wǎng)絡(luò)釣魚、網(wǎng)頁掛載木馬病毒等流行攻擊方式.此外,R2還會(huì)把虛假的路由傳遞給R4,進(jìn)而影響到其他網(wǎng)絡(luò).更簡單的是,網(wǎng)絡(luò)攻擊者B可以直接在網(wǎng)卡上添加需要假冒的主機(jī)IP,然后提供虛假的服務(wù)與訪問者進(jìn)行交互,這樣的攻擊更直接.
(2)嗅探與中間人攻擊.這種攻擊需要2臺(tái)攻擊主機(jī)進(jìn)行配合.假設(shè)PCA對(duì)ServerA進(jìn)行訪問,網(wǎng)絡(luò)攻擊者欺騙R1,讓R1把PCA發(fā)送給ServerA的數(shù)據(jù)包轉(zhuǎn)發(fā)給攻擊者B,攻擊者B收到數(shù)據(jù)包后對(duì)數(shù)據(jù)二次打包,設(shè)置新的數(shù)據(jù)包的目的IP為攻擊者A,攻擊者A收到數(shù)據(jù)包后還原數(shù)據(jù)包并把數(shù)據(jù)包轉(zhuǎn)發(fā)給ServerA,如果僅僅需要嗅探上行數(shù)據(jù),則攻擊者A轉(zhuǎn)發(fā)給ServerA的數(shù)據(jù)包的源IP為PCA;如果要對(duì)上行和下行的數(shù)據(jù)都進(jìn)行嗅探或者進(jìn)行中間人攻擊,則需要比較復(fù)雜的處理.首先,攻擊者A需要維護(hù)一個(gè)類似NAT的轉(zhuǎn)換表,設(shè)置轉(zhuǎn)發(fā)給ServerA的數(shù)據(jù)包源IP為自己,ServerA收到數(shù)據(jù)包后把數(shù)據(jù)包回復(fù)給攻擊者A,攻擊者A最后再把數(shù)據(jù)轉(zhuǎn)發(fā)給真實(shí)的訪問者PCA.
上述2種攻擊方式的危害顯然是很大的,特別是第一種攻擊方式,很容易實(shí)施,滿足這種條件的網(wǎng)絡(luò)環(huán)境也很多,第二種方式難度大一些,而且需要較好的軟件實(shí)現(xiàn),但這種攻擊更難被發(fā)現(xiàn).
針對(duì)RIPng路由協(xié)議的安全缺陷,我們提出如下防御網(wǎng)絡(luò)攻擊的措施:
(1)設(shè)置路由策略,禁止接收從用戶端網(wǎng)絡(luò)或者非信任網(wǎng)絡(luò)流入的路由響應(yīng)報(bào)文.
(2)邊界路由的入口處配置適當(dāng)?shù)腁CL,禁止源地址為本地子網(wǎng)IP地址的數(shù)據(jù)包流入網(wǎng)絡(luò),防止來自遠(yuǎn)程網(wǎng)絡(luò)的欺騙數(shù)據(jù)包.
(3)在邊界網(wǎng)絡(luò)的出口配置適當(dāng)?shù)腁CL,禁止源地址為非本地IP地址的數(shù)據(jù)包流出網(wǎng)絡(luò),防止網(wǎng)絡(luò)中的主機(jī)被黑客當(dāng)作跳板來攻擊別的網(wǎng)絡(luò).
(4)在IPv6環(huán)境下,應(yīng)對(duì)本地的IPv6地址進(jìn)行匯聚,配置類似RFC2827建議的網(wǎng)絡(luò)過濾器來減少IPv6的地址假冒.
(5)在支持的設(shè)備上配置路由容量限制.路由信息通常是存儲(chǔ)在路由器的內(nèi)存中,當(dāng)路由表規(guī)模不斷增大時(shí),路由器的內(nèi)存使用量也將不斷增加,但路由器的總內(nèi)存大小并不會(huì)改變(除非進(jìn)行硬件升級(jí)),當(dāng)設(shè)備內(nèi)存被耗盡時(shí),設(shè)備將不能正常工作.通過配置合適的路由容量限制,可以防止設(shè)備因收到網(wǎng)絡(luò)攻擊者發(fā)送的海量偽造路由信息而失去其工作能力.
可以看出,網(wǎng)絡(luò)攻擊者利用RIPng路由協(xié)議的安全缺陷進(jìn)行網(wǎng)絡(luò)攻擊是切實(shí)可行的,其危害也是巨大的.此外,隨著對(duì)RIPng的進(jìn)一步研究,其更多的安全問題將會(huì)暴露出來.可以預(yù)見,隨著對(duì)這些攻擊方式的完美實(shí)現(xiàn),它將像ARP欺騙攻擊一樣流行開來,并對(duì)網(wǎng)絡(luò)安全帶來嚴(yán)重的威脅.因此,作為網(wǎng)絡(luò)管理者,在使用RIPng的過程中應(yīng)該注意采用一些輔助手段來加強(qiáng)其安全性;作為網(wǎng)絡(luò)設(shè)備生產(chǎn)廠商,在實(shí)現(xiàn)協(xié)議的時(shí)候除了遵循標(biāo)準(zhǔn)所規(guī)定的安全規(guī)則外,還應(yīng)該考慮各種可能的細(xì)節(jié)問題,從而提高其產(chǎn)品的安全性.
[1]Pei D,Massey D,Zhang L.Detection of Invalid Routing Announcements in Rip Protocol[C]//IEEE Globecom2003.San Francisco:IEEE Press,2003.
[2]Wilson C.Protecting Network Infrastructure at the Protocol Level [EB/OL].[2000-12-15].http://www.cs.ucsb.edu/~seclab/projects/routing/references/wilson00protecting.doc.
[3]Humble.Spoofing RIP[EB/OL].[2004-01-05].http:// packetstormsecurity.org/groups/horizon/ripar.txt.
[4]史創(chuàng)明.RIP路由協(xié)議及其漏洞攻擊防范[J].微計(jì)算機(jī)信息,2006,23(6):7-9.
[5]Malkin G S.RIPng for IPv6[EB/OL].[1997-01-01].http://www.ietf.org/rfc/rfc2080.txt.
[6]Malkin G.RIPng Protocol Applicability Statement[EB/OL]. [1997-01-05].http://www.ietf.org/rfc/rfc2081.txt.