[翻譯]劫持某國(guó)頂級(jí)域名服務(wù)之路——隱藏在擴(kuò)展域名后的風(fēng)險(xiǎn)

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

未經(jīng)授權(quán),侵刪。

2017年6月4日

凡聽見我這話就去做的,好比一個(gè)聰明人,把房子蓋在磐石上。雨淋、水沖、風(fēng)吹,撞著那房子,房子總不倒塌;因?yàn)楦⒃谂褪稀7猜犚娢疫@話不去做的,好比一個(gè)無(wú)知的人,把房子蓋在沙土上。雨淋、水沖、風(fēng)吹,撞著那房子,房子就倒塌了。

--馬太福音7章24-27節(jié)

域名是我們當(dāng)代互聯(lián)網(wǎng)的根基,然而盡管所有人都在使用卻很少有人理解他背后的機(jī)制。因?yàn)楝F(xiàn)在有各種抽象中間層以及供應(yīng)商提供的服務(wù),大部分人都能在不知道什么是DNS、域名注冊(cè)和WHOIS的情況下搭建自己的網(wǎng)站并擁有自己的域名。雖然這些抽象中間層非常有用,但是它也為最終的使用者屏蔽了很多重要的信息。舉個(gè)例子,很多域名注冊(cè)的網(wǎng)站會(huì)更樂(lè)意向你推薦.io 的域名,但是買了.io 域名的人真的知道是哪些組織正在維護(hù)管理.io 域名嗎?我認(rèn)為大部分買了域名的人對(duì)域名背后的運(yùn)作所知甚少,更不要說(shuō)有多少人會(huì)問(wèn)“這個(gè)域名的安全追溯記錄是什么樣的?”。

DNS結(jié)構(gòu)簡(jiǎn)介

如果你已經(jīng)了解DNS是如何運(yùn)行和被代理的,可以直接跳過(guò)這節(jié)。
當(dāng)你為域名掏錢時(shí)到底買到了什么呢?從本質(zhì)上來(lái)說(shuō),你只是買到了一些NS (nameserver,域名服務(wù)器)記錄,這些記錄會(huì)被域名后綴對(duì)應(yīng)的服務(wù)器(包括各種類似與WHOIS、registry/registrar operational costs, and other fees which go to ICANN)所持有。為了更好地理解后綴名在整個(gè)DNS各個(gè)階段中的位置,我們來(lái)看一副圖,上面標(biāo)注了example.com的“代理鏈”。我發(fā)現(xiàn)圖表對(duì)于理解DNS運(yùn)作方式有很大的好處,所以我寫了一個(gè)名叫TrustTrees的工具,它可以用來(lái)生成某個(gè)域名完整的代理路徑。

上圖展示了從根DNS服務(wù)開始的完整“代理鏈”,可見DNS代理的工作方式就是在連續(xù)的鏈路上尋找對(duì)應(yīng)的域名是否存在。用戶在發(fā)起的DNS請(qǐng)求會(huì)從請(qǐng)求某一個(gè)根域名服務(wù)器開始。根節(jié)點(diǎn)可能不知道這個(gè)請(qǐng)求的結(jié)果,然后后會(huì)將這次請(qǐng)求通過(guò)代理的方式轉(zhuǎn)發(fā)給TLD(頂級(jí)域名服務(wù)器),而后者則會(huì)再次通過(guò)代理的方式轉(zhuǎn)發(fā)給和是的域名服務(wù)器,直到接收到“權(quán)威回答”并確認(rèn)它來(lái)自正確的域名服務(wù)器。上圖戰(zhàn)士了所有可能的代理路徑(藍(lán)色的線代表了“權(quán)威回復(fù)”)。之所以會(huì)有這么多路徑,是因?yàn)镈NS最終的回復(fù)中會(huì)包含一系列隨機(jī)排列的答案(稱之為 Round Robin DNS的技術(shù)),這么做是為了實(shí)現(xiàn)一定程度上的負(fù)載均衡。根據(jù)返回結(jié)果的順序,每次請(qǐng)求的可能會(huì)是不同的域名服務(wù)器,并得到一些不同的答案。上圖還展示了所有的排列可能以及域名服務(wù)器之間的聯(lián)系。

