全面剖析DNS 0DAY攻擊、威脅以及防治

如果你訪問大型知名網(wǎng)站打開的卻是病毒網(wǎng)站,如果你訪問網(wǎng)銀的官方網(wǎng)站打開的卻是假冒網(wǎng)銀頁面,如果訪問的是正規(guī)網(wǎng)站打開的卻是色情網(wǎng)站……這些情況聽起來不可思議,輸入的網(wǎng)址是正確的為什么打開的卻是其他網(wǎng)站呢?想知道這個黑客圈中的秘密嗎?

本次曝光的DNS漏洞危害性非常大,該漏洞能夠讓黑客在10 秒之內(nèi)發(fā)起一個“緩存毒藥攻擊”,輕松地偽造任何網(wǎng)站,比如當你輸入一個正確的銀行網(wǎng)站域名時,你可能訪問到的是一個黑客偽造的站點。

小知識:

DNS 是域名系統(tǒng) (Domain Name System) 的縮寫。在Internet上域名與IP地址之間是一一對應(yīng)的,域名雖然便于人們記憶,但機器之間只能互相認識IP地址,它們之間的轉(zhuǎn)換工作稱為域名解析,域名解析需要由專門的域名解析服務(wù)器來完成,DNS就是進行域名解析的服務(wù)器。

博弈主題:DNS 0DAY攻擊

技術(shù)難度:★★★★

重點知識:DNS 0DAY攻擊和威脅

由于該漏洞的利用細節(jié)被一名提前知情的黑客“意外”的寫在了自己的博客上,因此很快就有黑客根據(jù)這些細節(jié)找到了漏洞并編寫可以利用的攻擊代碼.由于該漏洞公布出來還不到一個月的時間,因此仍然有部分受到該漏洞威脅的設(shè)備和軟件廠商沒有發(fā)布補丁,這也將許多用戶置于了危險的黑客攻擊范圍之中,因為從今以后沒有人知道自己輸入網(wǎng)址之后出現(xiàn)的網(wǎng)站是否是真實的,DNS突然讓網(wǎng)絡(luò)變得不可信起來。

此次的DNS漏洞并不是針對某一個操作系統(tǒng)或者軟件的,而是可以廣泛的應(yīng)用于所有的DNS服務(wù)器中,不受操作系統(tǒng)等限制,因此包括Cisco、Apple、Linux等許多知名廠商的產(chǎn)品都或多或少會受到影響。

當DNS喝下“毒藥”

在互聯(lián)網(wǎng)中,DNS負責轉(zhuǎn)換主機名為IP地址,是Internet連接系統(tǒng)中重要的操作,網(wǎng)絡(luò)中每一個域名都對應(yīng)一個惟一的IP地址,這一命名的方法或這樣管理域名的系統(tǒng)叫做域名管理系統(tǒng)。

通常我們在瀏覽網(wǎng)站的時候會直接輸入網(wǎng)站的域名,但是互聯(lián)網(wǎng)中的計算機并不能夠依靠域名來實現(xiàn)鏈接,他們?nèi)匀恍枰狪P地址來互相識別,因此DNS服務(wù)器就承擔了將域名解析為IP地址的工作。

由于針對DNS請求的時序和帶寬考慮,多數(shù)DNS服務(wù)器本地存儲從其他DNS服務(wù)器接收到的應(yīng)答,這些存儲應(yīng)答的區(qū)域成為緩存,一旦應(yīng)答存儲在緩存中,DNS服務(wù)器就可以在一段時間里(稱為存活時間)使用本地存儲的響應(yīng),直至下次查詢DNS服務(wù)器重刷新應(yīng)答拷貝。

DNS緩存毒藥攻擊就是更改DNS服務(wù)器的DNS緩存中的條目,導致緩存中與主機名相關(guān)的IP地址不匹配正確的位置。如www. antiy.com映射到IP地址192.168.0.1,成功進行DNS緩存毒藥攻擊后就可以將www. antiy.com映射到10.0.0.1。

此次的DNS漏洞主要是因為驗證DNS響應(yīng)的DNS事件ID和源端口號隨機性不強,導致攻擊者創(chuàng)建匹配的DNS請求偽造響應(yīng)的難度下降,從而實現(xiàn)了可緩存攻擊。

通常在DNS協(xié)議規(guī)定中包含一個16位的事務(wù)ID字段,如果正確實現(xiàn)這個規(guī)定并使用加強的隨機數(shù)生成器使用事務(wù)ID,攻擊者就需要平均32,768次嘗試才能成功猜測到這個ID。但由于協(xié)議實現(xiàn)的缺陷,黑客可使用比較小的位數(shù)來處理這個事務(wù)ID,也就表示猜測數(shù)值將大大減少。

模擬DNS緩存毒藥攻擊

