資源描述:
《dns緩存中毒攻擊與防護(hù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、DNS緩存中毒攻擊與防護(hù)互聯(lián)X是一個(gè)脆弱的X絡(luò)系統(tǒng),其中的DNS基礎(chǔ)設(shè)施就存在一種緩存漏洞,由于其設(shè)計(jì)的缺陷,尤其在去年,引發(fā)了幾起大范圍的X絡(luò)癱瘓。而這個(gè)漏洞主要針對(duì)遞歸查詢服務(wù)器,我們針對(duì)這個(gè)問題進(jìn)行簡(jiǎn)單的論述與探討。關(guān)鍵詞:X絡(luò)安全;DNS緩存中毒;攻擊;防護(hù) 在互聯(lián)X初期,為了便于進(jìn)行主機(jī)標(biāo)識(shí),采用了Hosts文件來進(jìn)行這種與IP地址的對(duì)應(yīng)關(guān)系。但是隨著X絡(luò)的迅速發(fā)展,已經(jīng)不可能再繼續(xù)使用Hosts主機(jī)文件來保存這種映射關(guān)系,于是產(chǎn)生了DNS。 DNS是用于管理主機(jī)名稱和地址信息映射的分布式數(shù)據(jù)庫系統(tǒng),將這個(gè)巨大的映射信息劃分成許
2、多較小的部分,并把每一部分存儲(chǔ)在不同的計(jì)算機(jī)上,需要映射的計(jì)算機(jī)可以查詢一個(gè)最近的持有所需要信息的計(jì)算機(jī)。DNS目前已經(jīng)成為大部分X絡(luò)應(yīng)用的基礎(chǔ),一旦遭受攻擊,用戶將不能進(jìn)行正常的X絡(luò)訪問,因此DNS的安全影響巨大?! ≡贒NS攻擊中,危害比較大的當(dāng)屬DNS緩存中毒。我們分析一下緩存中毒的攻擊原理和過程,以及防護(hù)辦法。一、DNS緩存中毒攻擊原理 首先來了解一下DNS的工作過程。DNS被設(shè)計(jì)成C/S應(yīng)用程序,需要把地址映射為名字或把名字映射為地址的主機(jī)調(diào)用DNS解析程序,向最近的DNS服務(wù)器發(fā)出查詢請(qǐng)求,此時(shí),DNS服務(wù)器可以有兩種方式來響應(yīng)
3、客戶的請(qǐng)求,一種叫遞歸解析,另一種叫迭代解析。DNS緩存中毒攻擊主要是針對(duì)遞歸解析方式工作并緩存非本域的解析結(jié)果的DNS服務(wù)器。下面就主要分析遞歸解析過程?! 。?)應(yīng)用程序需要解析一個(gè)域名時(shí),本機(jī)會(huì)發(fā)起域名解析請(qǐng)求,解析程序會(huì)向首選DNS服務(wù)器DNS-A發(fā)起域名解析請(qǐng)求; ?。?)DNS-A收到解析請(qǐng)求后會(huì)去查詢自己的管轄域,如果請(qǐng)求的是自己管轄域的域名就會(huì)直接將查詢結(jié)果返回給解析程序,如果不在DNS-A的管轄域內(nèi),DNS-A就向它的上級(jí)服務(wù)器DNS-B發(fā)起解析請(qǐng)求,等待DNS-B的查詢結(jié)果; ?。?)如果DNS-B解析不了,就會(huì)告訴DNS
4、-A,我解析不了,DNS-C可能會(huì)知道; ?。?)DNS-A就會(huì)給DNS-C發(fā)出解析請(qǐng)求,等到DNS-C的查詢結(jié)果; DNS服務(wù)器不是對(duì)收到的任何DNS響應(yīng)數(shù)據(jù)包都會(huì)接受,它會(huì)解碼數(shù)據(jù)包,檢查數(shù)據(jù)包是否符合接受的標(biāo)準(zhǔn),那DNS服務(wù)器會(huì)檢查數(shù)據(jù)包中的哪些數(shù)據(jù)來判斷該數(shù)據(jù)包是不是它所希望的包呢? 1、在DNS服務(wù)器發(fā)出的查詢請(qǐng)求包中包含了它的UDP端口號(hào),返回的響應(yīng)數(shù)據(jù)包的目的端口號(hào)不對(duì),X絡(luò)協(xié)議棧就會(huì)直接丟棄該數(shù)據(jù)包。 2、DNS服務(wù)器收到響應(yīng)數(shù)據(jù)包后,可以通過檢查問題域與發(fā)出的查詢包中的問題域是否一致來判斷響應(yīng)數(shù)據(jù)包的合法性?! ?、D
5、NS服務(wù)器每發(fā)出一個(gè)查詢請(qǐng)求都會(huì)分配對(duì)應(yīng)的一個(gè)查詢ID號(hào),在內(nèi)部對(duì)應(yīng)是某一個(gè)域名查詢請(qǐng)求,在DNS服務(wù)器內(nèi)部區(qū)分不同的查詢就是TID號(hào),如果DNS服務(wù)器收到的響應(yīng)數(shù)據(jù)包中的TID號(hào)不在DNS服務(wù)器等待響應(yīng)數(shù)據(jù)的TID中,服務(wù)器就會(huì)丟棄該數(shù)據(jù)包?! ?、響應(yīng)數(shù)據(jù)包中的授權(quán)域和附加域 授權(quán)域和附加域中的域名必須和問題域中的域名是同屬于某個(gè)域名下的子域名?! ∪绻鲜鏊袟l件都滿足了,DNS域名服務(wù)器就會(huì)確定該響應(yīng)數(shù)據(jù)包是對(duì)它發(fā)出的某個(gè)查詢請(qǐng)求的響應(yīng),接受使用相應(yīng)數(shù)據(jù)包中的數(shù)據(jù),并緩存結(jié)果。 如果某個(gè)攻擊者可以預(yù)測(cè)和偽造響應(yīng)數(shù)據(jù)包,他就可以對(duì)D
6、NS服務(wù)器發(fā)起緩存中毒攻擊了。由于DNS服務(wù)器發(fā)送的數(shù)據(jù)包中的TID只有16位,而且大部分的DNS實(shí)現(xiàn)發(fā)出的請(qǐng)求中的源端口都是固定不變的。因此,攻擊者就可以偽造DNS響應(yīng)包,DNS服務(wù)器在收到響應(yīng)包后就會(huì)將解析結(jié)果保存在自己的緩存中,進(jìn)而實(shí)現(xiàn)了緩存中毒攻擊。二、DNS緩存中毒的防護(hù) 及時(shí)檢查自己的DNS服務(wù)器是否存在DNS緩存中毒漏洞,如果發(fā)現(xiàn)了自己的DNS服務(wù)器存在該漏洞就可以在被攻擊前采取措施修補(bǔ),避免攻擊事件的發(fā)生?! ∧壳皺z查DNS服務(wù)器是否存在緩存中毒漏洞的主要方法是模擬攻擊過程中的一部分。檢查的具體過程是首先需要搭建一個(gè)自己可以
7、控制的DNS服務(wù)器,與掃描器協(xié)同工作,讓掃描器向要檢查的DNS服務(wù)器查詢只有控制的DNS服務(wù)器才能解析的域名請(qǐng)求,被檢查的DNS服務(wù)器需要解析該域名就會(huì)向別的DNS服務(wù)器請(qǐng)求解析,根據(jù)前邊介紹的DNS服務(wù)器解析原理,最終被檢查的服務(wù)器發(fā)出的查詢請(qǐng)求可以被導(dǎo)向到我們控制的DNS服務(wù)器,這樣,控制的服務(wù)器就可收到檢查服務(wù)器的請(qǐng)求,進(jìn)而可以收集到檢查服務(wù)器發(fā)出請(qǐng)求包的特征,被控服務(wù)器就可以將收集到的特征信息作為查詢的響應(yīng)數(shù)據(jù)返回給檢查的DNS服務(wù)器,進(jìn)而可以返回給掃描器,這樣掃描器就可以根據(jù)收集的特征來判斷檢查的DNS服務(wù)器是否存在緩存中毒漏洞。
8、 技術(shù)層面的防護(hù)措施有如下方法: UDP源端口隨機(jī)化選擇是一種比較有用的防護(hù)舉措,不應(yīng)該再是默認(rèn)的53,而是應(yīng)該在UDP端口范圍內(nèi)隨機(jī)選擇,使得投毒命中的概率極大