IPv6邻居发现协议脆弱性分析


IPv6邻居发现协议Neighbor Discovery)代替了IPv4下的ARP协议来获取局域网内部机器的Mac地址,这是局域网内主机之间通信的前提条件。邻居发现协议主要包括两种格式的ICMP6报文:邻居请求NSNeighbor Solicitation)和邻居宣告NANeighbor 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包,非常难检测。

相关内容