通过域名注册控制目标所有io后缀的域名

本文涉及的产品
云解析 DNS,旗舰版 1个月
.cn 域名,1个 12个月
全局流量管理 GTM,标准版 1个月
简介: 本文讲的是通过域名注册控制目标所有io后缀的域名,在之前我写文章介绍了通过不同级别的DNS欺骗控制后缀为na,co.ao以及it.ao的域名,其中我们测试了顶级域名(TLD)的威胁模型,并且测试了攻击者实现这一攻击的方法。
本文讲的是 通过域名注册控制目标所有io后缀的域名在之前我写文章介绍了通过不同级别的DNS欺骗控制后缀为na,co.ao以及it.ao的域名,其中我们测试了顶级域名(TLD)的威胁模型,并且测试了攻击者实现这一攻击的方法。最简单的方法之一就是注册一个TLD权威名称服务器。攻击原理是TLD可以具有管理任意域名的名称服务器,可能因为某些原因,比如配置出现错误,或者域名过期,导致有人可以注册名称服务器的域名,并且达到对整个TLD区域的控制。


IO异常

周五晚上,我在使用自己写的脚本收集各种顶级域名的DNS代理情况时,发现后缀名为io的顶级域名有些不同:

通过域名注册控制目标所有io后缀的域名

这个脚本中有一个功能是你可以传递一个Gandi API密钥,然后它会自动检测在代理链中的名称服务器是否有可以被注册的域名。在上图中可以看到Gandi’s API返回了多个域名,不过这并不代表这些域名是可以进行购买的。因为之前遇到过这种情况,域名服务商显示此域名可用,不过并不可以进行购买,他会提示此域名处于保留状态。于是在它返回域名列表之后,以防万一,我对域名进行了访问,并且在NIC.IO中检测返回结果是否正确。在快速检测之后我惊讶的发现ns-a1.io是可以作为名称服务器进行注册的,注册费用是90美元,于是我对它进行购买,看看是否会成功,过了一会,我受到了一封邮件,显示域名购买服务正在进行:

通过域名注册控制目标所有io后缀的域名

不知道为什么我收到了域名为101domain.com的确认邮件,不过很显然io域名的注册甚至整个注册机制都是这个公司进行管理的。由于我购买的时候已经凌晨,下单之后就直接睡觉了,直到下一个周三下午我正准备去上班,一封邮件让我想起来我还在注册这个域名:

通过域名注册控制目标所有io后缀的域名

我发现已经注册成功,立刻检测了一下我是不是已经控制了io后缀的名称服务器中的一个,执行了dig命令,并且已经为ns-a1.io列出了我测试的DNS名称服务器:

bash-3.2$ dig NS ns-a1.io

; <<>> DiG 9.8.3-P1 <<>> NS ns-a1.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8052
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ns-a1.io.          IN  NS

;; ANSWER SECTION:
ns-a1.io.       86399   IN  NS  ns2.networkobservatory.com.
ns-a1.io.       86399   IN  NS  ns1.networkobservatory.com.

;; Query time: 4 msec
;; SERVER: 2604:5500:16:32f9:6238:e0ff:feb2:e7f8#53(2604:5500:16:32f9:6238:e0ff:feb2:e7f8)
;; WHEN: Wed Jul  5 08:46:44 2017
;; MSG SIZE  rcvd: 84

bash-3.2$

我查询了一个位于底层的DNS服务器,同样这个域名被列为io顶级域名的权威名称服务器,这就足够可以确定我们的猜想是正确的:

bash-3.2$ dig NS io. @k.root-servers.net.

; <<>> DiG 9.8.3-P1 <<>> NS io. @k.root-servers.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19611
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 12
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;io.                IN  NS

;; AUTHORITY SECTION:
io.         172800  IN  NS  ns-a1.io.
io.         172800  IN  NS  ns-a2.io.
io.         172800  IN  NS  ns-a3.io.
io.         172800  IN  NS  ns-a4.io.
io.         172800  IN  NS  a0.nic.io.
io.         172800  IN  NS  b0.nic.io.
io.         172800  IN  NS  c0.nic.io.

