如何避免IPv6“友邻发现”威胁?

如果企业正着手准备部署IPv6,那么一定要了解“友邻发现(ND)”及其漏洞。

IPv6友邻发现是IPv6协议套件的一个核心部件。它可用于IPv6解析和IPv6无状态地址自动配置。本文主要介绍各种基于友邻发现(ND)的攻击,以及阐述IT管理员如何使用一个开源IPv6工具套件来评估所有可能受此类问题影响的安全设备的有效性。

IPv6友邻发现(ND)是IPv6协议套件的一个关键组件,它部署在IPv6节点,包含许多的功能:

· IPv6地址解析
· 无状态地址自动配置
· 重复地址检测
· 友邻中断检测

IPv6地址解析包括将一个友邻节点的IPv6地址映射到相应的链路层地址上。在IPv4中,执行相同功能的是地址解析协议(Address Resolution Protocol, ARP)。无状态地址自动配置(Stateless address autoconfiguration, SLAAC)包括发现邻近路由器和获取用于建立IPv6连接的网络配置信息。重复地址检测(Duplicate address detection, DAD)是一个在部署一个IPv6网络通信地址之前用于检测重复IPv6地址的功能。最后,友邻中断检测(NUD)可用于评估一条通向相邻节点路径的可达性。在遇到节点中断时,可以部署一条替代路径。

友邻发现使用互联网控制消息协议v6消息控制它的所有功能;它不同于ARP,后者直接运行在底层的链路层协议之上。虽然这种设计方式看起来“更整洁一些”(因为ND不会绑定到任何一种链路层技术上),但是这里也包含一些重要影响。例如,任何用于监控ND流量或防御ND攻击的设备或技术都必须应对IPv6数据包的多样性及其复杂性。又例如,IPv6碎片和IPv6扩展头信息就被证实可能会影响任何ND安全性、监控设备或技术。

IPv6地址解析及其工作方式

当IPv6数据包发送到本地链路时,一个相邻节点的IPv6地址(可以是最终目标或中间路由器)需要映射到相应的链路层地址。

想要搞坏地址解析功能的最简单方法是部署nDisc6 IPv6诊断工具的ndisc6工具(开源)。ndisc6工具可以破坏两个功能:解析得到的IPv6地址和用于执行地址解析的网络接口。例如,它可能将IPv6地址fc00:1::1解析为下面的链路层地址:

图1:解析一个IPv6地址

一个IPv6实现在一个名为友邻发现缓存(与之对应的是IPv4的ARP缓存)中保存着IPv6地址到链路层地址的映射列表。在手工评估一个节点是否下载了错误地址映射(可能由攻击造成的错误)的过程中,检查友邻缓存是非常有用的。所有IPv6实现都提供了用于检测友邻缓存的方法或工具。例如,在GNU/Linux系统中,使用“ip”命令就可以检查友邻缓存:

图2:检查友邻发现缓存

结果中每一行包含一个IPv6地址、友邻所在的网络接口、相应的链路层地址、表示地址是否指向一个路由器的关键字(router)和这个记录的状态(例如,友邻是否可达、映射信息是否失效等)。

在BSD系列操作系统中,则可以使用ndp检查友邻缓存的内容:

图3:在BSD系统中检查友邻缓存

注意,虽然上面的结果与Linux有一些不同,但是两者的信息是基本一致的。

如果有攻击者能够在友邻缓存中加入一些非法映射,那么他就能够将本地数据包随意引流到任意节点,然后执行中间人(MITM)攻击或分布式拒绝服务(DDoS)攻击。决定最终的攻击属于MITM还是DDoS的因素是受攻击地址映射的目标链路层地址:如果攻击者能够将受攻击的IPv6地址映射到自己的链路层地址,那么他执行的就是MITM攻击。如果他将受攻击地址映射到一个不存在的链路层地址,那么这就是DDoS攻击。

另一个诊断工具是SI6 Networks的IPv6 Toolkit,它是一个开源IPv6安全评估和故障修改综合工具,它支持各种操作系统(包括GNU/Linux、BSD和Mac OS)。它包含许多实用工具,如可用于发送伪造友邻广告(NA)消息的na6工具。

na6可用于执行前面提到的MITM或DDoS攻击。例如,如果将通向IPv6地址fc00:1::1的所有流量转发到链路层地址11:22:33:44:55:66,攻击者可以执行下面的na6命令:

na6 -i eth0 -W fc00:1::1 -E 11:22:33:44:55:66 -L -v –o

按前面介绍的方法手工检查友邻缓存,就可以看到这个工具对于ND缓存的攻击效果。

