一、IPv6地址简介

随着物联网、5G的发展,网络应用对IP地址的需求呈现爆炸式增长,IPv4地址空间早已分配枯竭,并且分配十分不均匀,美国占全球地址空间的一半左右,中国全国的IPv4地址加起来都没有美国一所大学拥有的地址多。IPv6凭借充足的网络地址和广阔的创新空间,已经成为实现万物互联,促进生产生活数字化、网络化、智能化发展的关键要素,为我国网络设施升级、技术产业创新、经济社会发展提供了重大契机。 2019年4月,工信部发布《关于开展2019年IPv6网络就绪专项行动的通知》,以全面提升IPv6用户渗透率和网络流量为出发点,就推动下一代互联网网络就绪提出主要目标、任务举措和保障措施,持续推进IPv6在网络各环节的部署和应用[1] 。所以喊了这么多年的IPv6,这一次它真的来了。

随着IPv6地址使用的普及,安全漏洞和网络攻击也定会随之而来。所以IPv6地址的应用同样面临着资产管理和网络安全等方面的挑战。网络地址扫描是资产信息收集和漏洞发现的前提和手段。相比IPv4的32位地址,IPv6地址长度增加到128位,具有巨大的地址空间,而且在地址表示、地址配置等方面均有显著不同。因此,传统的地址扫描方法无法完全适用于IPv6网络,所以能够对IPv6资产和服务准确的扫描测绘,对于网络安全具有着重要的意义。

二、IPv6扫描的困难性

目前IPv6资产扫描还是比较困难的,主要有以下原因:IPv6地址数量是IPv4的2^96倍,有人做了个比喻,IPv6地址空间可以为地球上每一粒沙子分配一个IP,而且还有剩余。从这个地址量级来看,如果像IPv4资产的发现方式,通过对全网段扫描来发现IPv6资产,从时间和资源上都是不切实际的。此外,目前IPv6地址使用的实际数量较少,并且地址分布的随机性较大,这无形增加了扫描难度。当然,IPv6的地址扫描也并非是无从下手,本文接下来就分享IPv6地址分类扫描的实践过程以及扫描思路。

三、常见IPv6地址分类

IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。常用冒分十六进制法表示IPv6地址,格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示。例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中“::”只能出现一次。根据不同的生成策略,常见的IPv6地址有以下几类[2] [3] 。

1 低位地址

在某些情况下,节点的地址需要手动配置,例如路由器和服务器的地址,出于配置简单和容易记忆的考虑,通常会选择一些低位地址,即地址除了最后几位,其它地址位都是0。所以这部分IPv6地址的特征是前面的地址为一致,只有地址的最后几位随机分布。

图1 低位地址随机的IPv6地址

2 部分位随机的地址

部分位随机的IPv6地址和低位地址类似,只不过并不是低位随机,而是地址中的特定的几位呈随机分布。

图2 部分位随机的IPv6地址

3 内嵌MAC地址

内嵌MAC地址又称为EUI-64地址,是通过设备MAC地址产生的,首先在48位的MAC地址的中间位置,插入十六进制数FFFE,并且要U/L(Universal/Local)位(从高位开始的第7位)设置为1[1], 最后得到的就是64位EUI-64格式地址。这类地址的主要特征是地址中包含FFFE字符[4] 。

具体的转换过程如下图所示:

图3 MAC地址嵌入型生产过程

图4 MAC地址嵌入的IPv6地址

当然除了这些分类以外,还有端口嵌入地址、内嵌IPv4地址、临时地址、IPv6过渡地址等等,感兴趣可以查阅相关资产进一步了解,在这里就不过多介绍。

四、IPv6地址扫描实践

上文我们提到了IPv6地址分布有一定特性,比如部分地址位随机、MAC地址嵌入等等,我们可以利用这些分布特性,加入一些扫描范围或限制条件,来降低需要扫描的IPv6地址扫描地址空间。

接下来对上面的扫描思路进行测试,扫描测试使用的是开源的IPv6扫描插件Scan6[5] [6] ,Scan6是IPv6地址扫描的工具,它是SI6 Networks IPv6工具包的一部分,包括了一些高级IPv6地址扫描方法。测试的数据源来自于开源的Hitlist[7] 存活的IPv6地址集合。

1 低位地址扫描

低位IPv6地址扫描和IPv4的扫描类似,除了地址的后几个字节,其他位均为0,所以只需扫描对应的地址段就可以发现这些地址。

扫描命令:scan6 -i eth0 -d ****:ff40:8::0000/112,其中参数-i是选择扫描使用的网卡,参数-d是选择扫描的地址段,掩码/112共有65535个地址,扫描这个数量的地址耗时约5分钟,共发现15个存活地址。

2 部分地址位随机扫描

如果地址随机位不在末端的部分位随机的IPv6地址,Scan6可以使用十六进制的区间来表示要扫描的地址范围,实现的效果只遍历扫描指定位地址,其它位的地址不变。