;; ADDITIONAL SECTION:
ns-a1.io.       172800  IN  AAAA    2001:678:4::1
ns-a2.io.       172800  IN  AAAA    2001:678:5::1
a0.nic.io.      172800  IN  AAAA    2a01:8840:9e::17
b0.nic.io.      172800  IN  AAAA    2a01:8840:9f::17
c0.nic.io.      172800  IN  AAAA    2a01:8840:a0::17
ns-a1.io.       172800  IN  A   194.0.1.1
ns-a2.io.       172800  IN  A   194.0.2.1
ns-a3.io.       172800  IN  A   74.116.178.1
ns-a4.io.       172800  IN  A   74.116.179.1
a0.nic.io.      172800  IN  A   65.22.160.17
b0.nic.io.      172800  IN  A   65.22.161.17
c0.nic.io.      172800  IN  A   65.22.162.17

;; Query time: 70 msec
;; SERVER: 2001:7fd::1#53(2001:7fd::1)
;; WHEN: Wed Jul  5 08:46:14 2017
;; MSG SIZE  rcvd: 407

太棒了,现在我通过ssh连接上去在这个域名下的测试dns服务器,直接关掉了正在运行的BIND服务。如果我现在开始接受DNS流量的话,我当然不想让合法访问io域名的人察觉已经被攻击。关闭bind服务不再接收53端口的查询,并且使DNS查询会自动跳转到其他名称服务器上,所以并不会很大程度上干扰流量。为了看看我是否会接收到流量,我将所有DNS流量全部写入到一个文件当中,以便于查看我获得到多少条查询。我利用互联网上的数百个随机ip进行查询,结果看起来这个域名确实为整个io
TLD提供流量,可能这只是一开始,因为很多DNS客户端都可能存在缓存,如果缓存更新之后,可能攻击就不会起作用.

报告TLD中的安全问题

慢慢的服务器不再接受任何dns查询,我认为应该尽可能快的修复好这一缺陷。我主要的担心是目前还存在有很多名称服务器是可以被注册的,并且这种攻击任何人只要有钱和一定的基础就可以实现。我查找了io后缀域名的TLD的联系人:

通过域名注册控制目标所有io后缀的域名

然后我写了一个问题的总结,并通过电子邮件发送给了两个联系人,并传达了修复这个问题的紧迫性。我表示我会对其他TLD域名中可以注册的名称服务器进行关注,并表明如果我在几个小时内没有收到回复,我将继续注册并保护TLD。发送电子邮件后,我立即收到一条回复邮件,adminstrator@nic.io邮件地址竟然不存在:

通过域名注册控制目标所有io后缀的域名

我相信这个域名的服务商迟早会看到这篇文章的,我接下来将所有的能够购买的域名全部买了下来,防止其他人劫持TLD。就像第一个域名一样,我设置了我的DNS服务器,不会影响入站通信。

通过域名注册控制目标所有io后缀的域名

这样至少不会被其他攻击者利用,我就可以安心的使用我的服务。

接下来几天里,我拨打了NCIO提供的电话号码,要求他们提供负责公司安全人员的电子邮件地址,以便我联系他们公司的安全团队。服务人员将abuse@101domain.com告诉我说这是问题的负责人,虽然我觉得不太可能能够解决问题,但是我还是将问题总结发送给了这个地址。并且希望通过这个邮件告知安全人员。在达成一定的共识之后,我就开始等待回复。

通过撤销购买域名进行修复

第二天中午,我收到了101Domains的通知,指出我的域名被停用,我的提出问题邮件已被回答,我的所有域名都被注册机构撤销:

通过域名注册控制目标所有io后缀的域名

震惊!abuse它竟然是问题反馈邮箱!在我登录到101Domain之后,我发现了101domain法律部门发来的消息:

