?

Kaminsky域名系統緩存投毒防御策略研究

2013-09-29 05:19許成喜胡榮貴張巖慶
計算機工程 2013年1期
關鍵詞:投毒域名權威

許成喜,胡榮貴,施 凡,張巖慶

(電子工程學院網絡系,合肥 230037)

1 概述

域名系統(Domain Name System, DNS)是一個多層次的分布式系統,其基本功能是提供域名和 IP地址之間的映射關系,并存儲與域名相關的附加信息。DNS是當今互聯網最重要的基礎設施之一,早在2005年,互聯網治理問題工作組就將 DNS和根域名服務器系統列為關鍵互聯網資源[1],其安全性備受關注。

由于協議設計上的缺陷、DNS軟件漏洞及部署過程中不恰當的配置,DNS自應用以來就不斷遭受多種安全威脅。文獻[2]綜述了DNS面臨的安全威脅,主要有數據包截獲、ID猜測和查詢預測、緩存投毒、拒絕服務攻擊等。DNS緩存投毒通過偽造應答報文替換緩存服務器中的域名-IP的對應關系達到污染緩存的目的,具有容易實施、攻擊隱蔽、防御難度大的特點。但傳統的緩存投毒由于受TTL (Time To Live)的限制而很難成功[3]。Dan Kaminsky提出的新型緩存投毒方法成功繞過了 TTL的限制,能在很短的時間內(10 s)投毒成功[4]。

當前,針對 Kaminsky緩存投毒的防御主要有2種思路:

(1)通過增加DNS報文的信息熵提高投毒難度。

文獻[5]提出使用0x20比特編碼的防御策略,即通過隨機化查詢請求中字符的大小寫來增加查詢報文的信息熵,從而降低投毒成功的概率。這種方法的缺點是對于短小域名提供的保護很有限。最新的方法是源端口隨機化(Source Port Randomization, SPR)[6]技術,通過采用隨機化的源端口來增加 DNS報文的信息熵。這種方法的缺點在于不能抵御持續的Kaminsky投毒。

(2)修改當前的DNS體系。

IETF提出通過部署 DNS擴展協議 DNSSEC[7-9]來徹底防御類似攻擊。DNSSEC從概念、協議設計、報文格式、加密算法及密鑰管理等方面完善了原有DNS體系的不足,依靠公鑰基礎體系為DNS解析服務提供數據源身份認證和數據完整性驗證,能夠有效防止各種欺騙攻擊。但截止目前,DNSSEC尚未全面部署,不能提供應有的安全防護。因此,有必要為當前的緩存DNS服務器部署更為有效的防御措施。

針對Kaminsky攻擊所具有的可以繞過TTL限制及多次嘗試的特點,本文提出基于應答報文檢查的防御策略,在增加 DNS報文信息熵的同時明顯降低投毒者的有效嘗試次數,從而達到增加投毒難度的目的,并通過概率模型檢查工具 PRISM對該策略的有效性進行驗證。

2 DNS遞歸解析過程

DNS服務器分為權威 DNS服務器和緩存 DNS服務器2種。其中,權威服務器擁有其所管轄的域名的權威記錄,并只負責這些域名的解析,按 DNS層次結構可分為根服務器、頂級服務器等。根服務器處于 DNS層次結構最頂端,只負責解析頂級域名,頂級服務器負責解析與之相關的域名。緩存 DNS服務器是為了提高查詢效率、均衡負載而提出的,對外提供遞歸解析服務。遞歸解析是指解析器將用戶查詢請求發送給緩存DNS服務器,如果緩存DNS服務器中存在對應的資源記錄,則直接返回給用戶;否則,緩存DNS服務器向權威DNS服務器發起遞歸查詢,直到解析出查詢域名,再將結果返回給用戶。以查詢www.baidu.com為例,當緩存服務器中沒有相應的緩存時,一個典型的域名遞歸解析過程如圖1所示。

圖1 DNS遞歸解析過程

具體的解析步驟如下:

(1)用戶解析器向本地緩存DNS服務器發送域名查詢請求。

(2)本地緩存DNS服務器無相應資源記錄,向根DNS服務器發送查詢請求。

(3)根DNS服務器無相應資源記錄,返回頂級域名權威DNS服務器的IP地址。

(4)緩存DNS服務器向頂級域名權威DNS服務器發送查詢請求。

(5)頂級域名權威DNS服務器無相應資源記錄,返回baidu.com權威DNS服務器的IP地址。

