?

家用路由器IPv6鄰居表資源耗盡攻擊與防護

2022-10-13 13:22肖舉諸葛建偉
網絡安全技術與應用 2022年8期
關鍵詞:報文數據包攻擊者

◆肖舉 諸葛建偉

(1.數字工程與先進計算國家重點實驗室 河南 450012;2.清華大學網絡科學與網絡空間研究院 北京 100084)

IPv6憑借“一粒沙子一個地址”及內嵌安全能力等技術優勢,天生匹配萬物互聯[1]。與IPv4相比,IPv6在安全性方面進行了預先設計和充分考慮,但仍存在一些難以解決的安全風險。首先,128位的地址規模及臨時地址機制,使得基于IPv6的攻擊在追蹤溯源、信息處理等存在著處理時效上的困難。其次,由于IPv6的報文結構與IPv4不一致,現有網絡安全工具不能兼容IPv6,使得IPv6具有攻擊媒介檢測上的難點。再次,IPv6/IPv4過渡機制及IPv6協議新特性使得IPv6具有新部署協議風險規避上的難題。文獻[2]分析了IPv6部署過程和使用過程中存在的信息泄露、拒絕服務、網絡欺騙等安全威脅。文獻[3]和文獻[4]靈活運用了THC-IPv6[5]攻擊套件對IPv6協議進行了詳細的測試研究,實驗證實了當前主流操作系統如Windows、Linux中大量關于IPv6協議本身存在的重定向、泛洪等漏洞。文獻[6]和文獻[7]提出了雙棧機制下將會無形增加安全暴露面,漏洞攻擊的方式和載荷將會更加多樣。本文通過對多款智能家庭網關、家用Wi-Fi路由器進行實驗測試,發現當前設備普遍存在IPv6鄰居表資源耗盡安全問題,并基于Scapy編寫了相關腳本,探討了有關攻擊的報文類型,并給出了該類攻擊的有效防范措施。

1 IPv6鄰居表資源耗盡

IPv6鄰居表在二三層流量轉發中扮演重要角色。然而,通過發送惡意流量操作能夠使得被攻擊子網絡由器每秒僅能解析有限數量的IPv6和MAC地址,導致鄰居表表項處理功能處于超時狀態,從而無法為其他正常報文提供服務。該拒絕服務有兩個引發路徑,分為本地IPv6鄰居表資源耗盡和遠程IPv6鄰表資源耗盡。

1.1 本地IPv6鄰居表資源耗盡

一個IPv6節點的鄰居表包含與之通信過的IPv6節點,并顯示其IPv6地址、MAC地址、主機名(如果已知)及其接口。與IPv4的ARP表類似,在本地鏈路上傳送數據時,也是根據MAC地址尋找目的主機。

如圖1所示,在同一IPv6子網中,攻擊節點如果使用該子網前綴下的任一地址(可能不存在)并不斷向這一地址發送IPv6數據包,能夠導致拒絕服務攻擊。攻擊原理如圖2,攻擊者發送的IPv6數據包的目的地址及其MAC地址并不在攻擊者和子網IPv6路由器的鄰居表中,該子網IPv6路由器有義務通過發送鄰居請求包來解析這個目的地址。當攻擊者發送大量源地址隨機的IPv6數據包時,子網IPv6路由器忙于處理攻擊者所發報文,導致鄰居表表項處理功能處于超時狀態,使得試圖加入子網的合法IPv6節點將無法從IPv6路由器獲得鄰居發現服務,從而阻止該合法節點獲得IPv6網絡連接。

圖1 本地IPv6鄰居表資源耗盡攻擊

1.2 遠程IPv6鄰居表資源耗盡

與本地IPv6鄰居表資源耗盡異曲同工,如圖3所示,當遠程攻擊者向受害IPv6子網下任一地址(可能不存在)不斷發送IPv6數據包時,能夠導致拒絕服務攻擊。

圖3 遠程IPv6鄰居表資源耗盡攻擊

數據包要想到達該IPv6地址,需要IPv6路由器的指引與轉發。如圖4所示,當攻擊者發送攻擊數據包后,由于IPv6目的地址及其MAC地址同樣不在攻擊者和各IPv6路由器的鄰居表中,因此,需要首先找到目的地址所在IPv6子網絡由器,進行數據包重定向,然后由該IPv6子網絡由器發送鄰居請求包來解析這個目的地址。當攻擊者發送大量源地址隨機的IPv6數據包時,子網IPv6路由器忙于處理攻擊者所發報文,導致鄰居表表項處理功能處于超時狀態,使得試圖加入子網的合法IPv6節點將無法從IPv6路由器獲得鄰居發現服務,從而阻止該合法節點獲得IPv6網絡連接。

圖4 遠程IPv6鄰居表資源耗盡原理

1.3 攻擊報文的選擇

(1)本地鏈路攻擊

ICMPv6報文是攻擊報文首選,因其種類多,同時也是保證IPv6協議運行的重要基礎協議。如圖5所示,ICMPv6報頭中的Type字段表示該ICMPv6報文具體的消息類型,0至127表示差錯報文,128至255表示消息報文;Code字段則是基于Type字段區分一個粒度更小的ICMPv6報文。當前正在使用的ICMPv6報文類型共有38個,其中使用最多的是類型1至4的錯誤消息,128、129的請求與應答消息,以及133至137的鄰居發現協議消息。

圖5 ICMPv6攻擊報文

(2)遠程子網攻擊

ICMPv6報文大多是基于本地鏈路的,除了類型為128、129的請求與應答消息(IPv6的ping),其他都不能穿透路由,只能在子網內部傳輸。因此,進行遠程IPv6子網攻擊的數據包必須是使用IPv6全球單播地址的上層數據包,基于TCP或者UDP等,只要能夠進行路由轉發即可,該報文也同樣適用本地鏈路攻擊。

