在上篇文章中,我們討論了正常ARP通信以及ARP緩存中毒是如何利用潛在惡意信息通過另一台設備重定向設備網絡通信的問題,這看似高級的中間人攻擊形式(即ARP緩存攻擊)其實是非常容易實現的。而在本文中我們將討論一種類似的中間人攻擊,即DNS欺騙。
DNS欺騙
DNS欺騙是這樣一種中間人攻擊形式,它是攻擊者冒充域名服務器的一種欺騙行為,它主要用於向主機提供錯誤DNS信息,當用戶嘗試瀏覽網頁,例如IP地址為XXX.XX.XX.XX ,網址為www.bankofamerica.com,而實際上登錄的確實IP地址YYY.YY.YY.YY上的www.bankofamerica.com ,用戶上網就只能看到攻擊者的主頁,而不是用戶想要取得的網站的主頁了,這個網址是攻擊者用以竊取網上銀行登錄證書以及帳號信息的假冒網址,DNS欺騙其實並不是真的“黑掉”了對方的網站,而是冒名頂替、招搖撞騙罷了。整個操作過程其實非常簡單,下面我們將探討DNS欺騙攻擊是如何實現的以及如何抵御這種攻擊。
正常DNS通信
域名系統(DNS)協議在RFC 1034/1035中是這樣定義的:它被認為是互聯網使用中最重要的協議之一。當你在瀏覽器輸入網址時(例如http://www.google.com),就會向DNS服務器發送一個DNS請求以便找到與該網址相對應的IP地址。這是因為與互聯網互連的路由器和設備並不知道google.com,它們只知道IP地址,如74.125.95.103。
DNS服務器本身的工作原理是,存儲IP地址到DNS名稱映射的記錄(稱為資源記錄)數據庫,聯系這些資源記錄與客戶端,並將這些資源記錄與其他DNS服務器聯系。整個企業和整個互聯網的DNS服務器架構是有點復雜的,事實上,有很多關於DNS架構的專門書籍,但在本文中我們將不會涵蓋DNS架構或者所有不同DNS通信類型的內容,不過我們將介紹基本的DNS通信,如圖1所示。
圖1: DNS查詢和響應
DNS函數是屬於查詢/響應類型的格式,當客戶端希望解析DNS域名為IP地址時,就會向DNS服務器發送一個查詢,然后服務器會將對應的作為回復。從客戶端的角度來看,看到的只有兩個數據包:查詢和響應。
圖2: DNS查詢和響應數據包
而當我們進一步考慮DNS遞歸問題時,這種情況就會變得更加復雜。由於互聯網DNS結構的層次性,DNS服務器需要能夠互相通信以便獲取客戶端發送的查詢所對應的答案。我們的內部DNS服務器可能知道本地局域網絡服務器的IP地址映射,但是我們不能指望內部DNS服務器知道全世界網絡的IP地址映射。這也就是遞歸發揮作用的地方,就是當一台DNS服務器代表客戶端的名義向另一台DNS服務器發送查詢請求,也就是說,這種情況下,DNS服務器變成了客戶端,如圖3所示。
圖3: DNS通過遞歸的查詢和響應
欺騙DNS
執行DNS欺騙攻擊的方法有很多,在這里我們將使用一種稱為DNS ID欺騙的技術。
每個通過互聯網發送的DNS請求都包含一個獨特的識別碼,其目的在於辨識查詢和響應,並將對應的查詢和響應配對在一起。這就意味着,如果我們的攻擊計算機可以攔截目標設備發送的DNS查詢,我們就只需要做一個包含該識別碼的假數據包,這樣目標計算機就會根據識別碼而接受我們發送的查詢結果。
我們將使用一個簡單的工具分兩個步驟來完成整個操作。首先,我們對目標設備進行ARP緩存中毒攻擊以重新路由通過攻擊主機的目標設備的通信,這樣我們就能夠攔截DNS查詢請求,然后我們就能夠發送欺騙性的數據包。這樣做的目的是為了讓目標網絡的用戶訪問我們制造的惡意網址而不是他們試圖訪問的網址,如圖4所示。
圖4: 使用DNS ID欺騙方法的DNS欺騙攻擊
有幾種不同的工具可以用於執行DNS欺騙攻擊,我們選擇使用Ettercap,它包含windows和Linux兩個版本,大家可以點擊此處下載該工具。如果你稍微研究一下這個網址就會發現Ettercap包含很多除DNS欺騙外的功能,它可以用於很多形式的中間人攻擊。
如果你是在windows系統中安裝Ettercap,你會發現它包含一個很強大的圖形用戶界面,不過對於DNS欺騙的情況,我們只需要使用命令行界面。
在操作Ettercap之前,需要進行一些配置。Ettercap的核心是數據包嗅探器,主要利用不同的插件來執行不同的攻擊。dns_spoof插件是用於本文示例的工具,所以我們需要修改與該插件相關的配置文件。在windows系統中,該文件位於C:\Program Files (x86)\EttercapNG\share\etter.dns以及/usr/share/ettercap/etter.dns,這個文件很簡單並且包含你想要欺騙的DNS記錄。對於我們而言,我們希望所有試圖打開yahoo.com的用戶被定向到本地網絡的主機上,所以我們加入了一些條目,正如圖5中所示。
圖5: 添加欺騙性的DNS記錄到etter.dns
這些信息就是告訴dns_spoof插件這樣的信息:當它發現針對yahoo.com www.yahoo.com或者的DNS查詢請求時,就發送IP地址172.16.16.100作為響應。在實際情況下,172.16.16.100會運行某種web服務器軟件向用戶展現假冒網站。
一旦文件配置好並保存后,我們就可以執行命令字符串來發動攻擊了,命令字符串使用以下選項:
-T –指定文本界面的使用
-q –以靜音模式運行命令,這樣捕捉的數據包不會輸出到屏幕
-P dns_spoof –指定dns_spoof插件的使用
-M arp –發起中間人ARP中毒攻擊以攔截主機間的數據包
// // -指定整個網絡作為攻擊的目標
我們需要的最終命令字符串為:
Ettercap.exe –T –q –P dns_spoof –M arp // //
運行此命令將啟動兩個階段的攻擊,首先是對網絡設備的ARP緩存中毒攻擊,然后是發送假的DNS查詢響應信息。
圖6:Ettercap主動搜尋DNS查詢
一旦啟動,任何用戶試圖打開www.yahoo.com都會被重新定向到我們的惡意網站。
圖7: 從用戶角度看到的DNS欺騙的結果
如何抵御DNS欺騙攻擊
DNS欺騙攻擊是很難防御的,因為這種攻擊大多數本質都是被動的。通常情況下,除非發生欺騙攻擊,否則你不可能知道你的DNS已經被欺騙,只是你打開的網頁與你想要看到的網頁有所不同。在很多針對性的攻擊中,用戶都無法知道自己已經將網上銀行帳號信息輸入到錯誤的網址,直到接到銀行的電話告知其帳號已購買某某高價商品時用戶才會知道。這就是說,在抵御這種類型攻擊方面還是有跡可循:
保護內部設備: 像這樣的攻擊大多數都是從網絡內部執行攻擊的,如果你的網絡設備很安全,那么那些感染的主機就很難向你的設備發動欺騙攻擊。
不要依賴DNS:在高度敏感和安全的系統,你通常不會在這些系統上瀏覽網頁,最后不要使用DNS。如果你有軟件依賴於主機名來運行,那么可以在設備主機文件里手動指定。
使用入侵檢測系統: 只要正確部署和配置,使用入侵檢測系統就可以檢測出大部分形式的ARP緩存中毒攻擊和DNS欺騙攻擊。
使用DNSSEC: DNSSEC是替代DNS的更好選擇,它使用的是數字前面DNS記錄來確保查詢響應的有效性,DNSSEC現在還沒有廣泛運用,但是已被公認為是DNS的未來方向,也正是如此,美國國防部已經要求所有MIL和GOV域名都必須開始使用DNSSEC。
總結
從攻擊技術水平和惡意意圖來看,DNS欺騙攻擊是非常致命的中間人攻擊形式,使用這種攻擊技術我們可以利用釣魚技術來竊取登錄信息,利用漏洞安裝惡意軟件或者導致拒絕服務的情況。在下篇文章中,我們將分析“哈希值傳遞”攻擊,看看它們如何被用於登錄windows計算機,而不需要帳號信息。
備注:轉自IT專家網