一种ipv6解析器关联发现方法及系统
技术领域
1.本发明涉及计算机技术领域,具体涉及一种ipv6解析器关联发现方法及系统。
背景技术:2.域名系统(domain name system,简称dns)是一种分布式网络目录服务,主要用于进行域名与ip地址之间的相互映射,承载了互联网上大多数应用的寻址需要。其主要结构包括客户端、解析器以及权威域名服务器。权威域名服务器存储着域名的解析记录,采用由顶向下的分级结构,域名的每一级由ns记录所指定的服务器负责解析,是域名的记事簿。并且,不同类型的记录作用也不同,例如a记录(ipv4地址)、aaaa记录(ipv6地址)以及ns记录(权威域名服务器)。而解析器作为客户端与服务器之间重要的中间组成,是十分重要的网络基础设施。
3.与此同时,1996年,互联网工程任务组(the internet engineering task force,简称ietf)设计了ipv6(internet protocol version 6,互联网协议第6版)用于替代ipv4协议解决地址短缺的问题,其地址数量号称可以为全世界的每一粒沙子编上一个地址。这极大促进了上层各种互联网应用的快速发展,包括dns。
4.而从网络空间安全的角度来看,对不同的应用服务进行测绘形成资源地图从而维护网络空间的安全发展已经是近年来行业的共识,而dns服务也是其中热门的关注点。然而,由于ipv6全空间地址数量是ipv4的296倍,传统的基于ipv4网络环境的dns服务探测技术需要大约50万年才能完成全地址空间的扫描,使得这些方法已近乎失效。
5.因此,急需要一种新的探测方法来提高针对ipv6解析器的测绘效率。
技术实现要素:6.本发明的目标在于提供一种在dns协议下利用ipv4解析器来关联发现ipv6解析器的探测方法及系统,通过收集发现难度较低的ipv4 dns解析器,从而关联发现ipv6 dns解析器,能够在降低发现难度的同时提高结果的准确性。
7.为达到上述目的,本发明采用如下技术方案:
8.一种ipv6解析器关联发现方法,其步骤包括:
9.1)自建dns服务端,建立新域名,并配置其二级子域名的解析记录,同时在自建的dns服务端进行二级子域名记录的配置;
10.2)利用ipv4的探测工具收集ipv4解析器;
11.3)从dns客户端向收集到的ipv4解析器发送步骤1)中已配置的二级子域名的查询请求探针,ipv4解析器将该请求转发到上游的ipv6解析器;
12.4)在自建的dns服务端收集所有查询请求的源ip地址,如果为ipv6地址,则为ipv6解析器。
13.优选地,步骤1)中所述解析记录包括ns记录以及该ns记录所指向域名的aaaa记录,该aaaa记录对应自建的dns服务端的ipv6地址。
14.优选地,步骤1)中使用bind9或unbind框架或者使用编程语言,自建dns服务端。
15.优选地,步骤2)中所述探测工具选用zmap或masscan。
16.优选地,步骤2)中收集到的ipv4解析器为开放有53端口并可正常返回域名记录的ipv4主机。
17.优选地,步骤3)中dns客户端选用dig或nslookup。
18.优选地,步骤3)中查询请求的类型与步骤1)中在自建dns服务端所配置的记录类型保持一致。
19.优选地,所述记录类型为aaaa记录。
20.优选地,步骤4)中在自建的dns服务端,利用工具抓包或者内部程序处理,收集所有查询请求的源ip地址。
21.优选地,所述工具选用wireshark或tcpdump。
22.一种ipv6解析器关联发现系统,用于实现上述ipv6解析器关联发现方法,其包括基于域名系统的dns客户端和自建的dns服务端,以及ipv4的探测工具;其中:
23.自建的dns服务端,用于配置在域名系统新建的新域名的二级子域名的解析记录,并配置二级子域名记录,以及收集所有查询请求的源ip地址并识别出ipv6解析器;
24.ipv4的探测工具,用于收集域名系统的ipv4解析器;
25.dns客户端,用于向收集到的ipv4解析器发送已配置的二级子域名的查询请求探针,并通过域名系统的ipv4解析器将该请求转发到上游的ipv6解析器。
26.本发明方法的处理过程分为跨ip栈域名解析过程构建以及解析器发现模型构建两步。首先,第一步需要在一个可以自定义域名记录的域名进行配置,结果使得当一个ipv4解析器需要完成解析时,必须要借助ipv6解析器才可以完成,即跨ip栈域名解析过程构建;第二步则是在自建的dns服务端对于dns请求进行记录并返回配置的结果,即解析器发现模型的构建。本发明方法利用了dns的工作过程中解析器必须要与权威域名服务器通信以获取域名记录的原理,通过发送特定探针,保证自建的dns服务器端收集到的域名查询请求均来自于探针所触发的域名解析过程,排除其他外来因素影响。因此,自建服务器查询域名记录的ipv6主机必为ipv6 dns解析器。由此可见,本发明方法通过收集发现难度较低的ipv4 dns解析器,从而关联发现ipv6 dns解析器,能够在降低发现难度的同时提高结果的准确性。
附图说明
27.图1是本发明提出一种ipv6解析器关联发现方法及系统的处理流程图。
具体实施方式
28.为使本发明的上述特征和优点能更明显易懂,下文配合附图作详细说明如下。
29.图1所示为本发明提供的一种ipv6解析器关联发现方法及系统的处理流程图。该方法及系统基于可控的域名以及自建的dns服务,形成跨ip栈的域名解析过程;再对于活跃的ipv4解析器进行收集,形成输入数据集,在客户端将这些ipv4解析器作为目标解析器,发送关于已配置域名dns记录的查询请求,同时在服务端对所有dns查询请求的源ip地址进行收集,如果为ipv6地址则为ipv6解析器,从而完成了ipv6解析器的发现。
30.本发明提出的一种ipv6解析器关联发现系统,用于实现上述ipv6解析器关联发现方法,其包括基于域名系统的dns客户端和自建的dns服务端,以及ipv4的探测工具。
31.本发明提出的一种ipv6解析器关联发现方法,其主要步骤包括:
32.1)自建dns服务端,建立新域名,并配置其二级子域名的解析记录,同时在自建的dns服务端进行二级子域名记录的配置;
33.2)利用ipv4的探测工具收集ipv4解析器;
34.3)从dns客户端向收集到的ipv4解析器发送步骤1)中已配置的二级子域名的查询请求探针,ipv4解析器将该请求转发到上游的ipv6解析器;
35.4)在自建的dns服务端收集所有查询请求的源ip地址,如果为ipv6地址,则为ipv6解析器。
36.其中,步骤1)为构建跨ip栈的域名解析步骤,其具体步骤如下:
37.可以借助域名注册商或者域名解析服务提供商,建立一个域名,并配置二级子域名的域名解析记录,同时在自建dns服务端也进行二级子域名记录的配置。域名注册商可以是dnspod、godaddy、阿里云等;域名可以为任意的新域名;解析记录需要配置两条,一条二级子域名的ns记录,一条ns记录所指向域名的aaaa记录,该记录对应的ip地址是自建dns服务的ipv6地址。为了保证解析过程的完整,自建dns服务应当对该二级子域下的所有子域名返回一个固定的记录,例如aaaa记录。自建dns可以选择使用bind9、unbind等成熟的框架,也可以选择用编程语言自己实现。
38.步骤2)为ipv4解析器收集步骤,其具体步骤如下:
39.利用探测工具尽可能多地收集ipv4的解析器。探测工具可以选用zmap、masscan等;收集标准可以是所有开放了53端口并且可以正常返回常见域名记录的ipv4的主机。常见域名可以选择www.baidu.com、www.qq.com等。
40.步骤3)为将收集到的ipv4解析器作为目标解析器发送请求探针步骤,其具体步骤如下:
41.利用dns客户端工具向收集到的所有ipv4解析器发送请求探针,由于步骤1)中所配置的域名解析记录,ipv4解析器需要向一个ipv6的服务器进行查询,但这是不可能完成的。因此,ipv4解析器必须将请求转发到一个上游的ipv6解析器来完成这一过程,否则就会失败。dns客户端可以选择dig、nslookup等;请求查询的域名需要是步骤1)中配置的二级域名的子域名。请求的查询类型应当与在自建dns服务端所配置的记录类型保持一致,例如aaaa记录。
42.步骤4)为服务端信息收集步骤,其具体步骤如下:
43.在服务端对于所有的dns请求进行收集。根据步骤3)的结果,会存在着ipv6解析器向服务端查询,这些查询实际来自于ipv4解析器的转发。此时服务端就可以通过工具抓包或者内部程序处理获知这些ipv6解析器的ipv6地址,从而发现ipv6解析器。工具可以是wireshark、tcpdump等。
44.为使本发明的上述特征和优点能更明显易懂,下文举实施例说明。
45.实施例1
46.在godaddy注册域名testv4-v6.live,并配置两条dns记录,分别为:
47.v6.testv4-v6.live 21600in ns ns6.testv4-v6.live;
48.ns6.testv4-v6.live 21600in aaaa 2100:abcd::1;
49.在地址为2100:abcd::1的主机上使用bind部署dns服务,使用tcpdump监听所有dns请求。同时,配置一条泛域名的aaaa记录:
50.*.v6.testv4-v6.live 21600in aaaa 2100:abcd::2;
51.这意味着对于所有v6.testv4-v6.live下的子域名的aaaa记录查询,服务端都将返回一个ipv6地址。
52.利用zmap对于全球的ipv4地址进行扫描,收集符合53端口开放并且可以正常返回dns响应的ipv4地址,例如8.8.8.8。
53.使用dig,向8.8.8.8发送关于a1.v6.testv4-v6.live的aaaa记录查询。8.8.8.8将会寻找负责v6.testv4-v6.live解析的服务器为ns6.testv4-v6.live。而ns6.testv4-v6.live则只有一个aaaa记录,是一个ipv6地址,8.8.8.8无法直接查询。一个8.8.8.8关联的ipv6解析器地址为2608:c100::102,对于服务端而言,将会观察到来自该地址的对于a1.v6.testv4-v6.live的aaaa记录的查询请求,服务端的tcpdump将可以解析dns请求的源地址从而得到该地址,最终成功发现一个ipv6解析器。而服务端将会应答a1.v6.testv4-v6.live的aaaa记录为2100:abcd::2。
54.实施例2
55.在dnspod注册域名test46.live,并配置两条dns记录,分别为:
56.v6.test46.live 21600in ns ns6.test46.live;
57.ns6.test46.live 21600in aaaa 2008:abcd::101;
58.在地址为2008:abcd::101的主机上使用coredns部署dns服务,使用wirshark抓取所有dns请求。同时,在coredns中配置一条泛域名的a记录:
59.*.v6.test46.live 21600in a192.168.0.1;
60.这意味着对于所有v6.test46.live下的子域名的a记录查询,服务端都将返回一个ipv4地址。
61.利用masscan对于全球的ipv4地址进行扫描,收集符合53端口开放并且可以正常返回dns响应的ipv4地址,例如8.8.4.4.。
62.使用nslookup,向8.8.4.4发送关于b1.v6.test46.live的a记录查询。8.8.4.4将会发现负责v6.test46.live解析的服务器为ns6.test46.live。而ns6.test46.live则只有一个aaaa记录,是一个ipv6地址,8.8.4.4无法直接查询。一个8.8.4.4关联的ipv6解析器地址为2608:c100::107,对于服务端而言,将会观察到来自该地址的对于b1.v6.test46.live的a记录的查询请求,服务端的wireshark将可以解析dns请求的源地址从而得到该地址,最终成功发现一个ipv6解析器。而服务端将会应答b1.v6.test46.live的a记录为192.168.0.1。
63.虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域的普通技术人员对本发明的技术方案进行的适当修改或者等同替换,均应涵盖于本发明的保护范围内,本发明的保护范围以权利要求所限定者为准。