1.4 與IPv4的ARP泛洪的區別

與IPv4的ARP泛洪類似,IPv6系統同樣維持著一個IPv6地址和MAC地址匹配的鄰居緩存表。在本文攻擊中,當IPv6泛洪還沒填充完全IPv6表時,就因為IPv6鄰居表表項處理超時而導致了拒絕服務的攻擊效果。

當然,理論上,當一個IPv6節點與IPv6路由器建立連接開始通信時,路由器將會添加該IPv6節點至IPv6鄰居表,通過發送帶有/64前綴范圍內的隨機IPv6地址的相關報文到路由器,一方面,路由器將一直處理IPv6鄰居表條目,從而導致路由器流量擁擠,并不能承受住264個條目的處理壓力;另一方面,IPv6鄰居表也面臨與IPv4一樣的ARP表項被占滿的情況。

然而,IPv6的攻擊報文與IPv4的相比在數量與類型上有明顯優勢。一是IPv4主要包括ARP、RARP的請求與應答報文,遠遠少于IPv6的攻擊報文類型。二是IPv6子網劃分往往是/64,數量級遠遠高于IPv4的/24子網。在數量與類型的雙重疊加下,防火墻等防御手段在計算能力上往往無法防范此類惡意流量。IPv6鄰居表資源耗盡與IPv4 ARP泛洪的異同如表1所示:

表1 與IPv4 ARP泛洪的區別

2 攻擊腳本實現

在THC-IPv6攻擊套件已有該類攻擊相關腳本,但是該腳本基于Linux編寫,讀取Linux的MAC緩存,不能良好測試其他系統的IPv6協議實現。本文的漏洞攻擊利用腳本通過Scapy[8]來實現。Scapy是一個Python程序庫,允許用戶專注于構造指定字段的數據包,其余部分由程序庫自動完成。

在本地鏈路攻擊中,選擇發送ICMPv6協議類型為4的意味著

參數問題的攻擊數據包,關鍵代碼如下:

在遠程子網攻擊中,選擇發送基于TCP連接的IPv6攻擊數據包,關鍵代碼如下:

3 實驗

3.1 環境搭建

在實際環境中,實施IPv6鄰居表資源耗盡攻擊的可能是非法接入的主機、被濫用的應用程序或遠程入侵的黑客等,甚至拿一根網線直接連接網絡即可進行此類操作。本文構建一個模擬實驗環境進行對家用路由器設備進行安全測試,如圖6所示,使用家庭智能網關為上層ISP路由器,其LAN口作為Internet輸入接入家用路由器的WAN口,形成一個二層路由的實驗網絡。其中,ISP路由器和家用路由器能夠分發全球IPv6單播地址,相互之間能夠正常通信。

圖6 攻擊實驗網絡分布

3.2 本地鏈路攻擊

實行本地鏈路攻擊時,本地攻擊者位于家用路由器的網絡中,然后任選該IPv6子網中的某一地址作為目的地址,利用Scapy的循環發送函數sendp()或者sendfast()進行惡意數據包發送。此時,嘗試ping該路由器時,發現該路由器已經處于UNREACHABLE狀態。

3.3 遠程子網攻擊

實行遠程子網攻擊時,遠程攻擊者位于ISP路由器網絡中,與家用路由器處于平行狀態,然后任選家用路由器子網中的某一地址作為目的地址,利用Scapy的循環發送函數sendp()或者sendfast()進行惡意數據包發送。此時,嘗試ping該路由器時,發現該路由器也已經處于UNREACHABLE狀態。

3.4 總結

在搭建的實驗環境中,本文的實驗測試對象包括基于Linux的ASUS、D-Link、TP-Link、TOTOLINK等廠商的多款家用路由器,以及基于eCos的Tenda AC8路由器,測試對象均存在被IPv6鄰居表資源耗盡攻擊拒絕服務的漏洞,相關設備漏洞已申報CNVD國家信息安全漏洞共享平臺,如表2所示。

表2 家用路由器IPv6鄰居表資源耗盡漏洞編號

4 防范措施

與IPv6協議的路由欺騙、鄰居欺騙等拒絕服務攻擊不同,如采用源地址驗證協議SAVI、安全鄰居發現SEND等安全措施,其本身的計算量已經可觀,而在需要檢測大量的攻擊報文時將直接導致拒絕服務。如果改變子網劃分由/64調整為/120,將會違背無狀態地址自動配置SLAAC的標準。如果對IPv6報文進行數量統計,在一定時間內數量超出了預定閾值,超出部分路由器將不作任何處理,既能滿足鄰居表動態學習需求,也能避免源地址驗證帶來的資源損耗。因此,限制IPv6報文速率將是一個較好的防御措施選擇。

5 結束語

本文基于Scapy編寫了IPv6鄰居表資源耗盡導致拒絕服務攻擊的腳本,對多款家用路由器進行了測試,發現均存在本地及遠程IPv6鄰居表資源耗盡的安全問題。而該類問題由于惡意報文類型更加復雜多元,IPv6地址空間也更龐大,容易被忽視,需引起家用路由器廠商的重視以進行有效防范。

猜你喜歡
報文數據包攻擊者
基于J1939 協議多包報文的時序研究及應用
以太網QoS技術研究及實踐
基于貝葉斯博弈的防御資源調配模型研究
避免饑餓的CAN 總線高優先級反轉算法
基于報文類型的限速值動態調整
C#串口高效可靠的接收方案設計
正面迎接批判
正面迎接批判
網絡數據包的抓取與識別
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合