(6)緩存DNS服務器向baidu.com權威DNS服務器發送查詢請求。

(7)baidu.com權威 DNS服務器找到相應資源記錄,返回www.baidu.com的IP地址。

(8)本地緩存DNS服務器將結果返回給用戶,并將資源記錄緩存到本地數據庫,直到該資源記錄的TTL到期。

若攻擊者能夠在步驟(6)之后、步驟(7)之前偽造出應答報文并發送至緩存 DNS服務器,則有可能修改緩存服務器的緩存記錄,這種攻擊就是 DNS緩存投毒。

3 Kaminsky投毒過程與分析

3.1 Kaminsky投毒過程

傳統的DNS緩存投毒受TTL的限制,即一次投毒失敗后需要等待服務器緩存資源記錄的 TTL過期后才能發起新一輪投毒[10]。

Kaminsky投毒則繞過了TTL的約束,主動向緩存DNS服務器查詢不存在的隨機化域名,這種域名在緩存 DNS服務器中必然沒有緩存,從而不存在TTL約束。因此,投毒者可以持續地進行投毒與嘗試。此外,Kaminsky投毒還利用了額外資源記錄中ns的glue記錄,即使是查詢不存在的域名,也會返回這些額外資源記錄,并且這些記錄能夠緩存在緩存 DNS服務器中。這種投毒為投毒者贏得大量連續的投毒時間和多次嘗試的機會,從而大大提高了投毒成功的概率。

Kaminsky投毒流程如圖2所示。

圖2 Kaminsky投毒流程

具體投毒步驟如下:

(1)投毒者向目標服務器發送一個 DNS查詢請求,該查詢請求中的域名使用目標域名和隨機序列的組合。如圖2所示,www.domain.com為目標域名,13481984是隨機生成的序列。顯然,這個查詢域名所對應的主機是不存在的,正常返回的應答報文中應答資源記錄部分應為NXDOMAIN,表示該域名主機不存在。

(2)目標服務器會按第2節中的DNS解析過程進行解析。投毒者在發送查詢請求后立即偽造大量應答報文并發送至目標服務器(圖2中以實線標出)。在投毒者偽造的應答報文中,應答資源記錄部分與權威應答一樣,但是權威資源記錄部分增加了一個偽造的NS記錄,并且在額外資源記錄部分含有相應的偽造IP地址。

(3)若該報文能在權威應答之前到達目標服務器,并能成功匹配原查詢報文的發送 IP地址、端口號和查詢 ID,則投毒成功。一旦投毒成功,該資源記錄將被寫入目標服務器的緩存中。在該記錄有效期內,對名字服務器 ns1.domain.com管轄的所有域名的查詢都將被發送到投毒者控制的IP中。

(4)當權威DNS服務器的應答報文到達緩存服務器時,將會被忽略,直接丟棄(圖2中以虛線標出)。

3.2 投毒成功概率與投毒時間的內在聯系

Kaminsky投毒機會窗口如圖3所示。

圖3 投毒機會窗口示例

為了分析投毒成功概率與投毒時間的內在聯系,將緩存服務器向權威服務器發送查詢請求與緩存服務器收到權威服務器應答之間的時間間隔定義為一個投毒機會窗口[10]。投毒者偽造的應答報文必須在投毒窗口內,即先于權威應答報文到達緩存服務器,才有可能被緩存DNS服務器所接受。

定義 Psuc為一個投毒機會窗口內投毒成功的概率,則有:

其中,B為投毒者占用的網絡帶寬;W為投毒機會窗口的大??;N為一個域名的權威服務器數量;I為DNS報文中的ID域范圍;P為UDP報文中的源端口號范圍;D為攻擊者發送報文的平均大小。

由于 Kaminsky投毒可以持續投毒,因此前后2次Kaminsky投毒可以看成獨立事件。定義Pk為持續Kaminsky投毒成功的概率,則下列等式成立:

其中,Psuc為一個投毒機會窗口內攻擊成功的概率;T為持續投毒的時間。

由式(2)可知,對于給定的 T和 W,Psuc和 Pk具有相同的增減性。

結合式(1)不難發現,要降低Kaminsky投毒的成功概率,可以考慮以下 2種方法:一種是通過擴大式(1)中I和P的變化范圍來增加DNS報文的信息熵;另一種是減少一個投毒機會窗口內投毒者的有效嘗試次數,使投毒者即使擁有很大的帶寬,也不能增加投毒成功的概率。本文綜合運用這2種方法,提出了基于應答報文檢查的防御策略。

