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