正如前面所提到的,攻击者可能利用IPv6扩展头和/或碎片去回避安全控制。因此,如果攻击者想要绕开一些无法处理整个IPv6头信息的安全设备,那么他可以执行下面的命令,发送一些恶意NA消息:

na6 -i eth0 -W fc00:1::1 -E 11:22:33:44:55:66 -L -v -o
-u 64

显然,这个命令只是在前一条命令的基础上添加了选项“-u 64”,它的作用是在规定的IPv6头信息之后插入一条64字节的目标选项头信息。

最后,理论上ND消息(包括NA消息)都采用了碎片机制。虽然RFC 6980禁止在ND中使用碎片,但是一些未更新的实现可能仍然接受这些数据包。在评估一个IPv6网络或实现时,我们应该检查是否可以使用带有IPv6碎片的ND去绕开安全控制。这里有两个不同的测试例可以使用:发送一个IPv6原子碎片格式的NA消息和发送一个超大IPv6头信息链的NA消息。

RFC 6946定义的IPv6原子碎片实际上是一些包含偏移值为0和MF(更多碎片)位为0的IPv6碎片头信息的IPv6数据包——即包含一个碎片头但只有一个碎片的数据包。执行下面的命令,就可以在na6工具中发送原子碎片格式的数据包:

na6 -i eth0 -W fc00:1::1 -E 11:22:33:44:55:66 -L -v -o
-y 500

其中,选项“-y 500”表示工具会将友邻广告消息分割为500字节为单位的碎片——但是由于整个NA消息远远小于500字节,所以最终发送的消息将采用原子碎片格式。

第二个测试例是一个超大IPv6头信息链。如果一个数据包已经分割为碎片,并且第一个碎片不包含所有协议头信息,包括从第一个规定的IPv6头信息到最上层协议(如传输协议头信息),那么这个数据包就是一个超大IPv6头信息链。下图显示的就是一个超大IPv6头信息链。

图4:一个超大IPv6头信息链

RFC 7112定义了超大IPv6头信息链,反对使用这种头信息,并且明确规定在遇到时允许丢弃相应的数据包。然而,一些过时的IPv6实现可能仍然接受这些数据包,因此不可能认为受攻击节点一定会丢弃这些数据包。使用na6工具,执行下面的命令就可以以超大IPv6头信息链的格式发送NA消息:

na6 -i eth0 -W fc00:1::1 -E 11:22:33:44:55:66 -L -v -o
-u 500 -u 100 -y 400

这实际上就是前面使用的同一个攻击命令,只是增加了两个目标选项头信息(一个是500字节,后面紧跟一个100字节的头信息),以及一个将NA消息分割为最大400字节碎片的请求(“-y 400”选项)。因此,第一个碎片的大小不足以传输整个IPv6头信息链,因此IPv6头信息链会被分割为两个碎片。

作为IPv6网络安全评估的一部分,我们可以执行这里的每一个测试例,从而评估所部署的安全控制措施是否能应对这些攻击方式。

原文发布时间为:2015年02月10日

时间: 2024-11-05 23:29:48

如何避免IPv6“友邻发现”威胁?的相关文章

IPv6邻居发现的工作机制和原理详解

IPv6 邻居发现 和静态邻居指定 拓扑图依旧,在现在的拓扑图上面,显示了静态手工配置的全局单播地址和link-local地址. 那么IPv6邻居发现是怎么回事呢? 有一个命令是: show ipv6 neighbor 首先在R1上面,show ipv6 neighbor.看到的肯定是直连的R2. 我第一次看的时候都看错了,呵呵,ca01.1a44.0008是R2的,R1是ca00开头的. 所以这里,从本台路由器上面看到的邻居实际上是直连设备的link-local地址,绝对不会是配置的接口地址2

检视你的IPv6地址组件 不要让他再易受攻击