第一步:創(chuàng)建DNS服務(wù)器。在Windows 2003 Server中,依次單擊“開始→管理工具→配置您的服務(wù)器向?qū)А,在打開的向?qū)ы撝幸来螁螕簟跋乱徊健卑粹o。配置向?qū)ё詣訖z測所有網(wǎng)絡(luò)連接的設(shè)置情況,若沒有發(fā)現(xiàn)問題則進入“服務(wù)器角色”向?qū)ы摗?/P>

然后在“服務(wù)器角色”列表中單擊“DNS服務(wù)器”選項(圖1),并單擊“下一步”按鈕。打開“選擇總結(jié)”向?qū)ы,如果列表中出現(xiàn)“安裝DNS服務(wù)器”和“運行配置 DNS 服務(wù)器向?qū)砼渲肈NS”,則直接單擊“下一步”按鈕。

DNS服務(wù)器安裝完成以后會自動打開“配置DNS服務(wù)器向?qū)А睂υ捒。在“配置DNS服務(wù)器向?qū)А钡臍g迎頁面中單擊“下一步”按鈕,打開“選擇配置操作”向?qū)ы。在默認情況下不用更改選擇,一路點擊“下一步”進入“區(qū)域名稱”向?qū)ы,在“區(qū)域名稱”編輯框中鍵入一個任意的區(qū)域域名,例如hacker.com,單擊“下一步”按鈕。

這時跳轉(zhuǎn)到“轉(zhuǎn)發(fā)器”向?qū)ы,在IP地址編輯框中鍵入ISP(或上級DNS服務(wù)器)提供的DNS服務(wù)器IP地址(圖2),單擊“下一步”按鈕后依次單擊“完成”按鈕即可結(jié)束“hacker.com”區(qū)域的創(chuàng)建過程和DNS服務(wù)器的安裝配置過程。

第二步:DNS服務(wù)配置好后,還需要創(chuàng)建一個用來訪問Web站點的域名“www.hacker.com”。依次單擊“開始→管理工具→“DNS”菜單命令,打開“dnsmagt”控制臺窗口。

在左窗格中依次展開“ServerName→正向查找區(qū)域”目錄。然后用鼠標右鍵單擊“hacker.com”區(qū)域,執(zhí)行快捷菜單中的“新建主機”命令。然后打開“新建主機”對話框,在“名稱”編輯框中鍵入一個能代表該主機所提供服務(wù)的名稱,例如www。在“IP地址”編輯框中鍵入該主機的IP地址(如192.168.0.198),單擊“添加主機”按鈕,很快就會提示已經(jīng)成功創(chuàng)建了主機記錄。

此時DNS服務(wù)器已經(jīng)創(chuàng)建成功,并且創(chuàng)建了合適的域名,但在客戶機的瀏覽器中仍然無法開始測試,主要因為客戶機并不知道我們配置的DNS服務(wù)器在哪里,因此不能識別用戶輸入的域名。此時你必須手動設(shè)置DNS服務(wù)器的IP地址才行。

在Windows控制面板網(wǎng)絡(luò)連接打開“Internet協(xié)議(TCP/IP)屬性”對話框,然后在“首選DMS服務(wù)器”編輯框中設(shè)置剛剛部署的DNS服務(wù)器的IP地址(圖3),此時我們就完成了DNS服務(wù)器環(huán)境的模擬。

第三步:環(huán)境搭設(shè)完成后,現(xiàn)在我們就可以開始模擬攻擊,目前主要有C語言和Ruby語言兩種編譯的攻擊程序。下面我們以C語言編譯的Exp攻擊程序為例,攻擊我們搭設(shè)的域名服務(wù)器,竄改它的真正IP地址指向。我們首先將w w w . h a c k e r.com域名指向新浪網(wǎng)的IP地址,然后在CMD命令窗口中運行攻擊程序。輸入攻擊命令:$ kaminsky-attack q.q.q.q r.r.r.r a.a.a.a 1234 url 220.181.69.235 8192 16此時,我們再次打開瀏覽器輸入 url后,域名已經(jīng)由新浪被解析到搜狐的網(wǎng)頁中(圖4)。

如果用Ruby攻擊程序,需要先安裝Ruby的解釋器(代碼下載地址:http:// w w w . s h u d o o .com/bzsoft),然后將代碼下載另存為“test.rb”。再打開CMD窗口,輸入“ruby test.rb”運行即可。

如何避開DNS緩存毒藥攻擊

目前,已經(jīng)有了針對這個DNS漏洞的升級補丁包了,及時升級可以避免DNS服務(wù)器被黑。對于個人用戶而言,可以通過修改Windows中的HOSTS文件,將網(wǎng)站的域名和IP地址強行制定,來達到預(yù)防攻擊的目的。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章