扫描命令:scan6 -i eth0 -d ****:983:0-3000::1,其中这个0-3000指的只扫描遍历范围所在位,扫描范围是16进制0-3000,也就是12288个地址。如下图所示,共用了约1分钟完成扫描,发现3853个存活的IPv6地址。

3 内嵌MAC的地址扫描

MAC地址由两部分组成,前24位是厂商的ID,由美国电气和电子工程师协会(IEEE,全称是Institute of Electrical and Electronics Engineers)唯一分配,后24位厂商的扩展ID由厂商自己编制,组合产生全球唯一的48位MAC地址(也称IEEE 802地址),可以通过IEEE官网数据,来查询厂商对应的MAC地址前24位的厂商ID,具体信息格式如下图所示。

图5 MAC地址与厂商的对应信息

利用MAC地址嵌入的生成规则,以及IEEE提供的厂商ID对照表,就可以通过扫描指定IPv6址区间内某个厂商的地址来缩小扫描范围,进而缩短扫描时间。以H智能设备厂商MAC ID “BCAD28”为例,选取了一个有MAC地址嵌入资产存活的网段,做了如下扫描测试。

扫描命令:scan6 -i eth0 -d ****:****:5491:0:0000:0000:0000:0000/64 -K " **** Technology Co.,Ltd." 参数-K是厂商名称,表示只扫描配配置文件对应厂商的MAC地址段生成的IPv6地址。

扫描网段掩码/64,扫描耗时约19个小时完成扫描,虽然只发现1个存活地址,但是初步可以证明,增加厂商参数扫描MAC嵌入型地址是可行的。因为提供了6位厂商MAC ID以及4位的FFFE,扫描的随机的地址位从16位下降到6位,要扫描的地址数量就从2^64-1个下降到2^18-1,所以大大缩短了扫描时长。此外,MAC嵌入型的地址扫描,还有助于发现物联网设备的IPv6地址。通过输入物联网智能设备厂商的MAC,扫描存活地址大概率就是物联网设备。或者通过提取MAC嵌入地址中的MAC地址,并匹配厂商信息,有助于对资产的设备类型进行识别。

五、IPv6资产扫描思路

上文中简单介绍了IPv6的地址分类,并且做了扫描测试,初步得出通过地址分布特征来缩小IPv6地址扫描范围的方法来扫描存活资产是可行的。不难看出,IPv6的地址扫描过要比IPv4的全网扫描那种模式复杂的多,IPv6需要持续完善扫描的各个环节,简单整理IPv6地址扫描运营思路,如下图所示:

图6 IPv6地址扫描运营思路

1 地址收集

我们已经知道盲扫IPv6是不现实的,所以第一步我们需要收集可能存活的地址或者网段,明确扫描范围。这个数据来源可以是开源的数据集、IPv6 DNS服务器、公网流量中获取等等。

2 地址分类与扫描

地址集合积累到一定数量后,根据上文提到的地址分布特征进行分类,并且使用对应策略的扫描组件扩展扫描对应特征的地址段存活的IPv6地址。其次还需要寻找没有被分类的地址或地址段的特征,对地址分类的种类需要持续更新。

3 扫描地址集更新

扫描地址集合需要不断更新,一方面是通过扫描的存活结果进行更新,还有就是持续增加新的地址数据源。通过持续运营来积累更多的IPv6存活地址。

六、总结

上文介绍的利用地址分布特性的扫描方法,确实能大大缩小扫描的范围,但缺点也是十分明显的。一方面,需要提供存活地址或网段并且不断更新;其次,这种方法并不能发现那些无规律随机分布的地址。当然还有一些其他的方式来发现IPv6地址,比如Cisco博客中提到了通过UPnP服务发现IPv6地址,在我之前写的微信文章也提到过[8] 。此外,还有DNS反向映射获取、公网流量获取、抽样扫描等方法等等。目前,虽然IPv6地址扫描可能还没有一个完美的扫描方法,但可以将主动扫描和被动流量获取等多种发现方法相结合,通过持续的运营,来不断的积累更多存活的IPv6地址。想了解更多的IPv6资产分析相关的内容,敬请期待我们绿盟科技《2019年物联网安全年报》。

参考链接:

[1] IPv6网络就绪专项行动: http://www.cnii.com.cn/wlkb/rmydb/content/2019-10/24/content_2191350.htm

[2] 理解IPv6的地址分类https://yq.aliyun.com/articles/407098

[3] IPv6地址扫描技术的研究与应用 刘林波

[4] EUI-64格式生成https://blog.csdn.net/nbvnvnvbn/article/details/97902155

[5] Scan6使用文档 https://www.si6networks.com/tools/ipv6toolkit/scan6-manual.pdf

[6] Scan6 https://github.com/fgont/ipv6toolkit/blob/master/tools/scan6.c

[7] IPv6 Hiltlist https://ipv6hitlist.github.io/

[8] 威胁狩猎告别"刻舟求剑"——物联网资产变化研究https://mp.weixin.qq.com/s/WBToOU72OrxPUlba9RcKMA

声明:本文来自绿盟科技研究通讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。