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