通过域名注册控制目标所有io后缀的域名

很好,在我通知之后,很快时间就得到了响应,并且在我尝试重新注册这些域名时,没有成功,于是我确定已经把漏洞修补了。

漏洞影响

因为我们已经能够接管7个权威名称服务器中的4个,所以完全有能力对所有注册是io域名进行DNS投毒攻击。不仅如此,我们已经掌握了多数名称服务器,所以客户端可能选择到被劫持的名称服务器,甚至在使用长TTL响应之前,进一步提高我们攻击成功的可能性。

一种防止被攻击的方法是io TLD启用DNSSEC。启用之后,这种攻击不会对自己的服务奏效。话虽如此,不过很多场合都不知吃DNSSEC,除非专门设置一个DNSSEC解析器。

TLD安全方面防护

我已经写了一些关于如何从顶级域名(TLD)角度来解决这些问题的一些问题。在未来,我希望发布一个更广泛的指南,了解TLD和域名扩展运营商如何更好地监控并防止发生这样的问题。




原文发布时间为:2017年7月16日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
域名解析 安全 数据建模
阿里云域名注册政策参考,新人首单1元,域名代金券及注册和续费优惠口令
阿里云推出最新客专享域名低至1元活动,活动提供企业新用户1元注册com域名,个人新用户33元注册com域名,cn域名首年8.8元等政策,此外,阿里云还有注册和续费优惠口令和域名代金券等长期政策,本文对这些政策做个汇总,以供参考。
阿里云域名注册政策参考,新人首单1元,域名代金券及注册和续费优惠口令
|
移动开发 API
2024年阿里云域名注册、域名续费优惠口令大全来了
2024年阿里云域名注册、域名续费优惠口令大全来了,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”
6666 0
2024年阿里云域名注册、域名续费优惠口令大全来了
|
5月前
阿里云域名注册流程图和费用说明,新手第一次购买域名攻略
阿里云域名注册指南:访问[阿里云域名注册入口查询域名,选择后缀,加入清单并结算。价格如.com: 78元/首年。创建信息模板进行实名认证。获取优惠口令并使用,参照流程完成购买。详细步骤及域名价格详情见原文。
621 0
|
域名解析 C# 数据安全/隐私保护
阿里云域名注册政策:域名优惠口令,域名注册首年0元,域名代金券
在阿里云平台注册域名有什么政策上的优惠?阿里云针对用户注册域名推出了域名优惠口令,域名注册首年0元和域名代金券等活动,通过这些活动注册域名,部分后缀的域名首年仅需0元,注册最多的.com域名首年最低仅需33元,国内顶级域名.cn域名首年最低8.8元。下面是阿里云域名注册活动及域名注册和续费及转入价格介绍。
1559 0
阿里云域名注册政策:域名优惠口令,域名注册首年0元,域名代金券
阿里云域名注册入口_阿里云万网域名
阿里云域名注册入口_阿里云万网域名,阿里云域名注册入口https://wanwang.aliyun.com/domain/
1001 0
阿里云域名注册入口_阿里云万网域名
|
移动开发 API
2023阿里云域名优惠口令_COM和CN域名注册和续费使用
2023阿里云域名优惠口令_COM和CN域名注册和续费使用,2023年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,com域名注册优惠口令“梦想从域名开始”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续费和转入使用,域名优惠口令区分域名后缀,阿里云百科分享2023年阿里云域名优惠口令更新(注册、转入、续费均可使用)
173 0
阿里云域名注册先创建域名持有者信息模板
阿里云域名注册先创建域名持有者信息模板,阿里云域名注册域名持有者个人或企业都需要有已经通过实名认证的信息模板,如果没有可用的信息模板,需要先创建信息模版,等待信息模板实名通过后才可以注册域名,阿里云百科来详细说下阿里云注册域名创建信息模板实名全过程
161 0
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
3月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
1月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。