WU Yijie,LI Mingyang,WANG Jiahe,et al.Research on IPv6 address configuration strategy and deployment rule[J].Journal of Shenzhen University Science and Engineering,2020,37(Suppl.1):13-19.[doi:10.3724/SP.J.1249.2020.99013]
1)东南大学网络空间学院,江苏南京 211189; 2)网络空间国际治理研究基地(东南大学),江苏南京 211189
1)School of Cyber Science and Engineering, Southeast University, Nanjing 211189, Jiangsu Province, P.R.China2)Research Base of International Cyberspace Governance(Southeast University), Nanjing 211189, Jiangsu Province, P.R.China
computer network; IPv6; IPv6 address configuration policy; IPv6 address scanning
DOI: 10.3724/SP.J.1249.2020.99013
备注
随着IPv6网络部署的不断推进,IPv6带来的安全问题也日益严重. 为了能充分了解IPv6空间所存在的安全漏洞和风险,对IPv6地址特别是服务器地址进行探测扫描是必要的步骤. 由于IPv6相对于IPv4地址空间有了极大的扩充,传统的扫描方式不再适用,对IPv6的扫描研究也缺少较为有效的方式. 为此,基于被动流量采集方式收集了IPv6地址数据集,并根据该数据集探究了IPv6地址部署的规律. 通过探究不同地址配置方式导致地址不同特征,将地址进行筛选分类,对不同类型的地址进行数据统计及分析,并给出了当前教育网不同地址配置方式的部署规律,有助于更好地扫描IPv6地址.
With the advancement of the deployment of IPv6 networks, the security problems brought by IPv6 have become increasingly serious. In order to fully understand the security vulnerabilities and risks existing in the IPv6 space, it is necessary to detect and scan IPv6 addresses, especially server addresses. As IPv6 has greatly expanded the address space compared with IPv4, the traditional scanning method is no longer applicable, and the current research on scanning of IPv6 lacks an effective method. In this paper, we collect an IPv6 address data set based on passive traffic collection, and explore the rules of IPv6 address deployment using this data set. By exploring the different characteristics of addresses caused by different address configuration methods, we filter and classify addresses, perform statistics and analysis on different types of addresses, and give the current education network deployment rules for different address configuration methods, which will help the IPv6 address scanning work to be carried out better.
引言
自2017年中共中央办公厅、国务院办公厅印发《推进互联网协议第六版(IPv6)规模部署行动计划》以来,IPv6网络的建设正不断推进之中. 含有IPv6地址且在IPv6网络中提供服务接口的服务器数量增速迅猛. 谷歌报告称,截止2020年1月,超过30%的用户通过IPv6访问了他们的服务,这一数据在过去五年中每一年都翻了一番(图1).
IPv6网络的部署,逐步解决了IPv4地址空间不足的问题,但与此同时,IPv6部署带来的一系列安全问题引起了广泛的关注. 例如,在新的IPv6部署中,通常会看到IPv6流量已启用,但没有为IPv6设备访问启用任何典型的访问控制机制.
在大规模网络中对于这些安全问题进行研究,首先要对IPv6地址进行有效的探测以及对于双栈主机进行IPv4及IPv6地址的映射. 本研究通过对现有IPv6地址进行筛选分类,然后研究不同类型IPv6地址的配置策略与部署规律,以期探讨出对扫描有帮助的结果.
1 IPv6地址配置
IPv6包含两种自动地址配置策略:无状态地址自动配置(SLAAC)[1]和用于IPv6的动态主机配置协议[2]. 其中,对SLAAC的自动地址配置支持是强制性的,而对DHCPv6的支持是可选的,但实际部署中,大多数最新的通用操作系统都支持这两种地址配置策略. 除了自动地址配置以外,主机(通常是服务器)还可以采用手动配置策略.
1.1 无状态地址自动配置SLAAC的基本思想是,每个加入网络的主机都将发送多播请求,以请求网络配置信息,而本地路由器将响应该请求,以提供必要的信息. 主机在收到广播信息后,对于从路由器广播消息中获悉的每个本地前缀,通过将本地生成的接口标识符(IID)附加到相应的IPv6前缀来配置IPv6地址.
传统的IID通过主机网卡的MAC地址生成. 例如:主机网卡MAC地址为00:1b:38:83:88:3c, 对应的IID为021b:38ff:fe83:883c. 其中, 插入的ff:fe是其典型特征.
1.2 动态主机配置DHCPv6服务中,地址是根据预先配置定义的地址范围和策略分配的,某些DHCPv6服务器从特定范围按顺序分配地址. 在这种情况下,搜索空间将从原来的64位减少至8到16位. 但在RFC 5157文档[3]和RFC 7707文档[4]中先后建议改为从大型地址池中随机发布地址. 在RFC 3315文档[5]中指定了一种算法,DHCPv6服务器可以使用该算法来生成稳定的地址,该地址不遵循任何特定的模式,从而导致64位的IID搜索空间.
目前研究中,实现了对于顺序分配IPv6地址的探测,而针对RFC 3315文档2方法分配的主机,尚未找到有效方法进行探测,未来我们尝试对这种情况进行研究.
1.3 手动地址配置对于手动地址配置方式配置的IPv6地址,没有固定的配置方法,但在NDSS中的一篇文献[5]和RFC 7707文档[4]对网络管理员常用的配置方法进行了总结,包括:低比特位分配(高比特固定)、基于IPv4的地址分配(通过IPv4地址生成IID),基于服务端口的地址配置(通过服务端口生成IID)、基于单词的地址配置(将有一定意义的单词嵌入到IID中,如2001:db8::good:seu)等. 本研究参照这些方法,对手动方式配置的地址进行探测.
1.4 研究意义IPv6虽然在安全性上可以利用巨大的地址空间来降低主机被发现的可能性,但IPv6协议本身仍存在安全漏洞,而且对于IPv6网络的攻击也逐渐变多. 通过研究IPv6的地址扫描技术,有助于对现有的IPv6服务进行渗透测试与安全评估,进一步发现未知的安全漏洞.
然而,截止目前,现有的扫描算法与工具依然不可能对一个完整的IPv6网络在有限的时间内准确地发现其中的所有设备,不同的地址生成方式也在地址类型上加大了IPv6扫描的难度. 本研究将有助于减小IPv6扫描的难度,对于IPv6网络安全具有重要的意义.
2 IPv6地址类型筛选
3 IPv6地址部署规律
4 结 语
通过分析教育网内采集到的IPv6地址数据,探究多种可识别IPv6编址方式在实际网络环境中的占比及相应的编址规律,以期能将相关结果用于生成高命中率的IPv6地址数据集,最终实现IPv6协议下网络中的活跃地址发现及网络扫描.
基于RFC 7707文档[4]中枚举的IPv6地址编址方式,从中筛选出有规律的地址数量在数据集中总占比达到三成,从中探究的规律为IPv6地址生成提供了可行的思路. 基于本文分析结果生成相应地址数据,能够降低发现活跃的非随机编址地址的开销,提高IPv6网络扫描及安全性分析的可行性.
利用前面筛选出来的数据结果,先总体分析各种类型地址的占比,再分别探究各种类型地址分布的特点.
3.1 数据处理与总体情况在第2节中,每次筛选的地址都会被打上标签,例如匹配为低字节地址的,该地址的标签就会刷新,然后通过统计各个地址的标签,就能看到地址部署的总体分布情况. 在14 031 371条数据里,以SLAAC方式生成的地址有45 545条,以DHCPv6方式生成的地址有3 878 083条,以低字节方式生成的地址有3 337 979条,IPv4、端口、字典方式分别有1 347、8 275和17 171条. IPv6地址部署分布情况见图2.其中存在多标签的情况. 例如以端口方式生成的地址,或是以IPv4方式生成的地址,由于其自身的特点,也可能会被筛选为低字节地址.
3.2 部署规律3.2.1 SLAAC地址部署规律SLAAC编址由前缀及EUI-64组合并进行简单转换完成,本文中针对识别出的SLAAC编址方式的地址进行统计分析,根据EUI-64中所隐含的OUI信息,查找对应的设备产商. 通过统计分析,我们发现,可识别的SLAAC方式编址地址,主要聚集在几个大型设备厂商,如Apple、Huawei、Oppo和Intel等,不同厂商OUI占比情况如表1.
针对SLAAC编址方式,本研究提出通过枚举占总设备数前6的设备厂商的OUI来生成新地址的思路. 通过精准生成OUI,使得OUI相关的32位搜索空间降低到相关设备厂商拥有的OUI数,大大降低了地址发现所需的搜索空间.
3.2.2 DHCPv6地址部署规律以DHCPv6方式生成的地址有3878083条,在数据集中占比27.639%,在非随机地址中占比相对较高. 地址大多都同时具有低字节地址的标签.
本研究选取了7组DHCPv6地址,每组内部所有的地址前112 bit都相同. 研究每组内部相邻地址之间的差值,发现数值都很相近,计算它们的均值(图3).
均值也等于每组首尾地址网段值之差除以该组地址总数,这7组里每组首尾地址之差一般为6万多,因为首地址的最后一段网段值多为0001~000a,尾地址多为ffee~fffd.
由图3可见,相邻地址的差是很接近的. 这7组数据量都在一万条以上,如果去探讨一组只有几百条的数据,会发现这些数据相邻地址的差值也是很相近的. 对于它们数量较少的原因,推测有两种可能性:一是相邻地址的差值较大,分布稀疏,故而数量就少; 二是样本集在采集过程中,遗漏了很多相邻地址数据.
以上现象表明DHCPv6配置过程中,倾向于均匀分布. 这就启示我们可以利用地址密度去研究生成和扫描DHCPv6地址.
3.2.3 端口地址部署规律在14 031 371条IPv6地址中,筛选出来的以端口地址部署的IPv6地址共有8 275个. 由于端口地址的匹配规则相对严格,因此该数量大致符合预期结果. 筛选的端口主要是22、23、53、80和443等常见端口. 从筛选结果看,以22、23和21端口部署的IPv6地址数目分别占端口地址数目的前3位,其占比分别为12.27%、11.88%和11.69%.
然而,同预期结果不同的是,对于443端口等热门端口,在实际的扫描过程中并未发现以其端口号部署的地址. 也就是说,并非使用率最多的端口在端口地址中的占比最高,某端口号的使用率与端口地址中以其为端口号部署的地址数并不存在线性关系. 以下是各端口号在端口地址总数中的占比.
因此,在扫描过程中,可以着重将扫描的端口地址对象确定于图中的占比较高的端口,例如21、22和23端口等.
同时可以看出,端口地址的部署中,数字较小的端口(0~100)出现频率相对较高,而对于其余较大的端口,出现频率较小,甚至443端口编址的数目为0. 因此在实际扫描过程中,真正需要扫描的部分集中在小端口区域(0~100),这使得端口扫描实际需要的搜索空间并不大.
3.2.4 字典地址部署规律对于基于常见英文单词部署的IPv6地址,其特征性往往极强,例如数据集中2001:da8:1035:1::16:cad与2001:da8:1035:1::12:cad在形式上非常相似,因为该类字典部署是属于人工手动部署的一类,通常会以压缩形式出现以方便设置. 绝大多数该类部署会将选择的单词放置在地址的最后一段,并以累加的形式修改第2段,以快速生成类似形式的IPv6地址. 分析中,发现初步筛选的字典部署类型IPv6地址中存在仅中间偶然出现符合字典的地址,但整体形式不应纳入字典部署的例外. 根据该情况,应对上述筛选方案进行进一步调整,不仅应该判定地址中出现常见的英语单词,更应该考虑到形式上的合理性.
进一步,针对网络上常见的用语,例如经典的elite通过谐音转变为leet,再通过简单的形变,生成1337形式. 该情况可能存在于利用含有有非a~f的字母的单词,生成字典库内没有涉及的IPv6地址. 通过自由度较高的人工设置表示形式,使得字典库内不能只考虑英文单词,而应该不断扩充其他可能性选项.
对于数据集中筛选出来的该类地址,每种单词的出现频率大致相似,受限于人工生成,整体数量偏少. 但该类地址对于DHCPv6以及低字节筛选结果的准确性影响是明显的. 在后续的地址具体形式确认中理应具备较高的决定优先级.
3.2.5 IPv4地址与低字节地址最后扫出的以IPv4地址部署的IPv6地址有1347个,显然对于一千四百多万条数据来说占比是非常小的. 由于内网IPv4地址在172、192等几个网络聚集出现,也能够通过相应模式降低地址搜索空间,提高生成地址命中率.
在我们的扫描中,低字节地址的总数为3337979. 在查看结果的过程中,可以发现低字节地址中顺序排布的情况较多,也就是类似于DHCPv6的格式.
因此,可推断扫描出的低字节地址中存在不少的DHCPv6地址,低字节地址的匹配模式得出的地址实际上是与DHCPv6地址存在较多重合的. 若要进一步细分,我们可以将低字节地址中存在DHCPv6地址特征的数据归类于DHCPv6地址.
- [1] THOMSON S, NARTEN T, Jinmei T. IPv6 stateless address autoconfiguration[EB/OL].(2007- 09- 01). https://www.rfc-editor.org/info/rfc4862.
- [2] DROMS R, BOUND J, VOLZ B, et al. Dynamic host configuration protocol for IPv6(DHCPv6)[EB/OL].(2003- 07- 01). https://www.rfc-editor.org/info/rfc3315.
- [3] CHOWN T. IPv6 Implications for Network Scanning[EB/OL].(2008- 03- 01). https://www.rfc-editor.org/info/rfc5157.
- [4] GONT F, CHOWN T. Network Reconnaissance in IPv6 Networks[EB/OL].(2006- 03- 01). https://www.rfc-editor.org/info/rfc7707.
- [5] CZYZ J, LUCKIE M, ALLMAN M, et al. Don't forget to lock the back door! a characterization of IPv6 network security policy[C]// Network & Distributed System Security Symposium,[S.l.:s.n.]:2016.
介绍对IPv6地址进行类型筛选的过程. 探究规律最重要的一步就是筛选出因IPv6不同的地址配置策略产生的IP地址,将同一配置策略产生的地址归类到一起,然后再探究其中的规律.
2.1 样本集实验样本集为在CERNET华东北地区网络中心节点采集到的IPv6地址数据,共计14 031 371条. IP地址的生成方式也包含常见的人工生成与自动(非人工)生成.
2.2 数据预处理过程为了更方便地进行之后的筛选工作,提前对样本集进行字典序的预处理. 同时,为方便统一处理,对具有压缩形式的IPv6地址进行格式化处理. 例如地址2001:da8::2:1015将被格式化为2001:0da8:0000:0000:0000:0000:0002:1015.
生成待筛选的数据集后,重新更新数据库内IP信息,以备后续使用.
样本集准备好后,开始根据不同的配置策略进行筛选. 以下所有筛选最终结果都导入至SQL数据库中.
2.2.1 SLAAC筛选SLAAC类型的IPv6地址中很大一部分是基于MAC地址产生. 例如对于00:1B:38:83:88:3C这样一个MAC地址,在第3和第4字节之间插入FF:FE,形成EUI-64地址,再对其U位取反,得到02:1B:38:FF:FE:83:88:3C, 再使用该网段的链路本地前缀,如FE80::/10, 最后即可生成新的IPv6地址FE80::021B:38FF:FE83:883C/10. 据此,可以反向复原获得其中的MAC地址,提取其中的OUI,与网上的OUI数据集进行匹配判别.
算法1 通过OUI 判定地址是否由 MAC 地址生成.算法如下.
输入: result: 存放判定结果, 值为 即判定该地址为以 MAC 地址生成, 反之则不为以 MAC 地址生成, OUI[]: OUI 查找函数, 通过OUI 判定是否为 MAC 地址, IpAddress[]: 待测试的 Ip 数组, 以字符串的形式存放, HEX(): 字符串转为十六进制整数值,
输出: 判定结果
1: function Macjudge(IpAddress[7])
2: TestOui←HEX(IpAddress[4][0:2])xor2+“:”+“:”+IpAdd
3: result←OUI(TestOui)
4: return result
5:end function
第2类是大多数的虚拟机,这类IID的生成与之前的MAC类似. 主流的虚拟机,如VirtualBox、VMware ESX Server和VMware Sphere都拥有各自的OUI,可以很轻松地筛选出来,如VirtualBox的OUI 08:00:27等.
算法2 通过标识符判定地址是否由 MAC 地址生成.算法如下.
输入: result: 存放判定结果, 值为 即判定该地址为以 MAC 地址生成, 反之则不为以 MAC 地址生成, IpAddress[]: 待测试的 Ip 数组, 以字符串的形式存放,
输出: 判定结果
1: function Macjudge(IpAddress[7])
2: Flag←IpAddress[5][2:2]+IpAddress[6][0:2]
3: result←Flag==“FFFE”
4: return result
5:end function
第3类是筛选较为麻烦的临时随机生成的地址,该类地址缺少特征,模式随机,用于客户端模式对外发起的连接,不影响本地IEEE IID地址作为服务端模式.
第4类是固定语义模糊地址,据RFC 4941文档[6]的描述,微软采用该生成方式,其IID生成后将不在改变,可以用于追踪主机.
第5类是稳定语义模糊地址,根据协议RFC 7217文档[7],其IID在每个子网内部固定,但在不同子网内,每个主机的IID会改变,这样相较于第四类可以更好地保护隐私.
本研究重点探讨第1、2类地址,因为其不确定的地址空间位数较少,能够在可接受时间范围内扫描.
2.2.2 DHCPv6筛选DHCPv6的筛选工作存在两个难题:一是顺序生成的间隔不确定; 二是它的规律不在于地址自身,需要将当前地址与所有地址进行比较,直接筛选复杂度就达到O(N2).
因此,要绕开这两个难题,需要转换思路. 对样本集有两步操作:一是切分文件为N个小文件; 二是将样本集按照掩码112(7个网段)统计,得出网络地址掩码下的地址总数、开始地址和结束地址.
算法3 判定地址的生成方式是否为DHCPv6.算法如下.
输入: result: 存放筛选出的DHCPv6地址, IpAddress: 待测试的 IP 集合, 以字符串数组的形式存放. MaskSet: 存放前七段相同的掩码起止及数量. Ω: 判定参数, MaskSet.Count≥Ω时判定该掩码下的IPv6地址生成方式为DHCPv6.
结构:
1:Class Mask
2: Begin
3: End
4: Count
5:End Class
输出: 判定结果
1:function DHCPv6judge(IpAddress, MaskSet)
2: for ip in IpAddress then
3: if ip>MaskSet[i].End then
4: i++
5: if ip≥MaskSet[i]Beain&&
ip≤MaskSet[i].End&&
MaskSet[i]Count≥Ω then
6: result.push(ip)
7:end function
以上工作完成后,就可以进行筛选. 找出了所有地址数大于Ω的掩码,然后根据其开始地址去匹配N个数据文件,可以直接筛选出目标地址.
此筛选办法并非能够将所有的DHCPv6地址筛选出来,因为种种原因会遗漏一些零星的地址数据,但因为本身数据量足够大,而且本身筛选是为了寻求其中的规律,这些遗漏的地址完全可忽略.
2.2.3 人工分配筛选人工分配的地址有多种情形,筛选的方法需要分别介绍.
1)低字节地址. 最常见的低字节类型编址就是IP除了最低字节以外都置为0,如2001:db8::1, 或者两个地位16比特字都是较小的数字的IP,如2001::db8::1:10. 因此,只需匹配前置均为0的IP地址的倒数第2个16比特字的大小在0x0000到0x00ff之间,同时最低的16比特字在0x0000到0xffff之间,即可找出所有的低字节地址. 需要注意的是,所有满足这种匹配模式的都可以归类于低字节地址.
2)基于IPv4地址. 该编址方式的最大特征是IPv6地址的IID中包含着IPv4地址,位于IPv6地址的最后4个网段,例如2001:db8::192.0.2.1. 也就是说,IPv6地址的倒数64位为一个IPv4地址.由于IPv4地址的每个网段的最大值都是28-1,因此,提取IPv6地址的最后4个网段,对每个网段,大小都在28以内即可判断为基于IPv4的地址.
3)基于服务器端口地址. 该种编址方式的特点是地址中最低位包含常见的服务器端口号,例如HTTP协议的80端口,同时其它比特置为0. 最低16比特字和次低16比特字,有一者是端口号,另一者是在0x0000到0x00ff之间的数字. 例如2001:db8::1:80和2001:db8::80:1. 另外,端口号也可以十进制的形式存储. 例如2001:db8::50. 由于50的16进制是80,该地址就是10进制形式的80端口号编址.
因此,通过将常见端口号及其十进制形式与前置位比特全0的IP地址的最低、次低16比特字进行比较即可进行筛选.
算法4 判断地址是否由低字节、IPv4或端口生成.算法如下.
输入: result: 存放判定结果, 值为1即判定该地址生成方式为基于低地址,为2判定为基于Ipv4,为3即判定为基于服务器端口,为0则判定为未知生成方式, EHX():字符串转为十六进制整数值, DEC(): 字符串转为十进制整数值, port(): 判定该端口是否为常见端口, 是则返回1,不是则返回0, IpAddress[]: 待测试的 Ip 数组, 以字符串的形式存放.
输出: 判定结果
1: function LowbyteOrIpv4OrPortjudge(IpAddress[7])
2: result←0
3: DecFout←DEC(IpAddress[4])
4: DecFive←DEC(IpAddress[5])
5: DecSix←DEC(IpAddress[6])
6: DecSeven←DEC(IpAddress[7])
7: DecSix←DEC(IpAddress[6])
8: HexSeven←HEX(IpAddress[7])
9: if DecFour==0&& DecFive==0
&& HexSix≤0 xFF
&& HexSeven≤0 xFFFF then
10: result←1
11: if 0<DecFour<127&& 0≤DecFifth≤255 && DecSixth then
12: result←1
13: if DecSix≤0xFF&&Port(DecSeven)then
14: result←1
15: else if HexSeven≤0xFF&&Port(DecSix)then
16: result←1
17: else if HexSix≤0xFF&&Port(DecSeven)then
18: result←1
19: end if
20: return result
21:end function6: if 00≤DecA≤ FF&&NormalPortCheck(DecB)then
22 result←1
23: else if 00≤DecB≤FF&&NormalPortCheck(DecA)then
24 result←1
25: else if 00≤HexA≤FF&&NormalPortCheck(HexB)then
26: result←1
27: end if
28: return result
29:end function
4)字典地址. 此编址方式的特点是地址中的最低及次低16比特字中包含英文单词. 例如2001:db8::bad:cafe.
对于这种编址方式,可以构造一个4字长以内的英文单词的词典,将词典中的数据与地址中的最低及次低16比特字进行比较即可. 但同时需要注意的是,这种匹配模式筛选出来的地址有可能与DHCPv6编址的地址存在冲突.
期刊信息
深圳大学学报理工版
JOURNAL OF SHENZHEN UNIVERSITY SCIENCE AND ENGINEERING
(1984年创刊 双月刊)
主 管 深圳大学
主 办 深圳大学
编辑出版 深圳大学学报理工版编辑部
主 编 李清泉
国内发行 深圳市邮电局
国外发行 中国国际图书贸易集团有限公司(北京399信箱)
地 址 北京东黄城根北街16号
邮 编 100717
电 话 0755-26732266
0755-26538306
Email journal@szu.edu.cn
标准刊号 ISSN 1000-2618
CN 44-1401/N