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

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

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

小知識(shí):

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

博弈主題:DNS 0DAY攻擊

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

重點(diǎn)知識(shí):DNS 0DAY攻擊和威脅

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

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

當(dāng)DNS喝下“毒藥”

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

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

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

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

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

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

模擬DNS緩存毒藥攻擊

第一步:創(chuàng)建DNS服務(wù)器。在Windows 2003 Server中,依次單擊“開(kāi)始→管理工具→配置您的服務(wù)器向?qū)А,在打開(kāi)的向?qū)ы?yè)中依次單擊“下一步”按鈕。配置向?qū)ё詣?dòng)檢測(cè)所有網(wǎng)絡(luò)連接的設(shè)置情況,若沒(méi)有發(fā)現(xiàn)問(wèn)題則進(jìn)入“服務(wù)器角色”向?qū)ы?yè)。

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

DNS服務(wù)器安裝完成以后會(huì)自動(dòng)打開(kāi)“配置DNS服務(wù)器向?qū)А睂?duì)話框。在“配置DNS服務(wù)器向?qū)А钡臍g迎頁(yè)面中單擊“下一步”按鈕,打開(kāi)“選擇配置操作”向?qū)ы?yè)。在默認(rèn)情況下不用更改選擇,一路點(diǎn)擊“下一步”進(jìn)入“區(qū)域名稱(chēng)”向?qū)ы?yè),在“區(qū)域名稱(chēng)”編輯框中鍵入一個(gè)任意的區(qū)域域名,例如hacker.com,單擊“下一步”按鈕。

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

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

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

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

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

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

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

如何避開(kāi)DNS緩存毒藥攻擊

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

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章