4 基于應答報文檢查的防御策略

4.1 策略描述

通過以上分析可知,Kaminsky投毒成功的概率很大程度上依賴于以下2個條件:

(1)這種投毒能夠繞過 TTL的限制持續地進行投毒嘗試,直到投毒成功。

(2)在一個投毒機會窗口內,投毒者可以向目標發送多個偽造應答報文,提高投毒成功的概率。若按投毒者占用100 Mb/s的帶寬、DNS應答報文平均大小為80 Byte、投毒機會窗口為100 ms來計算,在一次投毒中投毒者可以進行 15 625次嘗試,大大提高了投毒成功的概率。

針對以上2點,本文對緩存服務器發出的查詢設置一個attack狀態,以標識該查詢是否受到攻擊。同時監聽并檢測應答數據報文,若沒有檢測到錯誤的應答報文,則執行正常的解析過程;否則,將 attack狀態置為TRUE,重新查尋被攻擊的域名,并將2次的查詢結果進行比對。為了避免循環進行重查而降低服務器效率,對已經重查的域名不再發起重查。

該策略的流程如圖4所示。

圖4 應答報文檢查策略流程

策略具體描述如下:

(1)監聽緩存服務器端網卡上所有目的地址是自身IP的數據包,若其UDP源端口為53端口,則可判定該報文為DNS應答報文。

(2)若接收到一個DNS應答報文,但其目的端口號與緩存服務器向外發送的查詢的源端口號不匹配,表示是惡意形成的報文,則轉到步驟(6)。

(3)若接收到一個DNS應答報文,與源端口匹配,但與DNS報文ID域不匹配,則轉到步驟(6)。

(4)若接收到一個DNS應答報文,與源端口和交易ID均匹配,但TTL>threshold,則轉到步驟(6),其中,threshold是當前緩存中已有記錄的最大TTL值。

(5)若上述條件均匹配,但源 IP地址不匹配,則轉到步驟(6),否則,接收應答報文。

(6)將attack狀態置為TRUE。保留當前查詢的合法應答報文,不更新緩存,重查該問題(對已經重查的問題,不再發起新的重查)。將得到的合法應答報文與當前應答進行比對,若應答部分相同,則接收該應答;否則,丟棄2次應答報文。

(7)將 attack狀態置為 FALSE,執行正常的解析過程。

4.2 策略分析

理論上,部署了基于應答報文檢查的防御策略后,在一個投毒窗口中,攻擊者只有一次性猜中應答報文才能不進入安全模式;若系統進入安全模式,投毒者則需要連續2次猜對應答報文才能攻擊成功。

設攻擊者一次性猜中應答報文的概率為P1,則:

其中,N為一個域名的權威服務器數量;I為DNS報文中的ID域范圍;P為UDP報文中的源端口號范圍。

設攻擊者連續 2次猜對應答報文的概率為 P2,那么:

由于這2種情況不會同時出現,因此一個機會窗口內攻擊的成功概率為:

由式(3)可以看出,第1種情況下攻擊者實際只有一次有效的嘗試機會。

由式(4)可知,第2種情況下投毒者需要猜測的報文空間呈指數級上升。

綜合上述2種情況,可使持續的投毒更難成功。

為了討論基于應答報文檢查的防御策略對 DNS服務器性能的影響,考慮以下2個場景:

(1)未進入安全模式

此時,只是進行常規的應答報文內容的匹配,系統不需要額外的開銷。

(2)進入安全模式

此時,報文檢查策略只對被攻擊的域名有影響,而不會影響到其他域名的查詢與解析。

因此,當服務器沒有遭到攻擊之前,正常的應答報文都能夠一次匹配成功,不需要額外開銷??梢?,該防御策略既能降低 Kaminsky投毒成功的概率,又能將防御控制在最小范圍內,避免波及其他正常的查詢與解析。

4.3 概率模型檢查

為了驗證上述模型的正確性,利用廣泛應用的概率模型檢查工具 PRISM建立持續時間的馬爾可夫鏈模型,對 Kaminsky投毒和防御策略進行驗證和檢查。

實驗考慮以下4個場景:

(1)DNS服務器采用固定源端口。

(2)DNS服務器采用固定源端口,采用基于應答報文檢查的策略。

