只要运营功夫深,大海也能捞到针——IPv6地址扫描实践分享
随着物联网、5G的发展,网络应用对IP地址的需求呈现爆炸式增长,IPv4地址空间早已分配枯竭,并且分配十分不均匀,美国占全球地址空间的一半左右,中国全国的IPv4地址加起来都没有美国一所大学拥有的地址多。IPv6凭借充足的网络地址和广阔的创新空间,已经成为实现万物互联,促进生产生活数字化、网络化、智能化发展的关键要素,为我国网络设施升级、技术产业创新、经济社会发展提供了重大契机。 2019年4月,工信部发布《关于开展2019年IPv6网络就绪专项行动的通知》,以全面提升IPv6用户渗透率和网络流量为出发点,就推动下一代互联网网络就绪提出主要目标、任务举措和保障措施,持续推进IPv6在网络各环节的部署和应用[1] 。所以喊了这么多年的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地址分布有一定特性,比如部分地址位随机、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可以使用十六进制的区间来表示要扫描的地址范围,实现的效果只遍历扫描指定位地址,其它位的地址不变。
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地址。
上文中简单介绍了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
格物实验室专注于工业互联网、物联网和车联网三大业务场景的安全研究。 致力于以场景为导向,智能设备为中心的漏洞挖掘、研究与安全分析,关注物联网资产、漏洞、威胁分析。目前已发布多篇研究报告,包括《物联网安全白皮书》、《物联网安全年报2017》、《物联网安全年报2018》、《国内物联网资产的暴露情况分析》、《智能设备安全分析手册》等。与产品团队联合推出绿盟物联网安全风控平台,定位运营商行业物联网卡的风险管控;推出固件安全检测平台,以便快速发现设备中可能存在的漏洞,以避免因弱口令、溢出等漏洞引起设备控制权限的泄露。
往期回顾
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。
关于我们
绿盟科技研究通讯由绿盟科技创新中心负责运营,绿盟科技创新中心是绿盟科技的前沿技术研究部门。包括云安全实验室、安全大数据分析实验室和物联网安全实验室。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。
绿盟科技创新中心作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。
我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。
长按上方二维码,即可关注我