綜上所述,如果你購(gòu)買了 example.com 域名,那么.com 注冊(cè)局將會(huì)增加一些NS記錄,然后所有關(guān)于example.com 的DNS請(qǐng)求都會(huì)被轉(zhuǎn)發(fā)到對(duì)應(yīng)的域名服務(wù)器上。這些接受代理的域名服務(wù)器則是會(huì)真正控制example.com 域名以及生成其他子域名的地方。如果擁有 .com 的組織決定去掉相關(guān)的域名服務(wù)器(NS)記錄,那么你的域名請(qǐng)求將不會(huì)被代理給給任何服務(wù)器,進(jìn)而你的example.com 就不能正常運(yùn)作了。

進(jìn)一步思考你會(huì)發(fā)現(xiàn)頂級(jí)域名服務(wù)器(TLD)和域名后綴之間的關(guān)系在其他域名層級(jí)的關(guān)系也是類似的。TLD存在的意義就是等待根域名服務(wù)器將請(qǐng)求代理給他們。如果根域名服務(wù)器決定去掉 .com 的NS記錄,那么世界上所有的.com結(jié)尾的域名都將無(wú)法解析。

和普通域名相同,域名后綴也會(huì)受到同樣漏洞的影響

現(xiàn)在我們理解了TLD和域名后綴也同樣是通過(guò)域名服務(wù)器來(lái)管理的,就像普通的域名一樣。那么問(wèn)題來(lái)了,這意味著TLD也會(huì)受到同樣的DNS安全問(wèn)題的影響嗎?答案當(dāng)然是肯定的。如果你在我的博客里看過(guò)之前的一些文章,那么就可以知道我們可以通過(guò)各種方式劫持域名服務(wù)器。我演示過(guò) 過(guò)期或出錯(cuò)的域名服務(wù)器可能導(dǎo)致被劫持(typo-ed還沒(méi)找到如何翻譯……),也看過(guò)很多DNS供應(yīng)商可以無(wú)需驗(yàn)證就獲得其控制權(quán)。在學(xué)習(xí)完上述滲透實(shí)例之后,我們就有了足夠的知識(shí)來(lái)做一件更偉大的事情:控制整個(gè)域名后綴。

拿下域名后綴之攻擊計(jì)劃

我并不是一個(gè)壞人,因此并不愿意教你們?nèi)绾慰焖龠_(dá)到劫持域名后綴的目的。在整個(gè)尋找攻擊方法的研究過(guò)程中,我發(fā)現(xiàn)很多TLD級(jí)別的域名服務(wù)器以及注冊(cè)局都處于一團(tuán)糟的狀態(tài),所以獲取他們的控制權(quán)可能比想像的要簡(jiǎn)單很多。盡管類似與在注冊(cè)局或者域名服務(wù)器上遠(yuǎn)程執(zhí)行惡意代碼這樣的策略并不在我們的考量范圍內(nèi),但是我仍然將提及他們,畢竟現(xiàn)實(shí)中的作惡者并沒(méi)有多少道德顧慮。

一般來(lái)說(shuō),下列幾個(gè)方法是拿下TLD相對(duì)可行的方法:

  • 通過(guò)域名后綴所在的DNS 服務(wù)器的漏洞。攻擊注冊(cè)局也算是這種方法的范圍之內(nèi),因?yàn)樗心芰梢灾苯硬僮鲗?duì)應(yīng)域名服務(wù)器上的內(nèi)容。
  • 找到已經(jīng)過(guò)時(shí)或者寫錯(cuò)的域名服務(wù),并且搶先注冊(cè)。
  • 通過(guò)在域名提供商那里重新創(chuàng)建一個(gè) DNS 區(qū),以此來(lái)劫持域名后綴。
  • 劫持TLD的WHOIS聯(lián)系郵箱(在 IANA root zone 數(shù)據(jù)庫(kù)中列出的這些)。

我們將逐一介紹每一種方法以及在實(shí)踐中發(fā)現(xiàn)的對(duì)應(yīng)結(jié)果。

TLD和域名后綴服務(wù)器的漏洞其實(shí)相當(dāng)常見

為了開始對(duì)第一種方法進(jìn)行探索,我決定對(duì)一個(gè)TLD域名服務(wù)器做一個(gè)簡(jiǎn)單的端口掃描。在理想狀況下你將看到一批服務(wù)器在53端口監(jiān)聽著UDP/TCP消息,并且其他所有的端口都是關(guān)閉的。畢竟這些域名服務(wù)器十分關(guān)鍵,他們應(yīng)該盡量減少對(duì)外的暴露。任何類似于HTTP,SSH或者SMTP都可能成為攻擊者進(jìn)入TLD的方式。

