1. 程式人生 > >DNS快取伺服器投毒

DNS快取伺服器投毒

只要黑客想這麼做,那我可以保證,您訪問的Google,絕不是Google,淘寶也不是淘寶,而是一個偽裝的網站,2008年,給ISP的DNS快取伺服器投毒是安全界最熱門的話題,並且,這個問題仍然無法解決……

通過本文,會看到一些奇妙的事情:

1、您發現在自家電腦的瀏覽器裡輸入www.91ri.org,訪問的卻是矛盾網。

2、隨意的給google加個子域名,比如test.91ri.org。

他們都基於一個技術 -- 給ISP(如,電信/網通)的DNS快取伺服器投毒,也稱作UDP會話劫持。
* 投毒原理

首先,您必須明白DNS的工作原理(詳細的DNS原理)
DNS投病

先看藍色的線條,這是正常的DNS解析流程

DNS投病

1)終端電腦(您的個人電腦)在用瀏覽器訪問網頁時,首先要在瀏覽器的位址列中填入一個網址(如,www.91ri.org),可我們的個人電 腦必須知道這個網址對應的IP地址,才可以正常瀏覽網頁(如,www.91ri.org對應的IP地址是1.1.1.1)。於是,你的電腦就傳送一個解析請求給暫存DNS伺服器,這個請求其實就是一句話“您能告訴我www.91ri.org對應的IP地址嗎?”

2)如果暫存DNS伺服器上沒有www.91ri.org對應的IP地址,則暫存DNS伺服器就會通過迭代的方法最後詢問主要DNS伺服器。主要DNS伺服器上儲存有www.91ri.org對應的IP地址。

3)主要DNS伺服器響應暫存DNS伺服器的請求,其實就是一句話“www.91ri.org對應的IP地址是1.1.1.1”。

4)暫存DNS伺服器收到主要DNS伺服器的應答後,把應答訊息轉發給一開始詢問自己的那臺個人電腦。

5)您的瀏覽器使用這個正確的IP訪問Google主頁。

這就意味著,黑客只要偽造響應報文給暫存DNS伺服器,暫存DNS伺服器上就記錄了錯誤的域名到IP地址的對應關係,然後暫存DNS伺服器把這個錯誤的對應關係發給先前查詢的使用者計算機的瀏覽器,這樣,您儘管在瀏覽器裡輸入的是www.91ri.org,可訪問的確不是真正的IP地址,這個地址是黑客任意指定的。

紅色線條是黑客在您DNS解析時的投毒過程

1)使用者請求暫存DNS伺服器返回www.91ri.org的IP地址。

2)如果暫存DNS伺服器上沒有www.91ri.org對應的IP地址,暫存DNS伺服器就會通過迭代的方法最後詢問主要DNS伺服器。

3)在主要DNS伺服器還未返回給暫存DNS伺服器時,黑客趁此時間空隙,把錯誤的對域名到IP的應關係告訴暫存DNS伺服器,這就是給DNS快取伺服器的一次投毒。

4)暫存DNS伺服器迴應給使用者錯誤的域名到IP對應關係。

5)使用者訪問黑客任意指定的IP地址,比如指向矛盾網(矛盾網因此獲得了非常高的流量,如果矛盾網想冒充網上銀行也是可以的)。

因為暫存DNS伺服器會在一段時間內傳送多個DNS查詢報文,所以為了使查詢報文與響應報文匹配,在DNS的報頭中使用了ID欄位,響應的報頭ID必須與先前發出去的查詢報頭ID一致才會被暫存DNS伺服器收錄,否則丟棄。所以,黑客若想投毒成功,必須猜中查詢報文的ID號。DNS報頭的ID號是16位2進位制,也就是有2的16次方=65536個ID號,這就是說黑客一次投毒的命中率是1/65536,不過只要攻擊程式稍微優化一下,這個命中率可以縮小到1/655,幾秒鐘就可以搞定。
* 攻擊測試

測試目的
僅為了引起ISP(比如,電信、網通)對DNS伺服器的安全重視,禁止非法使用。

攻擊工具
kaminsky-attack(您也可以通過Google搜尋下載原始碼自己編譯)

測試步驟

在命令列下輸入(我用的是Linux系統):

[[email protected]] ./kaminsky-attack q.q.q.q 202.96.209.5 a.a.a.a 1234 www 91ri.org. 8.8.8.8 8192 16

命令說明

q.q.q.q是傳送DNS請求的客戶機IP地址,可以隨意設定
202.96.209.5是上海的DNS快取伺服器(黑客投毒的目標)
a.a.a.a是91ri.org的權威DNS伺服器,可以隨便設定
www是主機名
91ri.org是域名(與www聯合起來就是一個完整的FQDN名)
8.8.8.8是毒藥,讓DNS快取伺服器儲存錯誤的A記錄(域名到IP的對應關係)
8192是猜測次數(次數越大命中率越大)

攻擊原理

這個程式有雙重身份,一個是普通客戶端,另一個是黑客,程式先給DNS快取伺服器傳送一個DNS解析請求,然後快速給DNS快取伺服器傳送8192個偽造的響應包,使其中毒。

重要提示

在測試之前,您應該明白,對於91ri.org這樣知名的網站,幾乎時時有使用者在請求解析,就是說DNS快取伺服器上總是有91ri.org的A記錄,而這時黑客的投毒是無效的。但這並不防礙黑客偽造2級域名,比如:
[[email protected]] ./kaminsky-attack q.q.q.q 202.96.209.5 a.a.a.a 1234 aorb 91ri.org. 8.8.8.8 8192 16

因 為可以肯定DNS快取伺服器上不會有aorb.91ri.org的A記錄,所以投毒100%成功,與此同時,www.googl.com也中毒了,這 是為什麼?如果您瞭解DNS響應報文,就會明白,響應報文中不但會有aorb.91ri.org的A記錄,還可以捎帶名曰附加記錄的資訊,這裡的附加記錄是www.91ri.org對應的IP地址。這樣,DNS快取伺服器同樣更新了www.91ri.org對應的錯誤IP地址。

另外,您也可以在本地查詢DNS快取伺服器上是否存有目標域名的記錄。在命令列下輸入:

[[email protected]]nslookup

>set norecurse(norecurse是告訴客戶端不使用遞迴查詢,因此,如果DNS快取伺服器上沒有目標域名記錄,則會返回相關提示。如果顯示的是非授權區域提供的資訊,則表示DNS快取伺服器已經有了目標域的資源記錄)

> 91ri.org
*防止投毒

目前還沒有更好辦法阻止黑客的這種行為,只有使DNS快取伺服器發出的查詢請求使用動態的UDP埠,UDP的埠號也是16位2進位制,這樣,與DNS的ID號相結合,號碼的命中率就是1/4294967296(2的32次方)。

也許您對下列資訊感興趣:

這是一段DNS投毒動畫http://www.infobyte.com.ar/demo/evilgrade.htm

TCP會話劫持

91ri.org點評:很老的東西了,剛才瀏覽文章時順手翻到的,就發上來給還不知道的同鞋分享分享。 因為個人疏忽 導致圖沒貼上 最近在忙著訓練準備比賽 搞的腦子都有點SB了 大家見諒  :-? 作者:AorB