[翻译]劫持某国顶级域名服务之路——隐藏在扩展域名后的风险

原文链接:https://thehackerblog.com/the-journey-to-hijacking-a-countrys-tld-the-hidden-risks-of-domain-extensions/index.html

未经授权,侵删。

2017年6月4日

凡听见我这话就去做的,好比一个聪明人,把房子盖在磐石上。雨淋、水冲、风吹,撞着那房子,房子总不倒塌;因为根基立在磐石上。凡听见我这话不去做的,好比一个无知的人,把房子盖在沙土上。雨淋、水冲、风吹,撞着那房子,房子就倒塌了。

--马太福音7章24-27节

域名是我们当代互联网的根基,然而尽管所有人都在使用却很少有人理解他背后的机制。因为现在有各种抽象中间层以及供应商提供的服务,大部分人都能在不知道什么是DNS、域名注册和WHOIS的情况下搭建自己的网站并拥有自己的域名。虽然这些抽象中间层非常有用,但是它也为最终的使用者屏蔽了很多重要的信息。举个例子,很多域名注册的网站会更乐意向你推荐.io 的域名,但是买了.io 域名的人真的知道是哪些组织正在维护管理.io 域名吗?我认为大部分买了域名的人对域名背后的运作所知甚少,更不要说有多少人会问“这个域名的安全追溯记录是什么样的?”。

DNS结构简介

如果你已经了解DNS是如何运行和被代理的,可以直接跳过这节。
当你为域名掏钱时到底买到了什么呢?从本质上来说,你只是买到了一些NS (nameserver,域名服务器)记录,这些记录会被域名后缀对应的服务器(包括各种类似与WHOIS、registry/registrar operational costs, and other fees which go to ICANN)所持有。为了更好地理解后缀名在整个DNS各个阶段中的位置,我们来看一副图,上面标注了example.com的“代理链”。我发现图表对于理解DNS运作方式有很大的好处,所以我写了一个名叫TrustTrees的工具,它可以用来生成某个域名完整的代理路径。

上图展示了从根DNS服务开始的完整“代理链”,可见DNS代理的工作方式就是在连续的链路上寻找对应的域名是否存在。用户在发起的DNS请求会从请求某一个根域名服务器开始。根节点可能不知道这个请求的结果,然后后会将这次请求通过代理的方式转发给TLD(顶级域名服务器),而后者则会再次通过代理的方式转发给和是的域名服务器,直到接收到“权威回答”并确认它来自正确的域名服务器。上图战士了所有可能的代理路径(蓝色的线代表了“权威回复”)。之所以会有这么多路径,是因为DNS最终的回复中会包含一系列随机排列的答案(称之为 Round Robin DNS的技术),这么做是为了实现一定程度上的负载均衡。根据返回结果的顺序,每次请求的可能会是不同的域名服务器,并得到一些不同的答案。上图还展示了所有的排列可能以及域名服务器之间的联系。

综上所述,如果你购买了 example.com 域名,那么.com 注册局将会增加一些NS记录,然后所有关于example.com 的DNS请求都会被转发到对应的域名服务器上。这些接受代理的域名服务器则是会真正控制example.com 域名以及生成其他子域名的地方。如果拥有 .com 的组织决定去掉相关的域名服务器(NS)记录,那么你的域名请求将不会被代理给给任何服务器,进而你的example.com 就不能正常运作了。

进一步思考你会发现顶级域名服务器(TLD)和域名后缀之间的关系在其他域名层级的关系也是类似的。TLD存在的意义就是等待根域名服务器将请求代理给他们。如果根域名服务器决定去掉 .com 的NS记录,那么世界上所有的.com结尾的域名都将无法解析。

和普通域名相同,域名后缀也会受到同样漏洞的影响

现在我们理解了TLD和域名后缀也同样是通过域名服务器来管理的,就像普通的域名一样。那么问题来了,这意味着TLD也会受到同样的DNS安全问题的影响吗?答案当然是肯定的。如果你在我的博客里看过之前的一些文章,那么就可以知道我们可以通过各种方式劫持域名服务器。我演示过 过期或出错的域名服务器可能导致被劫持(typo-ed还没找到如何翻译……),也看过很多DNS供应商可以无需验证就获得其控制权。在学习完上述渗透实例之后,我们就有了足够的知识来做一件更伟大的事情:控制整个域名后缀。

拿下域名后缀之攻击计划

我并不是一个坏人,因此并不愿意教你们如何快速达到劫持域名后缀的目的。在整个寻找攻击方法的研究过程中,我发现很多TLD级别的域名服务器以及注册局都处于一团糟的状态,所以获取他们的控制权可能比想像的要简单很多。尽管类似与在注册局或者域名服务器上远程执行恶意代码这样的策略并不在我们的考量范围内,但是我仍然将提及他们,毕竟现实中的作恶者并没有多少道德顾虑。

一般来说,下列几个方法是拿下TLD相对可行的方法:

  • 通过域名后缀所在的DNS 服务器的漏洞。攻击注册局也算是这种方法的范围之内,因为它有能力可以直接操作对应域名服务器上的内容。
  • 找到已经过时或者写错的域名服务,并且抢先注册。
  • 通过在域名提供商那里重新创建一个 DNS 区,以此来劫持域名后缀。
  • 劫持TLD的WHOIS联系邮箱(在 IANA root zone 数据库中列出的这些)。

