董瑞芳
【摘 要】針對(duì)DNS欺騙表現(xiàn)出的危害性大、隱蔽性強(qiáng)的特點(diǎn),通過(guò)對(duì)DNS ID欺騙攻擊及DNS緩存中毒攻擊的原理進(jìn)行剖析,應(yīng)用概率學(xué)理論證明了“生日攻擊”的危害,分別給出相應(yīng)的防御方案。對(duì)于不同類(lèi)型的用戶可以根據(jù)自身的條件和對(duì)信息安全要求級(jí)別的高低,采用適合自己的應(yīng)對(duì)方案。
【關(guān)鍵詞】DNS 欺騙;ARP欺騙;DNS ID欺騙;DNS緩存中毒;生日攻擊
0.概述
域名系統(tǒng)(Domain Name System,DNS)是一個(gè)可以將域名和IP地址相互映射的分布式數(shù)據(jù)庫(kù)。目前,針對(duì)DNS協(xié)議存在的問(wèn)題,很多專(zhuān)家給出了解決辦法。IETF 提出的域名系統(tǒng)的安全協(xié)議(Domain NameSystem Security,DNSSEC)旨在解決DNS的安全問(wèn)題, 但由于需要占用更多的系統(tǒng)開(kāi)銷(xiāo)和網(wǎng)絡(luò)資源,還要對(duì)相應(yīng)的數(shù)據(jù)庫(kù)和系統(tǒng)管理軟件進(jìn)行升級(jí), 并且新的軟件尚處于測(cè)試階段,離DNSSEC普及性地應(yīng)用還有一定的距離。現(xiàn)在,主要的應(yīng)對(duì)辦法是升級(jí)DNS軟件和加強(qiáng)服務(wù)器的安全配置,除此之外,尚未發(fā)現(xiàn)較有效的防范措施。
以偵聽(tīng)為基礎(chǔ)的DNS欺騙(DNS spoofing)和DNS緩存中毒(DNS cache poisoning)對(duì)目標(biāo)主機(jī)都具有欺騙性質(zhì), 本文把這2種攻擊方式都列入DNS欺騙攻擊并加以討論。為了予以區(qū)分,把前者稱(chēng)之為 DNS ID欺騙(DNS ID spoofing),并且嘗試分別給出2類(lèi)攻擊的應(yīng)對(duì)方案。針對(duì)DNS 協(xié)議的攻擊還有很多,諸如“洪水”攻擊和服務(wù)器攻陷等其他攻擊手段不在本文研究范圍之內(nèi)。
1.DNS服務(wù)原理
DNS服務(wù)的工作原理:如果某用戶需要對(duì)域名www.example.com 進(jìn)行解析,以得到其相應(yīng)的IP地址;而且假定本地DNS服務(wù)器不是目標(biāo)域名授權(quán)DNS服務(wù)器和其緩存中沒(méi)有相應(yīng)的記錄。
2.DNS ID欺騙攻擊及其防御方案
2.1 DNS ID欺騙攻擊原理
DNS ID欺騙以監(jiān)聽(tīng)I(yíng)D和端口號(hào)為基礎(chǔ),如果是在交換機(jī)搭建的網(wǎng)絡(luò)環(huán)境下,欺騙者首先要向攻擊目標(biāo)實(shí)施ARP欺騙。以下是一個(gè) DNS ID欺騙(DNS ID spoofing)的實(shí)例。假設(shè)用戶、欺騙者和DNS服務(wù)器同在一個(gè)局域網(wǎng)內(nèi)。
攻擊流程如下:
①欺騙者通過(guò)向攻擊目標(biāo)以一定的頻率發(fā)送偽造ARP應(yīng)答包改寫(xiě)目標(biāo)機(jī)的ARP cache中的內(nèi)容,并通過(guò)IP續(xù)傳使數(shù)據(jù)流過(guò)欺騙者的主機(jī)再流向目的地;欺騙者配合 Sniffer 軟件監(jiān)聽(tīng)DNS請(qǐng)求包,取得 ID和端口號(hào)。
②欺騙者取得ID和端口號(hào)后,立即向攻擊目標(biāo)發(fā)送相應(yīng)的偽造 DNS應(yīng)答包,用戶收到后確認(rèn)ID和端口號(hào)無(wú)誤,以為收到正確的 DNS應(yīng)答包; 而其實(shí)際的地址很可能被導(dǎo)向攻擊者想讓用戶訪問(wèn)的惡意網(wǎng)站, 用戶的信息安全受到威脅。
③用戶再次收到DNS服務(wù)器發(fā)來(lái)的DNS應(yīng)答包,由于晚于偽造的DNS應(yīng)答包,因此被用戶拋棄;用戶的訪問(wèn)被導(dǎo)向攻擊者設(shè)計(jì)的地址,一次完整的 DNS ID欺騙完成。
2.2防御方法
根據(jù)此種攻擊的特點(diǎn),有以下的應(yīng)對(duì)方案可以考慮:
(1)對(duì)少數(shù)信息安全級(jí)別要求高的網(wǎng)站避免使用DNS。因?yàn)?DNS 欺騙中相當(dāng)一部分的目的是竊取用戶的私密信息, 而對(duì)于大部分用戶而言,其訪問(wèn)網(wǎng)站中的大多數(shù)都不涉及此類(lèi)信息, 所以在訪問(wèn)涉及個(gè)人私密信息的網(wǎng)站時(shí)(比如通過(guò)網(wǎng)上銀行進(jìn)行交易),可以直接通過(guò) IP地址訪問(wèn),這樣就可以繞開(kāi)DNS服務(wù),DNS欺騙自然無(wú)從談起,其危害性就大大降低了。因?yàn)樯婕懊舾行畔⒌木W(wǎng)站只占很少的一部分,對(duì)于絕大多數(shù)用戶而言, 這種方法幾乎不會(huì)對(duì)其使用產(chǎn)生什么影響;又由于大部分用戶受自身?xiàng)l件所限,不足以對(duì)所處的網(wǎng)絡(luò)環(huán)境產(chǎn)生什么影響,并且對(duì)信息安全要求不是太高,因此該方法不失為一種簡(jiǎn)單有效的方法, 而且對(duì)于所有涉及DNS的攻擊均有效。
(2)防范ARP攻擊。因?yàn)榇祟?lèi)攻擊需要以ARP欺騙為基礎(chǔ),所以較為直接的方法是謹(jǐn)防受到ARP欺騙攻擊。避免了ARP攻擊的可能,自然就無(wú)法進(jìn)行DNS ID欺騙。
3.DNS緩存中毒攻擊及其防御方案
3.1 DNS緩存中毒原理
在不得到ID和端口號(hào)的情況下不可能完成DNS欺騙攻擊。原理是,如果在已知端口號(hào)的前提下,通過(guò)發(fā)送大量的DNS應(yīng)答包來(lái)猜測(cè)攻擊目標(biāo)的DNS 請(qǐng)求包的ID號(hào),如果所發(fā)送的偽造應(yīng)答包中存在和請(qǐng)求包的 ID一致的情況, 也就是產(chǎn)生了所謂的“碰撞”,則欺騙成功。16位的ID號(hào)取值范圍為0~65535,共有65536種可能性,想要使其攻擊的成功率可以達(dá)到 50%,至少需要發(fā)送32768個(gè)完全不同ID號(hào)的應(yīng)答包。如果不知道端口號(hào),ID和端口號(hào)的組合空間比原來(lái)擴(kuò)大了6萬(wàn)多倍,相應(yīng)的攻擊成功率也就極大地降低了。不幸的是,有很多的 DNS服務(wù)器的端口都是固定的,只需要一個(gè)DNS請(qǐng)求,就可以從反饋當(dāng)中得知端口號(hào)。這樣的結(jié)果使得DNS緩存中毒攻擊成為可能??墒且玫?0%的成功率,在短時(shí)間內(nèi)發(fā)送32768個(gè)包,還要趕在真正的應(yīng)答包到來(lái)之前發(fā)生“碰撞”,其操作難度較大。如果很好地利用“生日攻擊”就可以只發(fā)送較少的數(shù)據(jù)包,同樣能達(dá)到欺騙的效果。
如果采用 “生日攻擊”,只需要發(fā)送很少的數(shù)據(jù)包,就可以達(dá)到很好的效果。隨著數(shù)據(jù)包數(shù)量的增加,相對(duì)于傳統(tǒng)DNS欺騙攻擊, “生日攻擊”的優(yōu)勢(shì)明顯。當(dāng)然,這個(gè)概率只是理論上的,并不是攻擊成功的概率,攻擊者要想成功地使目標(biāo)機(jī)的Cache中毒還需要其他一些因素共同決定,比如:這些偽造的應(yīng)答包要趕在真的應(yīng)答包到來(lái)之前發(fā)送至目標(biāo)主機(jī)。有些攻擊者會(huì)提前向上層 DNS 服務(wù)器發(fā)送大量的查詢(xún)包,以延緩對(duì)真正請(qǐng)求的響應(yīng),從而為成功地攻擊目標(biāo)贏得足夠的時(shí)間。還和不同的DNS軟件及其設(shè)置相關(guān),比如:有些軟件會(huì)對(duì)相同的請(qǐng)求包數(shù)量進(jìn)行限制,這樣會(huì)增加攻擊的難度。即便如此, “生日攻擊”的危害仍然不能忽視。可以使DNS服務(wù)器Cache中毒的。
3.2防御方案
(1)采用隨機(jī)端口。如果作為被攻擊的服務(wù)器在發(fā)送DNS請(qǐng)求時(shí)使用隨機(jī)端口,這樣可以使ID號(hào)和端口號(hào)的組合空間擴(kuò)大6萬(wàn)多倍,大大增加攻擊的難度。
(2)為信息安全要求高的網(wǎng)站建立標(biāo)準(zhǔn)IP映射表。作為DNS 服務(wù)器, 有能力為少部分網(wǎng)站(比如涉及私密信息的網(wǎng)站或經(jīng)常訪問(wèn)的網(wǎng)站)制作靜態(tài)的標(biāo)準(zhǔn)DNS映射表,這樣可以保證這種攻擊對(duì)這部分網(wǎng)站無(wú)從下手。
(3)被動(dòng)檢測(cè)法。由于此類(lèi)攻擊往往需要在短時(shí)間內(nèi)發(fā)送大量的針對(duì)同一個(gè)域名的請(qǐng)求包,這顯然并不合乎常理,因此可以針對(duì)這一特點(diǎn)進(jìn)行DNS欺騙檢測(cè), 或者限制發(fā)送查詢(xún)包的數(shù)量,其效率較高。
4.結(jié)束語(yǔ)
本文針對(duì)2種主要的DNS欺騙攻擊的原理,給出了多種防范措施,并認(rèn)為不同的用戶可以根據(jù)自身的條件和對(duì)信息安全要求級(jí)別的高低,采用適合自己的應(yīng)對(duì)方案。雖然從理論上要做到百分之百地抵御DNS欺騙難度很高,但是仍然可以通過(guò)上述防范措施大大地降低 DNS欺騙攻擊成功的概率。在DNS欺騙攻擊中, 還有一類(lèi)較為特殊和復(fù)雜的相空間分析欺騙攻擊,這將是下一步工作的重點(diǎn)。 [科]