IPv6協議安全分析和測試的研究
前面我們對IPv6協議的相關安全問題簡單的介紹了一下,現在我們針對另據發現協議的脆弱性進行一個分析。首先我們需要來了解一下這個協議的工作原理,以便我們來了解測試中的內容。
1.鄰居發現協議脆弱性分析
在IPv6協議中,用鄰居發現協議(NeighborDiscovery)代替了IPv4下的ARP協議來獲取局域網內部機器的Mac地址,這是局域網內主機之間通信的前提條件。鄰居發現協議主要包括兩種格式的ICMP6報文:鄰居請求NS(NeighborSolicitation)和鄰居宣告NA(NeighborAdvertisement)。
鄰居發現協議的工作原理
當局域網中的兩臺主機A與B之間通信前,A必須首先獲取B的MAC地址,主要步驟如下:
(1)A以廣播的方式向FE02::1發送一個ICMP IPv6協議的NS消息,詢問B的MAC地址
(2)局域網中每個節點都能接收到該NS請求,當一個節點接收到該NS請求后,將目標MAC地址與自身MAC地址進行比較,如果不一致,則不應答;反之,如果所請求的MAC地址與自身MAC地址相等,則回應一個鄰居宣告消息NA,表明自己就是所要請求的節點。本例中,在正常情況下,只有B回應NS請求,應答包中包含B的MAC地址。
鄰居宣告報文的選項
需要特別注意的是IPv6協議中NA有3個特殊的標志位,R表示是否是路由,S表示是否是target本機做出的宣告,O表示是否覆蓋原有的緩存。設置這幾個標志位的主要目的原本是為了提高提高局域網節點工作的效率。
鄰居發現協議安全隱患分析
通過以上的分析我們可以看出,IPv6下的鄰居發現協議于IPv4下的ARP協議相比,在安全方面,并沒有改進。主要體現在以下幾個方面:
第一,對于NS的ICMP6報文,局域網中的任意節點,只要在局域網中監聽到,就能回復,缺乏認證過程。所以IPv4下的ARP欺騙,在IPv6下可以利用NA欺騙代替,其原理是一樣的,此處不再重復。
第二,相對于IPv4下的ARP應答包,NA作為IPv6下的應答包多了上述所說的3個標志位,不可否認,在所有局域網內節點都正常工作的情況下,這3個標志位無疑可以提高局域網節點工作的效率,但是一旦存在某個惡意節點,這3個標志位,無疑將成為惡意節點的有力工具。
首先通過R標志位,惡意節點可以偽裝成路由,通過S標志位,惡意節點可以偽裝成本機,對惡意攻擊最有利的要數O標志位,惡意節點可以向被攻擊者路由表中植入虛假路由信息。因為在IPv4下,鄰居緩存表是每隔一定的時間刷新一次,惡意節點要覆蓋正確地緩存可能要發送大量的虛假應答,容易被檢測出,而在IPv6下利用O標志位覆蓋正確的緩存則只需要發送少量的虛假NA包,非常難檢測。
2.ICMP IPv6協議重復地址檢測協議脆弱性分析
IPv6網絡中的節點地址配置可以采用動態分配或靜態設置兩種方式,對于目前廣泛采用的動態IPv6地址配置,需要經過以下幾個步驟:
(1)從路由器或默認網關處獲取IPv6地址前綴,如Prefix。
(2)節點生成一個后綴地址Suffix
(3)將前綴地址與后綴地址拼接成完整的IPv6地址:Prefix-Suffix
(4)執行重復地址檢測(DAD:DuplicateAddressDetection),判斷Prefix-Suffix是否已經被網絡中其它節點占用:
a)A以廣播的方式向FE02::1發送一個ICMPIPv6NS消息,詢問Prefix-Suffix是否已經被網絡中其它節點占用。
b)局域網中每個節點都能接收到該NS請求,當一個節點接收到該NS請求后,將目標地址與自身地址進行比較,如果不一致,則不應答;反之,則回應一個鄰居宣告消息NA,表明自己已經使用了該IP地址。
(5)如果沒有收到回應,則將Prefix-Suffix配置本機地址;反之,轉第(1)步,重復執行上述步驟。
ICMP IPv6協議重復地址檢測協議安全隱患分析
在執行重復地址檢測的過程中,由于缺乏認證過程,局域網中任何節點都可以回應相應請求。這樣,攻擊者可以針對某個特定的主機(或局域網內所有主機)所發出重復地址檢測消息進行回應,使得相應節點無法配置IPv6地址,從而無法連網。