IPv6"友邻发现"(ND)是IPv6协议栈的核心部分,它被用于IPv6地址解析和IPv6无状态地址自动配置等.在本文中,探讨了IPv6的不同组件将如何受到基于ND的攻击. 在部署IPv6无状态地址自动配置(SLAAC)时都需要IPv6节点.在SLAAC中,本地路由器将IPv6网络配置信息提供给本地主机,而本地主机利用这一信息来建立起IPv6连接,这包括IPv6地址的配置等.与动态主机配置协议版本6不同,这里没有地址"租用".相反地,主机会自己自动配置(或"

《部署IPv6网络(修订版)》一2.4 邻居发现协议

2.4 邻居发现协议 部署IPv6网络(修订版) 大约在10年以前,RFC 1970初步设计并公布了IPv6邻居发现.从那时之后在RFC 2461中进行了修改,一个新的版本(重点在改错而不是修改)是在RFC 2461bis中进行的.一些扩展已经在反向邻居发现(RFC 3122).缺省路由器选择(RFC 4191)和自动配置(RFC 2462)中描述. 在这10年当中,Internet团体的重点发生了重大转变,原来没有得到很多关注的领域,如安全性和移动性,现在是大多数努力的重点.该重点的转变导致了

黑客的下一个攻击目标:IPv6

你可以按照自己的意愿推迟IPv6策略的部署,但是你必须应当马上着手解决IPv6存在的安全隐患.如果你计划将IPv6与IPv4进行双堆栈配置,那么在安全方面你不能掉以轻心.如果你考虑全面转向IPv6,这也并不代表你就可以高枕无忧. 最大的潜在安全威胁在于企业网络上已经接入了大量具备IPv6功能的设备,包括所有运行Windows Vista .Windows 7.Mac OS/X.Linux和BSD设备. 与以前IPv4需要DHCP不同,IPv6不需要人工配置.思科杰出系统工程师,<IPv6安全>

IPv6 NDP—Neighbor discovery protocol的结构概述

在RFC2461中"IPv6邻居发现协议"中定义到,NDP是IPv6中的一个关键协议. 在这个协议中,有一些关键的机制,这个章节我们就会从这里展开一一讨论. 因为在网上没有找到合适的图例,所以只有自己画了. 上面的结构图是出自<<CISCO IPv6网络实现技术>> 第79页. 从这个图展开学习 NDP协议,就可以比较全面的NDP的框架有一个很好的了解. 说到NDP--neighbor discovery protocl.又不得不提到ICMPv6,这个协议在IP

Threatbook合伙人李秋石:具有中国特色的安全威胁情报

 WOT2015"互联网+"时代大数据技术峰会于2015年11月28日于深圳前海华侨城JW万豪酒店盛大揭幕,42位业内重量级嘉宾汇聚,重磅解析大数据技术的点睛应用.秉承专注技术.服务技术人员的理念.DBA+社群作为本次大会合作方,将通过图文直播为大家全程跟踪报道这场技术盛宴.    在安全圈提起"威胁情报",可谓无人不知无人不晓.什么是威胁情报?威胁情报是一种基于证据的知识,包括了情境.机制.指标.隐含和实际可行的建议.威胁情报描述了现存的.或者是即将出现针对资产的

发现藏匿在加密流量中的威胁

加密是保护隐私的一个重要手段,能够保护我们的数据不被窥探,能够阻止犯罪分子窃取我们的信用卡信息.应用的使用习惯或密码. 加密的重要性不言而喻,据最新报告显示,截止今年2月,半数的在线流量均被加密.对于特定类型的流量,加密甚至已成为法律的强制性要求. Gartner认为,到2019年,超过80%的企业网络流量将被加密.虽然这对于重视隐私的用户来说是一个福音,但IT团队将面临着严峻挑战.面对大量涌入的流量,如果没有解密技术,IT团队将无法查看流量内包含的信息. 这意味着加密是一把双刃剑,保护隐私的同

《威胁建模:设计和交付更安全的软件》——3.8 扩展示例:针对Acme-DB的STRIDE威胁

3.8 扩展示例:针对Acme-DB的STRIDE威胁 此扩展示例主要讨论针对Acme/SQL数据库使用STRIDE发现威胁,该数据库在第1章和第2章中提及,并在图2-1中展示.首先,你将看到按照STRIDE分类的威胁,然后再根据谁能解决威胁来进行讨论. 假冒 web客户端可使用随机的凭证或者偷来的凭证尝试登录,如SQL客户端那样. 如果SQL客户端是你写入的并允许它做安全决策,那么这个假冒(或者被篡改)的客户端就可通过安全检查了. web客户端会连接到假冒错误(或者被假冒的)前端,最终会泄露凭

威胁趋势预警:Carbanak网络犯罪团伙开始瞄准酒店和餐饮业

臭名昭著的Carbanak犯罪团伙正转变攻击方向,集中火力瞄准酒店和餐饮行业. 2015年曾发生过一系列的针对金融机构的网络恶意攻击活动,但其中没有一件比Carbanak犯罪团伙的活动来得更为大胆创新.该犯罪团伙瞄准了超过30个国家的100多家银行及其他金融机构,窃取的金额或可能高达10亿美元.但目前这一臭名昭著的犯罪团伙转变了攻击策略,开始集中火力攻击酒店和餐饮行业. Trustwave公司报告称:  "上个月公司分别收到两家服务业客户和一家连锁餐饮客户的委托,调查一起未知的黑客攻击事件.调查