DNS系統(tǒng)原理及漏洞利用分析(上)
基于IP協(xié)議,兩臺計(jì)算機(jī)之間要實(shí)現(xiàn)通信有一個(gè)前提,就是它們分別有一個(gè)IP地址。由于我們大多數(shù)人都善于記住www.taobao.com之類的字串,而非一串如104.196.44.101一般毫無規(guī)律的IP地址數(shù)字組合,因此,需要一個(gè)程序?qū)⒚Q字串翻譯成IP地址。
在互聯(lián)網(wǎng)上儲(chǔ)存域名與IP地址間映射關(guān)系的一個(gè)分布式數(shù)據(jù)庫,能夠?qū)⒚Q轉(zhuǎn)換為數(shù)字、數(shù)字轉(zhuǎn)換為名稱的程序就被稱為DNS(Domain Name System,域名系統(tǒng)),運(yùn)行DNS系統(tǒng)的主機(jī)就是“DNS服務(wù)器”。如果沒有DNS,任何互聯(lián)網(wǎng)訪問就都需要我們記住12個(gè)數(shù)字——服務(wù)器的IP地址。
一、DNS工作原理
作為互聯(lián)網(wǎng)訪問中不可或缺的一項(xiàng)技術(shù),了解DNS的運(yùn)作機(jī)理非常重要。
DNS中的域名-IP映射條目被稱為“DNS記錄”。互聯(lián)網(wǎng)上需要實(shí)現(xiàn)通信的計(jì)算機(jī)數(shù)量過于龐大,將所有DNS記錄都記錄在一個(gè)記錄集里,由單臺DNS服務(wù)器進(jìn)行存儲(chǔ)處理是不切實(shí)際的。因此,在DNS體系的設(shè)計(jì)中,全球的DNS被分成了多個(gè)小記錄集,這些記錄集被稱為“域”(Domain)。一個(gè)域包含的記錄數(shù)量仍有可能非常大,因此,域還可以被劃分為更小的子集——“區(qū)”(Zone)。
因此,互聯(lián)網(wǎng)上所有的域名-IP映射條目是由許多DNS服務(wù)器共同存儲(chǔ)的。任何要根據(jù)域名查詢IP或根據(jù)IP查詢域名的計(jì)算機(jī),都可以向其DNS服務(wù)器發(fā)起查詢,并且DNS服務(wù)器還知道如何在多臺DNS服務(wù)器之間發(fā)起查詢。當(dāng)DNS服務(wù)器查詢其他DNS服務(wù)器時(shí),我們稱之為“上游”查詢。域查詢可以不停的向上執(zhí)行,直至權(quán)限域名服務(wù)器。
權(quán)限域名服務(wù)器是管理員對其所管轄域的服務(wù)器名和IP地址進(jìn)行管理的地方。當(dāng)DNS管理員想要對服務(wù)器名或IP地址實(shí)施增刪改查時(shí),就會(huì)在權(quán)限域名服務(wù)器(也稱“主DNS服務(wù)器”)上進(jìn)行操作。另外,還有“從DNS服務(wù)器”,用于保存區(qū)或域的DNS記錄副本。
1. 加載頁面用到的四個(gè)DNS服務(wù)器
- 域名解析服務(wù)器(Resolving name server):自身存有被查詢的IP-域名條目或向另一個(gè)DNS服務(wù)器請求該IP-域名條目,并響應(yīng)此次查詢的服務(wù)器。
- 根域名服務(wù)器(Root name server):根區(qū)的域名服務(wù)器。它直接響應(yīng)查詢請求,并返回相應(yīng)的域權(quán)限域名服務(wù)器列表。
- 域名服務(wù)器(TLD name Server):域名服務(wù)器(TLD)是Internet上的高級DNS服務(wù)器之一。當(dāng)搜索www.qq.com時(shí),“.com”TLD服務(wù)器將首先響應(yīng),在其條目中搜索“qq”字串。
- 權(quán)限域名服務(wù)器(Authoritative name server):權(quán)限域名服務(wù)器是DNS查詢流程中的結(jié)尾一站,其存儲(chǔ)有某個(gè)區(qū)的域名條目記錄。
2. DNS服務(wù)的類型
根據(jù)其處理DNS查詢的技術(shù)機(jī)理不同,DNS服務(wù)被分為兩種類型:
- 遞歸DNS服務(wù):遞歸DNS服務(wù)響應(yīng)DNS查詢并向權(quán)限域名服務(wù)發(fā)起域名條目查詢,或在其緩存的DNS條目中實(shí)施查詢。
- 權(quán)限D(zhuǎn)NS服務(wù):權(quán)限D(zhuǎn)NS服務(wù)自身存儲(chǔ)DNS條目。因此,如果向權(quán)限D(zhuǎn)NS服務(wù)查詢其存儲(chǔ)的某個(gè)IP-域名條目,則無需再向其他服務(wù)器發(fā)起查詢。
3. 公共DNS & 私有DNS
對于需要被公眾在互聯(lián)網(wǎng)上訪問的服務(wù)器,它需要具有公共DNS記錄,并且其IP地址在互聯(lián)網(wǎng)上可訪問,即不會(huì)被防火墻等訪問控制技術(shù)所阻止。任何能夠連接到公共DNS服務(wù)器的人都可以在且無需身份驗(yàn)證的情況下訪問公共DNS服務(wù)器。
但是,并非所有的DNS記錄都是公開的,為了使員工能夠方便地訪問企業(yè)內(nèi)網(wǎng)的服務(wù)器,不少企業(yè)都有自身的私有DNS。私有DNS被用于存放不希望公開到互聯(lián)網(wǎng)上的企業(yè)內(nèi)部文件服務(wù)器、郵件服務(wù)器、域控制器、數(shù)據(jù)庫服務(wù)器、應(yīng)用程序服務(wù)器等的域名和IP。
有一點(diǎn)需要注意的是,私有DNS服務(wù)器和公共DNS服務(wù)器一樣,對其的訪問無需進(jìn)行身份驗(yàn)證。這主要是因?yàn)樵贒NS技術(shù)創(chuàng)建之初,安全性還不是一個(gè)需要考慮的技術(shù)問題。因此,大多數(shù)情況下,企業(yè)內(nèi)部網(wǎng)絡(luò)中的任何用戶都可以在未做身份認(rèn)證的情況下查詢內(nèi)部DNS服務(wù)器存儲(chǔ)的信息。
二、查詢DNS的七個(gè)步驟
(1)當(dāng)用戶試圖訪問Internet上的計(jì)算機(jī),例如,在瀏覽器地址欄中輸入www.dingxinsec.com.cn時(shí),就將啟動(dòng)一次DNS查詢。
(2)DNS查詢的首站是本地DNS緩存。在用戶訪問網(wǎng)絡(luò)上不同的域名時(shí),這些域名對應(yīng)的IP地址就將存儲(chǔ)在本地緩存中,如果用戶之前訪問過www.dingxinsec.com.cn,則緩存中就會(huì)存有該網(wǎng)站的IP地址。
(3)如果本地DNS緩存中沒有該域名的IP,DNS就會(huì)用遞歸DNS服務(wù)器進(jìn)行檢查。在互聯(lián)網(wǎng)上,ISP服務(wù)商通常會(huì)建設(shè)和運(yùn)維遞歸DNS服務(wù)器。
(4)遞歸DNS服務(wù)器自身具備緩存,如果在其緩存中存有用戶查詢的IP地址,則會(huì)將其直接返回給用戶。如果沒有,將向其它DNS服務(wù)器發(fā)起查詢。
(5)下一站是TLD域名服務(wù)器,當(dāng)用戶查詢域名 www.dingxinsec.com.cn時(shí),存儲(chǔ).cn地址的TLD域名服務(wù)器會(huì)響應(yīng)查詢請求。該服務(wù)器并不存儲(chǔ)我們需要的IP地址,但它能夠向正確的權(quán)限域名服務(wù)器轉(zhuǎn)發(fā)查詢請求。
(6)權(quán)限域名服務(wù)器用www. dingxinsec. com. cn 的IP地址響應(yīng)此次查詢,遞歸DNS服務(wù)器將其存儲(chǔ)在本地DNS緩存中,并將地址返回給用戶的計(jì)算機(jī)。
(7)用戶計(jì)算機(jī)的本地DNS服務(wù)獲取www.dingxinsec.com.cn的IP地址并實(shí)施訪問。然后,在本地緩存中記錄該域名的IP地址,同時(shí)記錄其生存時(shí)間(TTL),即本地DNS記錄的有效時(shí)間,若用戶下次訪問該域名的時(shí)間超過TTL時(shí)間,則下次訪問www.dingxinsec.com.cn時(shí),DNS將再次執(zhí)行上述過程。
三、DNS查詢的分類
DNS查詢需要給DNS服務(wù)器傳遞的信息包括:
- 當(dāng)前查詢是什么類型;
- 要返回什么信息。
標(biāo)準(zhǔn)的DNS查詢有以下三種類型:
- 遞歸查詢:在遞歸查詢中,計(jì)算機(jī)請求DNS服務(wù)器返回一個(gè)IP地址,或確認(rèn)該DNS服務(wù)器不知道該IP。
- 迭代查詢:在迭代查詢中,查詢者向DNS服務(wù)器請求返回一個(gè)優(yōu)先答案。如果DNS服務(wù)器中查不到被查詢IP,它將返回權(quán)限域名服務(wù)器或TLD域名服務(wù)器。查詢者將繼續(xù)此迭代過程,直到找到被查詢IP或超時(shí)。
- 非遞歸查詢:DNS解析服務(wù)器使用此類查詢來查找自身緩存中沒有存儲(chǔ)的IP。