IPv6协议及安全浅谈

网络 通信技术
在我国,IPv6一直在稳步发展,早已不是多年前只在实验环境中存在的场景了,很多互联网大厂、高校都用上了IPv6,部分地址宽带用户也使用了IPv6。

 1、前言

在我国,IPv6一直在稳步发展,早已不是多年前只在实验环境中存在的场景了,很多互联网大厂、高校都用上了IPv6,部分地址宽带用户也使用了IPv6。就在前些日子,安全研究员Dirk-jan Mollema发表基于委派攻击并结合NTLM Relaying,实现对同网段的在域主机进行攻击文章详情,其中就使用了基于IPv6的mitm6工具,通过IPv6网络实现攻击。

尽管IPv6发展了很多年,但相对很多人而言,它还是一个陌生的对象,需要我们逐步去了解和认识,以备后续的工作和生活需要。IPv6内容很多,由于篇幅有限,无法详细描述,本文仅介绍IPv6相对关键的组成部分及其相关安全性。

2、IPv6协议

2.1、从一个包结构认识IPv6

 

(图片来源:https://pcedu.pconline.com.cn/1038/10387664.html)

IPv6在RFC2460中描述,相比IPv4,IPv6具有以下特征:

  1. 固定的报文结构,更高效的封装和性能。
  2. Source/Destination Address:128位bit的地址空间,号称地球上每个沙子都能分配到独立的IP地址。
  3. Flow Label:流标签能力,实现流量标记区分。
  4. 可扩展头部:在固定头部后面,可以链式附加许多扩展头部,实现更多功能支持。

2.2、看懂IPv6地址

和IPv4不同,IPv6采用16进制来表示,将整个地址分为8个段,每段之间用冒号隔开,每段的长度为16位,表示如下: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX/X,并且IPv6有地址简化的写法,通过下图可以了解简化写法。

 

(图片来源:https://baijiahao.baidu.com/s?id=1611121709439510290&wfr=spider&for=pc)

2.3、不同地址作用大不相同

在RFC2373定义了IPv6的地址类型,我们需要了解的主要类型如下:

  1. 全局单播地址:IPv6公网地址,所有以2或3开头的地址属于该类地址,掩码是64位。
  2. 链路本地地址:链路本地地址非常重要,用于邻居发现、地址配置、路由协议的协商等。顾名思义,它仅用于本地链路通讯,在本地链路有效,无法跨下一跳。所有以 FE80开头的地址属于该类地址。通常情况下,启用IPv6协议的接口会根据MAC地址,自动生成一个链路本地地址,这个机制称为EUI-64。
  3. 站点本地地址:站点本地地址类似IPv4中的私网地址,这些地址无法在互联网上进行路由。所有以 FEC0开头的地址属于该类地址。
  4. 组播地址:组播地址用来表示一组设备或接口,所有以 FF开头的地址属于该类地址。其中 FF02::1表示本地链路上的所有主机, FF02::2表示本地链路上的所有路由器。

3、邻居发现协议(NDP)

3.1、NDP是什么

在IPv6网络中,采用NDP协议取代ARP来学习MAC地址,NDP的数据封装在ICMP v6包中,它主要实现了以下功能:

  1. 链路地址管理:维护一个IP地址和MAC的关系状态表
  2. 无状态地址自动配置(SLAAC):能够在没有DHCP服务器的情况下实现主机自动学习配置IPv6地址
  3. 路由器重定向:与IPv4一样

3.2.1、主机之间如何通信

链路地址管理既然是替代ARP的功能,它所实现的就是帮助主机找到目标IP的MAC地址,并且维护这些IP地址和MAC的对应关系,在必要的时候进行删除和更新。在IPv6网络中,为了学习一个MAC地址,一个简单的NDP交互过程大致如下:

 

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

  1. 当一个主机第一次与对方通信时,它会在网络中发送一个邻居请求(NS)包,这个NS包携带了发送者的IP和MAC地址,以及发送者需要请求MAC地址的目标IP,这个NS包被发送到一个“被请求节点多播地址”;
  2. 拥有目标IP的主机会侦听“被请求节点多播地址”,当它收到这个NS数据包后,就知道谁要找它,然后这个主机会用一个邻居通告(NA)单播回应NS请求,告诉对方自己的MAC地址信息。

通过这样一个简单的过程,双方就能够学习并创建一条IP-MAC对应记录。NDP有复杂的状态机制,这里不做详细介绍。想了解的可查看H3C IPv6邻居发现经典讲义。

这里需要解释一个名词,那就是“被请求节点组播地址”,这是一种特殊的组播地址,每一个主机配置好单播IPv6地址后,都会根据这个IP地址自动生成一个对应的“被请求节点组播地址”,这个“被请求节点组播地址”只在本地链路上有效,且在链路上唯一。这个“被请求节点组播地址”的前缀是:FF02::1:FFxx:xxxx/104,后24位是接口IPv6地址的后24位。

3.2.2、无感知的IP地址自动配置

在IPv6网络中,我们可以不需要DHCP实现主机自动获取网络的前缀信息、链路环境信息、并检测地址冲突等,完成节点无感知接入网络。一个简单的地址配置交互过程如下:

 

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

  1. 在IPv6网络中,网关会周期性发送RA数据包到多播地址 fe02::1以宣布自己的存在。这个时候,网络上的主机会接收到RA包,通过RA包携带的信息,主机可以学习到接入网络所需要配置的地址信息,从而自动进行IP地址的配置。
  2. 反过来,当主机接入到一个IPv6网络中时,主机会自动发起一个RS包请求地址配置,目的地址为标识所有路由器的多播地址( fe02::2)。路由器收到RS包后,需要马上发送一个RA包以回应该主机,以便主机进行地址配置。

3.2.3、DAD-地址冲突检测机制

主机获取到IPv6地址后,并非马上就能使用该地址进行通信,需要做一个重复地址的检测,确保网络上没有相同地址的主机存在。为了检测地址冲突,主机会在网络上发送一个该IP生成的被请求组播地址,源地址为::,如果有节点应答,即收到一个邻居通告(NA)包,说明该地址已被使用,如果在重传时间内未检测出重复地址,则认为地址可以使用。

 

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

4、IPv6过渡技术

目前IPv6仍处于发展阶段,虽然运营商、互联网公司及高校都在逐步建设,但是互联网基础设施和应用大部分还在使用IPv4。由于IPv4和IPv6本身的不兼容性,为了适应这种情况,把各自的网络孤岛进行连接,出现了几种过渡解决方法,分别是:

  • 双栈技术:在网络节点中同时启用IPv4和IPv6两种协议,使得网络可以同时支持两种协议。
  • 隧道技术:采用数据包封装技术,将IPv6数据封装到IPv4数据包中,利用IPv4的网络中进行通信。
  • 翻译技术:采用类似NAT的方式进行的转换。

双栈技术相对比较好理解,节点主要根据应用的通讯的地址,选择相应的网络进行传输即可。

而关于IPv6隧道技术,本质上是数据包的二次封装,借助IPv4网络,来实现IPv6节点的互联。隧道技术有多种实现,如ipv6 in ipv4、6to4、GRE、ISATAP、Teredo隧道等。

4.1、6to4隧道

当孤立IPv6站点之间需要通信时,通过在IPv4网络中创建隧道,实现两个孤立站点之间的互联。6to4隧道将IPv6数据包封装在IPv4数据包中,通过IPv4网络进行通信。6to4借助特殊的配置和条件,实现了隧道自动建立。如下图:

 

(图片来源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)

隧道的建立是由双栈主机触发,IPv6 6to4隧道具有以下特点:

  1. 自动隧道建立:路由器通过提取ipv6数据包目标地址后32位来作为隧道封装的目的地址,以此来自动建立隧道。
  2. 自动前缀分配:使用6to4隧道互联的IPv6网络,其前缀都必须基于IANA分配的2002::/16地址空间,每个6to4站点必须在6to4路由器上配置固定的公网IPv4地址,这个IPv4结合IANA前缀,最终形成本站点的IPv6前缀(2002:ipv4-address::/48)。以此,6to4路由器的IPv4地址决定了整个IPv6站点的地址前缀,如果后期6to4路由器的IPv4地址做了变更,对整个站点的影响是全局的。
  3. 6to4中继 :为了帮助那些6to4站点与非6to4的IPv6网络进行通信,6to4隧道技术定义了6to4中继路由器,这些中继路由器一方面能和6to4路由器建立隧道,同时也接入了IPv6骨干网,通过这些中继路由器,6to4站点就能访问IPv6互联网了。如下图:

 

(图片来源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)

RFC 3068中为中继路由器定义了一个任意播前缀,这样6to4站点路由器就能找到离自己最近的中继。另外,IANA为中继分配了一个任意播前缀192.88.99.0/24,转换为IPv6前缀就是: 2002:c058:6301::/48,6to4边界路由器配置一个默认路由到这个地址就可以。

注:单独的双栈主机也可以与其他6to4路由器建立隧道。

4.2、ISATAP隧道

站内自动隧道寻址协议(ISATAP: IntraSite Automatic Tunnel Addressing Protocol) 采用了双栈和隧道技术,能实现主机与主机、主机与路由器之间的通信。ISATAP隧道不仅能实现隧道功能,还可以通过IPv4网络承载IPv6网络的ND协议,从而使跨IPv4网络的设备仍然可以进行IPv6设备的自动配置。

在内部网络中,一个简单的ISATAP隧道示例如下:

 

(图片来源:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781672(v=ws.10)#isatap)

  1. 双栈主机自动使用特殊的地址格式配置本地链路地址, FE80::0:5efe:a.b.c.d ,其中后64比特中5efe为固定,a.b.c.d为接口的IPv4地址。
  2. 当两个主机通信时,自动抽取出IPv4地址建立隧道,只要彼此间IPv4网络保持通畅即可实现。

一般情况下,使用私有IPv4地址的主机只能在本地网络中与其他双栈主机建隧道,如果想访问其他外部的IPv6网络,则需要借助ISATAP路由器,通过ISATAP路由器,获取公网IPv6前缀,实现外部路由。

 

(图片来源:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781672(v=ws.10)#isatap-router)

  1. ISATAP路由器通过发送RA,为内网的双栈主机分配IPv6前缀
  2. 内网的双栈主机根据RA,自动配置IPv6地址,并将ISATAP路由器作为默认网关
  3. 借助ISATAP路由器,与外部的IPv6节点建立隧道,转发数据。

4.3、NAT64与DNS64技术

在IPv4网络中,NAT有无可取代的作用,通过NAT技术,内网主机实现了互联网访问的需求。在IPv6过渡技术中,NAT技术也有一席之地。NAT64一般与DNS64协同工作,不需要在IPv6客户端或IPv4服务器端做任何修改,实现不同网络之间互访。

NAT64:如名字所示,NAT64是一种网络地址与协议转换技术,通过地址翻译,实现IPv6节点访问IPv4网络。与NAT一样,NAT64也支持静态映射,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。

DNS64:DNS64服务器本身也是是双栈主机,当IPv6主机向DNS64服务器查询域名时,如果所查询的域名没有AAAA记录,则DNS64会将A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,然后返回合成的AAAA记录用户给IPv6侧用户。

注:以下内容引用:http://bbs.ruijie.com.cn/thread-33426-1-1.html

 

NAT64和DNS64的流程如下:

  1. IPv6主机发起到DNS64 server的IPv6域名解析请求(主机配置的DNS地址是DNS64),解析域名为www.abc.com;
  2. DNS64触发到DNS server中查询IPv6地址;
  3. 若能查询到则返回域名对应的IPv6地址,若查询不到,则返回空;
  4. DNS64再次触发到DNS server中查询IPv4地址;
  5. DNS server返回www.abc.com的IPv4记录(192.168.1.1);
  6. DNS64合成IPv6地址(64::FF9B::192.168.1.1),并返回给IPv6主机;
  7. IPv6主机发起目的地址为64::FF9B::192.168.1.1的IPv6数据包;由于NAT64在IPv6域内通告配置的IPv6 Prefix,因此这个数据包转发到NAT64设备上;
  8. NAT64执行地址转换和协议转换,目的地址转换为192.168.1.1,源地址根据地址状态转换(3ffe:100:200:1::1)->(172.16.1.1);在IPv4域内路由到IPv4 server;
  9. IPv4数据包返回,目的地址为172.16.1.1;
  10. NAT64根据已有记录进行转换,目的地址转换为3ffe:100:200:1::1,源地址为加了IPv6前缀的IPv4 server地址64::FF9B::192.168.1.1,发送到IPv6主机,流程结束。

5、IPv6 安全

就IPv6安全性而已,尽管在设计之初就引入了安全的设计理念,如认证、加密扩展头部,结构化的地址规划等。但是IPv6本身设计上也不断进行更新,不同时期的实现都有所差异。如下图,类似NDP就有过几次变化。

 

(图片来源:https://www.blackhat.com/docs/sp-14/materials/arsenal/sp-14-Schaefer-Workshop-Slides.pdf)

针对IPv6协议、IPv6应用、过渡阶段使用的技术等方面,安全研究人员不断发现了相关的安全脆弱。目前在 CVE 漏洞库中已有 300 余个与 IPv6 相关的安全漏洞被发布,也有专门针对IPv6安全的工具套件,如: thc-ipv6 SI6 Networks' IPv6 Toolkit Chiron scapy6 ip6sic ERNWfuzzing toolkit LOKI 下面参考学习网上各类大神研究成果,为大家做一下分享。

5.1、链路安全

IPv6使用NDP维护链路信息,本质和ARP一样,在局域网中通过没有认证的的交互过程,学习相关的链路信息。因此和ARP一样,面临着网络欺骗、DoS攻击等安全威胁。来自thc-ipv6的工具套件可针对NDP实现多种攻击。

网络欺骗

  1. 针对前面NDP协议所介绍的NS、NA、RS、RA,包括DHCP等过程,均是没有认证来源,意味着攻击者可以在网络中实施欺骗,从而将流量引导到攻击主机中。
  2. 通过伪造DHCP服务器,可以分发攻击者自己DNS服务器,让主机的应用访问解析到攻击者服务器。
  3. 发送虚假重定向,引导流量到攻击者主机。

下面使用thc-ipv6工具,模拟一个RA通告欺骗,让内网主机自动配置我们虚假的IPv6前缀:

1.在kali中启用RA欺骗,如下图:

 

2.同网段的windows 2008,一开始只有本地链路ipv6地址,后面自动获取了2001开头的IPv6地址,如下图:

 

在thc-ipv6中,用于链路层欺骗的工具非常多,有NS、NA、DHCP等,通过了解前面介绍的NDP协议,大家可以自己进行测试。

 

拒绝服务

  1. 攻击者可在DAD过程不断响应NA包,让主机认为地址有冲突,一直获取不到地址,让主机无法接入网络。
  2. 攻击者通过伪造大量的NS/RS报文,发送给网关,填充虚假记录导致网关的表项溢出,造成网关无法提供正常的服务,进而导致DoS。
  3. 攻击者可以模拟大量用户发送DHCPv6请求报文,占用服务器大量的地址资源,导致合法终端没有地址资源可以分配。
  4. 通过伪造DHCP请求报文,消耗网络地址,使其他终端无法获得地址。
  5. CVE-2010-4669:在windows xp、2003、vista、2008和7中,由于IPv6实现的问题,发送大量的不同源地址的RA消息(可使atk6-flood_router6),会导致系统CPU飙升(此项未测试)

下面模拟DAD拒绝服务攻击:

1.启动一个RA前缀分配,让同网段的主机可以获取地址前缀自动配置;

2.启动一个DAD攻击,如下图:

 

3.禁用并启用windows 2008的网卡,报地址冲突:

 

4.在攻击主机上,可以看到相应的输出:

 

其他flood类型的攻击,在thc-ipv6工具中都有相关的支持,大家可自行测试验证:

 

防护措施

设备防护

网络欺骗的本质上是没有对来源进行验证,IPv4网络中,针对ARP欺骗、DHCP欺骗等攻击,在接入设备上都有相关的安全特性,如Port Security、DHCP Snooping、IP Source Guard、信任端口等。

在IPv6中,也可采用同样的防护手段。目前主流厂商的交换机都能同样支持类似的安全防护特性。这类防护的本质是在接入层交换机上建立的一张IP、MAC、Port的可信表项,获取用户IP地址与MAC地址的对应关系。在建立了绑定表项之后,能够保证一个已经获取了IP地址的用户只能使用已获取的地址进行通信,过滤掉所有的不在绑定表项中的IPv6的非法用户发送的报文。

另外一种防御手段是通过在端口配置数据包侦听,一旦收到某些类似的数据包,则将端口关闭,例如cisco的RA Guard或root Guard之类。 相关的防护技术汇总:ND snooping、DHCP snooping、RA Trust、DHCP Trust、RA Guard、DHCPv6 Guard。

其中ND snooping、DHCP snooping是一种动态获取用户IP、MAC、Port对应关系的技术,由接入交换机实现。通过已经建立的绑定表项,交换机侦听网络上的NDP报文,比较已经获取到的可信表项中的IP与MAC地址,对ND报文进行过滤,丢弃异常的报文。

RA Trust、DHCP Trust属于信任端口技术:通过将连接DHCP服务器、网关路由器的端口配置信任端口,交换机将只转发来自信任端口的DHCP通告包以及RA包,从而防御DHCP服务器和RA伪造。

RA Guard、DHCPv6 Guard属于非信任端口技术,一旦收到RA或DHCP通告数据包,则将端口关闭。 另外还有限速技术,能有效限制端口收发数据包的速率。

主机防护

  1. 采用静态IP配置
  2. 关闭RA功能:
  • windows: netsh intipv6 setint[index]routerdiscovery=disabled
  • Linux: sysctl -w net.ipv6.conf.eth1.accept_ra=0Free
  • BSD: sysctl net.inet6.ip6.accept_rtadv=0

5.2、扩展头安全

在IPv6中,节点必须从IPv6报头开始,处理/紧跟IPv6报头链中的每个扩展报头,直到发现最后一个报头,以此来对上层协议的内容进行检测。如下图:

 

由于IPv6扩展头具有可变性,除了逐跳选项外,并没有严格限制顺序。某些安全设备或者无法识别多个扩展头,因此无法检查应用层内容,导致安全策略绕过,甚至拒绝服务。例如:

 

另外,针对IPv6不同的扩展头部,具体的功能选项由头部中相关的字段和内容决定,攻击者通过构建特殊的包头数据,可以针对不同扩展头实现不同的攻击方式。

5.2.1、Smurf Attacks

Smurf Attacks发生在“目标选项”扩展头中,如下图,目标选项扩展头中,Option Type里面8个bit中,前2个bit的值决定了节点対于该数据包的回复动作。当值设置为10时,收到该数据包的节点会丢弃该数据包,并且返回一个ICMP消息包。

 

看到这里,大家应该已经知道这个攻击的思路,如下:

 

采用受害者地址作为源IP,构造以10开头的Option Type值,将数据包发送到标识所有主机的组播地址: FF02::1,收到数据包的主机,都会回送一个icmp给到受害者。

5.2.2、分片安全

概述

在IPv6网络中,只有发起者可以进行IP分片,节点会根据链路MTU的大小自动进行分片,IPv6支持的链路层最小MTU是1280字节。针对分片包,中间节点只会简单进行传递,只有接收节点才进行分片重组,因为路由器不能对数据报进行分片,当要传递一个过大的数据报时就只能将其丢弃,并返回一个 ICMPv6 Packet Too Big 信息。 一个分片扩展包头如下:

 

需要关注的字段如下:

  1. Next Header:标识下一个扩展头的类型。
  2. Fragment Offset:分片的偏移量。
  3. M:1表示还有分片,0表示当前是最后一个分片。
  4. Identification:定义属于同一数据包的分片,同属1个数据包的分片该标识内容一致。

一个分片的示例如下:

 

从上图可以看到,IPv6 数据包分为两部分

  1. 不可分段部分 (Unfragmentable Part):主报头和某些指定扩展头,如Hop-By-Hop Options, Destination Options、Routing。
  2. 可分段部分 (Fragmentable Part):数据包的数据部分和其他扩展头,如AH、ESP 、Destination Options等。

另外,关于分片还有以下规定:

  1. 如果在接收第一个到达的分片后的60秒内没有接收到其他的分片,则必须放弃此数据包的重新组装,并且必须丢弃接收到的该数据包的所有片段并返回一个ICMP包。[RFC 2460, 1998]
  2. 除了最后一个分片,每个分片必须都是8字节的整数倍,否则目标节点将会丢弃该数据包并返回一个ICMP包。[RFC 2460, 1998]
  3. 如果组装后的数据包长度超过65535个字节,则必须丢弃该数据包并返回一个ICMP包。[RFC 2460, 1998]
  4. 当重新组装IPv6数据报时,如果确定其一个或多个组成分片存在重叠的部分,那么整个数据报(以及任何组成片段,包括那些尚未接收到的片段)必须被静静地丢弃。[RFC 5722, 2009]

IPv6分片的安全问题主要来源于以上这些规定,通过构造不符合上述规定的数据包,可能导致以下问题:

  1. 绕过安全设备:有些安全设备无法进行分片包重组或有效识别,将攻击payload拆分为分片,可以绕过安全设备的检查。
  2. 绕过安全特性:例如RA Guard。
  3. 拒绝服务:通过发送大量的分片包,来消耗目标节点的性能,有些节点不能很好的处理分片,也可能导致拒绝服务。
  4. 根据不同的响应信息,检测目标机器的指纹信息。
  5. 远程代码执行。

根据上面的介绍,针对IPv6分片主要攻击方式如下:

  1. Atomic Fragments
  2. Tiny Fragments
  3. Packet Too Big messages
  4. Predictable Fragment IDs
  5. Fragmentation Overlapping

下面的截图来自:(https://kb.juniper.net/InfoCenter/index?page=content&id=JSA10780&pmv=print&actp=&searchid=&type=currentpaging),厂商已经修复。

 

在kali的thc-ipv6工具中,atk6-firewall6 、atk6-fragmentation6 、atk6-implementation6等工具可以测试IPv6实现和分片支持情况,另外scapy也可以用于灵活的构建数据包。

防护措施

  1. 在安全设备选型上,要测试设备是否能检测分片包并对分片包进行重组及识别,一般情况下,通过IPv6 Ready Phase-2认证的产品应该没问题。
  2. 配置分片的最长等待时间。
  3. 如果网络中MTU满足情况,可以配置策略直接丢弃分片包。
  4. 安全设备配置默认禁止的策略。

5.2.3、秘密通道

IPv6扩展包头,大的负载能力,默认启用的协议栈,过渡期间的各自自动化隧道等能力特别合适构建传输通道,通过在合适的包头位置填充数据,就能利用IPv6构建通道,传输数据。 来自thc-ipv6的工具就带了类似的支持:

5.2.4、其他

类似的扩展头安全问题还有”IPv6路由头部“,这个扩展头部为发送方提供了一种IPv6数据包路径控制机制,以控制数据包通过网络的路径。路由扩展头部有两个不同版本,分别称为类型0(RH0)和类型2(RH2)。正是RH0会出现DoS的安全隐患。出于安全方面的考虑已被否决[RFC5095], RH2被定义为与移动IP共同使用。RH0本质是因为它可以在扩展头中携带多个数据包经过的路由器节点列表,攻击者可以多次指定相邻两个路由器,在两个路由器之间形成路由环路。 其他扩展头部安全问题,主要是利用构造畸形的数据包,导致处理设备出错或者消耗性能等。在kali的thc-ipv6工具中,有专门针对扩展头的构造攻击工具,如下图:

 

另外,针对扩展头还有一个很强大的工具:chiron

5.3、过渡阶段安全

5.3.1、双栈机制安全风险

1.过渡期间双栈部署的网络中同时运行着IPv4、IPv6两套网络,增加了设备/系统的暴露面,也意味着防火墙、安全网关等防护设备需同时配置双栈策略,导致策略管理复杂度加倍,防护被穿透的机会加倍。在windows中,启用了防火墙的系统,IPv6也能得到防护;在linux系统中,IPv6采用ip6tables,可能存在没有任何防护策略的情况。

 

2.在IPv4网络中,多数设备缺省启动了IPv6协议,并且自动配置了链路本地地址,使得IPv4网络中存在隐蔽的 IPv6 通道,由于该 IPv6 通道并没有进行防护配置,攻击者可以利用IPv6通道实施攻击。例如前言部分介绍的MITM6案例,就是利用了IPv6网络攻击IPv4。

3.双栈系统的复杂性也会增加网络节点的数据转发负担,导致网络节点的故障率增加。

建议在没有使用IPv6的情况下,关闭该协议栈。

5.3.2、自动隧道安全

1.利用IPv6隧道机制,可作为攻击者外联通道。目前很多设备默认开启了IPv6协议,并且边界安全设备可能没有配置完善IPv6检测策略,另外自动化隧道机制可以非常简单的启用一个外联通道。早在2003年,来自blackhat的资料,就已经讲述了IPv6控制通道的情况。如下图:

(截图来源:https://www.blackhat.com/presentations/bh-federal-03/bh-federal-03-warfield/bh-fed-03-paper-warfield.doc)

 

2.构造欺骗数据包,形成路由环路,造成拒绝服务。下面引用(https://www.usenix.org/legacy/events/woot09/tech/slides/nakibly.pdf))的示例,介绍基于隧道的路由环路攻击场景:

(示例来源:https://www.usenix.org/legacy/events/woot09/tech/slides/nakibly.pdf)

 

  • 攻击者在ISATAP内部,发送一个构造的隧道数据包,源地址是2002::*,目标地址是::0200:5EFE:。
  • ISATAP路由器收到该数据包后,从目的地址取出IPb,作为隧道的目标地址,将IPv6数据包封装进去,通过IPv4网络发给IPb。
  • 6to4路由器接收到该数据包,解封后发现目标IP是::0200:5EFE:,通过查找路由表,将数据包通过IPv6网络发回ISATAP路由器。
  • ISATAP路由器收到该数据包后,继续该过程,形成环路。

5.3.3、防护措施

  1. 要尽可能采用静态配置隧道,以降低动态隧道的伪造和非法接入威胁。
  2. 防火墙要设置对非授权隧道报文的过滤,同时识别各种隧道协议(一般是协议号41),能够对隧道报文的内嵌封装报文做访问控制。
  3. 在防火墙设备上实现出站过滤,只允许授权隧道端点,避免恶意外联隧道。
  4. 不使用IPv6的情况下,关闭主机的IPv6协议栈。

5.6、结尾

我们无法去论断IPv6在什么时候会真正普及起来,但不可否认的是,它已经进入了我们生活。提前筹备,未雨绸缪,总归是对的。 本文内容源于网上相关文章资料的学习和参考,如有不正之处或侵权,请及时联系修正,谢谢。

参考资料

《TCP/IP详解-卷一:协议》W.Richard Stevens

RFC3587

RFC2460

RFC2373

RFC1981

RFC2461

IPv6 Attack & Defense Strategies

SeND (RFC 3971, March 2005)

RA-Guard, PACL (RFC 6105, February 2011)

A Complete Guide on IPv6 Attack and Defense

Security challenges in IPv6 from the campus perspective

IPv6的接入层安全技术 IPv6系列安全篇——SAVI技术解析

浅谈IPv6协议安全及攻击

Attacking IPv6 Implementation Using Fragmentation

中国移动-ipv6安全白皮书

 

责任编辑:武晓燕 来源: 沉思的路人
相关推荐

2010-06-11 17:20:28

2019-06-05 15:43:34

IPV6IPV4网站

2010-06-10 12:48:47

IPv6网络协议

2010-05-26 14:02:02

Mobile IPv6

2010-05-26 16:07:00

IPv6 ISATAP

2018-08-08 15:23:10

IPv4IPv6网络

2010-06-29 10:38:52

2010-06-02 14:45:42

IPv6协议地址

2010-06-01 13:52:03

IPv6协议路由协议

2010-06-13 16:29:39

2010-05-26 17:56:01

2010-05-27 11:44:37

2010-06-11 17:17:47

移动IPv6协议

2010-05-27 11:51:04

IPv6协议

2010-06-01 15:59:19

2010-06-21 15:18:19

IPv6协议栈

2010-06-01 17:17:28

2010-06-07 16:52:38

IPv6协议地址

2010-06-12 14:34:52

ipv6协议

2010-05-27 11:47:38

点赞
收藏

51CTO技术栈公众号