(3)DNS服務器采用隨機化源端口。

(4)DNS服務器采用隨機化源端口,采用基于應答報文檢查的策略。

模型的參數設置為:投毒者帶寬為100 Mb/s,投毒機會窗口為 0.1 s。模型的檢查結果如圖 5~圖 8所示。

圖5 采用固定端口的防御策略成功概率

圖6 采用固定端口和應答報文檢查的防御策略成功概率

圖7 采用SPR的防御策略成功概率

圖8 采用SPR和應答報文檢查的防御策略成功概率

由模型檢查的結果得出以下結論:

(1)若緩存服務器采用固定端口,而沒有采取任何防御措施,則投毒者在3s之內成功概率可到到50%,在10 s左右即可投毒成功,可見Kaminsky投毒的危害性。

(2)若在固定端口的基礎上部署應答報文檢查的策略,則投毒者需要持續投毒3 h以上,才能獲得50%的成功概率。與單純采用固定源端口相比,攻擊難度增加3600倍。

(3)若采用SPR技術,投毒者則需要持續投毒12 h以上,才能獲得50%的成功概率,但對于一個有恒心的投毒者來說,持續投毒十幾個小時是可以接受的,因此也不安全。

(4)若將SPR技術和應答報文檢查策略結合使用,則可以獲得更高的安全性。典型地,投毒者需要攻擊20年,才可獲得 50%的成功概率。與單純采用 SPR技術相比,攻擊難度增加 14 600倍。這顯然是投毒者接受不了的。

綜上所述,無論基于哪種條件部署應答報文檢查策略,都能大幅度降低攻擊成功的概率。這是因為應答報文檢查策略將攻擊者置于一個兩難選擇:要么只有一次嘗試機會,要么連續2次匹配應答報文。任何一種情況都使攻擊成功的概率大幅降低。

5 結束語

本文從概率學角度對Kaminsky投毒進行分析,提出了基于應答報文檢查的防御策略,與當前防御策略相比,其顯著降低了投毒窗口內投毒者的有效嘗試次數并使投毒成功的難度呈指數級上升。在現有防御措施基礎上,能夠大大增強服務器抵抗持續Kaminsky投毒的能力。但是,現有的 DNS仍然十分脆弱,要從機制上保證 DNS的安全,還需要部署 DNSSEC。因此,研究DNSSEC的安全性及其對DNS協議的影響,將是下一步研究的課題。

[1]Internet Governance Landscape Background Paper[EB/OL].(2010-08-11).http://www.intgovforum.org/cms/2010/Back ground/Chinese-IGF-Background-Paper.pdf.

[2]Atkins D, Austein R.Threat Analysis of the Domain Name System(DNS)[S].RFC 3833, 2004.

[3]靳 沖, 郝志宇, 吳志剛.DNS緩存投毒攻擊原理與防御策略[J].中國通信, 2009, 6(4): 17-22.

[4]Doughety C R.Multiple DNS Implementations Vulnerable to Cache Poisoning[EB/OL].(2008-08-13).http://www.kb.cert.org/Vuis/id/800113.

[5]Dagon D, Antonakakis M, Vixie P.Increased DNS Forgery Resistance Through 0x20-Bit Encoding[C]//Proceedings of ACM CCS’08.[S.l.]: ACM Press, 2008: 211-222.

[6]Larsen M, Gont F.Transport Protocol Port Randomization Recommendations[S].RFC 6056, 2010.

[7]Arends R, Austein R, Larson M.DNS Security Introduction and Requirements[S].RFC 4033, 2005.

[8]Arends R, Austein R, Larson M.Resource Records for the DNS Security Extensions[S].RFC 4034, 2005.

[9]Arends R, Austein R, Larson M.Protocol Modifications for the DNS Security Extensions[S].RFC 4035, 2005.

[10]Petr E.An Analysis of the DNS Cache Poisoning Attack[EB/OL].(2009-11-02).http://labs.nic.cz/files/labs/DNS-cache-poisoning-attack-analysis.pdf.

猜你喜歡
投毒域名權威
食物中毒案
各大權威媒體聚焦流翔高鈣
Combosquatting域名搶注的測量研究
如何購買WordPress網站域名及綁定域名
跟蹤督察:工作干得實 權威立得起
權威發布
權威的影子
投毒兇手
把投毒看作“開玩笑”是情感荒漠化表現
網站更換域名的8個注意事項
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合