這一章的內(nèi)容可能會(huì)有點(diǎn)奇怪,因?yàn)槲覍⒔榻B如果不對(duì)惡意的活動(dòng)設(shè)防情況會(huì)有多糟糕。在調(diào)查過(guò)程中我甚至發(fā)現(xiàn),某些TLD上竟然還運(yùn)行著網(wǎng)站,這意味著他很可能有被入侵的入口。我們將忽略這些極端的例子,主要集中分析一些典型案例。

Finger

finger 協(xié)議 是Les Earnestz 在1971年創(chuàng)建的,它可以讓用戶查看遠(yuǎn)程電腦上某個(gè)用戶的狀態(tài)。這是一種超級(jí)過(guò)時(shí)的協(xié)議,現(xiàn)代的操作系統(tǒng)中基本不會(huì)支持。這個(gè)協(xié)議的想法實(shí)質(zhì)上是為了回答“Dave現(xiàn)在在他的機(jī)子上登錄著嗎?他現(xiàn)在忙嗎?”這樣的問(wèn)題。你可以通過(guò)finger協(xié)議來(lái)查看遠(yuǎn)程機(jī)器上用戶的登錄名,真是姓名,終端名,空閑時(shí)間,登錄時(shí)間,辦公室地址和辦公室電話號(hào)碼。舉個(gè)例子,我們將訪問(wèn)波斯尼亞的域名服務(wù)器的finger服務(wù),查看他的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用戶已經(jīng)很久沒(méi)有登錄了!讓我們?cè)倏纯丛侥系哪硞€(gè)域名服務(wù)器:

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用戶的上一次登錄時(shí)間是2014年9月30號(hào)。實(shí)際上這機(jī)子上裝載這這種協(xié)議也表明了這服務(wù)器是有多過(guò)時(shí)了。

動(dòng)態(tài)網(wǎng)站
可能除了53之外,域名服務(wù)器上最常見的公開端口應(yīng)該就是80(HTTP)了。訪問(wèn)他們的網(wǎng)站經(jīng)常會(huì)獲得很有趣的結(jié)果。例如某個(gè)域名服務(wù)器直接將我重定向到一個(gè)廣告網(wǎng)站:

* 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

我仍然不能確定,這個(gè)域名服務(wù)器是不是之前就已經(jīng)被人入侵過(guò),或者他的擁有者想以此賺點(diǎn)外快?

其他的域名服務(wù)器(例如阿爾巴尼亞的 .com.al ,.edu.al,.mil.al,.net.al,和.nic.al 的域名服務(wù)器)則返回了很多描述他們機(jī)器詳細(xì)信息的配置頁(yè):

另外還有能在上面直接遠(yuǎn)程執(zhí)行命令行工具的(例如.ke,.ba 和其他一大把域名后綴):

更有甚者……
我們還發(fā)現(xiàn)了其他很多有意思的服務(wù),但這里就不詳細(xì)展開了。例如SMTP,IMAP,MySQL,SNMP,RDP都是域名服務(wù)器上常見的開放端口。這給了攻擊者一個(gè)很大的施展空間,我認(rèn)為通過(guò)各種漏洞成功拿下服務(wù)器的成功路很高。但是我們將不再做進(jìn)一步測(cè)試,因?yàn)槲覀儾皇菈娜?。由于很多服?wù)器都已經(jīng)過(guò)時(shí)了,修復(fù)上面的安全漏洞對(duì)于各個(gè)所有者來(lái)說(shuō)工作量十分巨大。

……

PS:原文后面還有很多展開講述其他奇技淫巧來(lái)攻占頂級(jí)域名服務(wù)器,這里就先不翻譯了:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 先討論許多應(yīng)用協(xié)議都要使用的域名系統(tǒng)。在介紹了文件傳送協(xié)議和遠(yuǎn)程登錄協(xié)議后,就重點(diǎn)介紹萬(wàn)維網(wǎng)的工作原理及其主要協(xié)議...
    dmmy大印閱讀 1,314評(píng)論 0 1
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對(duì)應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 3,394評(píng)論 0 7
  • 今天本來(lái)打算寫國(guó)際貿(mào)易的理論框架,但是由于到了這個(gè)點(diǎn)兒, 只能做罷。這些天的晚上一直很忙,然后說(shuō)明了一個(gè)道理白天的...
    忽爾今至閱讀 347評(píng)論 0 0
  • 白天想到了一個(gè)疑問(wèn),心想今天就寫這個(gè)了。 好家伙,晚上一來(lái)就忘了。 又有一位廣小漂要走了,感覺(jué)聚散有時(shí),本不定。經(jīng)...
    飛戈菲戈閱讀 459評(píng)論 0 0

友情鏈接更多精彩內(nèi)容