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