我们将逐一介绍每一种方法以及在实践中发现的对应结果。

TLD和域名后缀服务器的漏洞其实相当常见

为了开始对第一种方法进行探索,我决定对一个TLD域名服务器做一个简单的端口扫描。在理想状况下你将看到一批服务器在53端口监听着UDP/TCP消息,并且其他所有的端口都是关闭的。毕竟这些域名服务器十分关键,他们应该尽量减少对外的暴露。任何类似于HTTP,SSH或者SMTP都可能成为攻击者进入TLD的方式。

这一章的内容可能会有点奇怪,因为我将介绍如果不对恶意的活动设防情况会有多糟糕。在调查过程中我甚至发现,某些TLD上竟然还运行着网站,这意味着他很可能有被入侵的入口。我们将忽略这些极端的例子,主要集中分析一些典型案例。

Finger

finger 协议 是Les Earnestz 在1971年创建的,它可以让用户查看远程电脑上某个用户的状态。这是一种超级过时的协议,现代的操作系统中基本不会支持。这个协议的想法实质上是为了回答“Dave现在在他的机子上登录着吗?他现在忙吗?”这样的问题。你可以通过finger协议来查看远程机器上用户的登录名,真是姓名,终端名,空闲时间,登录时间,办公室地址和办公室电话号码。举个例子,我们将访问波斯尼亚的域名服务器的finger服务,查看他的root用户的下列信息:

bash-3.2$ finger -l root@202.29.151.3
[202.29.151.3]
Login: root                       Name: Charlie Root
Directory: /root                        Shell: /bin/sh
Last login Sat Dec 14 16:41 2013 (ICT) on console
No Mail.
No Plan.

看上去root用户已经很久没有登录了!让我们再看看越南的某个域名服务器:

bash-3.2$ finger -l user@203.119.60.105
[203.119.60.105]
Login name: nobody                In real life: NFS Anonymous Access User
Directory: /                        
Never logged in.
No unread mail
No Plan.

Login name: noaccess              In real life: No Access User
Directory: /                        
Never logged in.
No unread mail
No Plan.

Login name: nobody4               In real life: SunOS 4.x NFS Anonymous Access User
Directory: /                        
Never logged in.
No unread mail
No Plan.

Login name: named                 In real life: User run named
Directory: /home/named                  Shell: /bin/false
Never logged in.
No unread mail
No Plan.
bash-3.2$ 
bash-3.2$ finger -l root@203.119.60.105
[203.119.60.105]
Login name: root                  In real life: Super-User
Directory: /                            Shell: /sbin/sh
Last login Tue Sep 30, 2014 on pts/1 from DNS-E
No unread mail
No Plan.

这边root用户的上一次登录时间是2014年9月30号。实际上这机子上装载这这种协议也表明了这服务器是有多过时了。

动态网站
可能除了53之外,域名服务器上最常见的公开端口应该就是80(HTTP)了。访问他们的网站经常会获得很有趣的结果。例如某个域名服务器直接将我重定向到一个广告网站:

* Rebuilt URL to: http://93.190.140.242/
*   Trying 93.190.140.242...
* Connected to 93.190.140.242 (93.190.140.242) port 80 (#0)
> GET / HTTP/1.1
> Host: 93.190.140.242
> Accept: */*
> User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0
> 
< HTTP/1.1 302 Moved Temporarily
< Server: nginx/1.10.1
< Date: Sun, 04 Jun 2017 03:16:30 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< X-Powered-By: PHP/5.3.3
< Location: http://n158adserv.com/ads?key=6c6004f94a84a1d702c2b8dc16052e50&ch=140.242
< 
* Closing connection 0

我仍然不能确定,这个域名服务器是不是之前就已经被人入侵过,或者他的拥有者想以此赚点外快?

其他的域名服务器(例如阿尔巴尼亚的 .com.al ,.edu.al,.mil.al,.net.al,和.nic.al 的域名服务器)则返回了很多描述他们机器详细信息的配置页:

另外还有能在上面直接远程执行命令行工具的(例如.ke,.ba 和其他一大把域名后缀):

更有甚者……
我们还发现了其他很多有意思的服务,但这里就不详细展开了。例如SMTP,IMAP,MySQL,SNMP,RDP都是域名服务器上常见的开放端口。这给了攻击者一个很大的施展空间,我认为通过各种漏洞成功拿下服务器的成功路很高。但是我们将不再做进一步测试,因为我们不是坏人。由于很多服务器都已经过时了,修复上面的安全漏洞对于各个所有者来说工作量十分巨大。

……

PS:原文后面还有很多展开讲述其他奇技淫巧来攻占顶级域名服务器,这里就先不翻译了:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 先讨论许多应用协议都要使用的域名系统。在介绍了文件传送协议和远程登录协议后,就重点介绍万维网的工作原理及其主要协议...
    dmmy大印阅读 954评论 0 1
  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,674评论 0 7
  • 今天本来打算写国际贸易的理论框架,但是由于到了这个点儿, 只能做罢。这些天的晚上一直很忙,然后说明了一个道理白天的...
    忽尔今至阅读 283评论 0 0
  • 白天想到了一个疑问,心想今天就写这个了。 好家伙,晚上一来就忘了。 又有一位广小漂要走了,感觉聚散有时,本不定。经...
    飞戈菲戈阅读 379评论 0 0