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




















