交換式以太網中的ARP與DNS欺騙技術分析

http://www.51kaifa.com/jswz/read.php?ID=2983

摘要:利用TCP/IP協議缺陷進行欺騙攻擊是目前網絡中常出現的攻擊方法,通過與網絡監聽的結合,攻擊者能在不被察覺的情況下實現對被攻擊者通信數據的截獲並篡改,給當今網絡通信安全帶來了嚴重威脅。本文分析了在交換式以太網中利用ARP欺騙突破交換網絡對數據監聽的限制,成爲“中間人”截獲DNS報文,進而僞造DNS報文進行DNS欺騙的技術,並給出基於WinPcap的實現。
關鍵詞:交換式以太網;ARP 欺騙;中間人攻擊;DNS 欺騙;網絡安全

1. 引言
    以太網按其信息交換的方式可分爲共享式以太網和交換式以太網。共享式以太網通過集線器進行網絡互聯,集線器將每個端口收到的數據幀向所有其它端口以廣播形式發送,因此任意主機都可以通過將網卡設置爲混雜模式來監聽網內的所有通信;而交換式以太網是通過交換機將網內主機相連,交換機將對每個端口收到數據幀進行源和目的MAC地址檢測,然後與內部動態的MAC端口映射表進行比較,若數據幀的源MAC地址不在映射表中,則將該MAC地址和對應接收端口加入映射表中,同時根據映射表中與目的MAC地址對應的端口號,交換機把數據幀僅從該端口發送出去。因此交換機的每個端口可平行、安全、同時地互相傳輸信息,其它端口的主機即使將網卡設置爲混雜模式,也只能監聽到連結在同一端口上主機間的數據傳輸。
  針對交換式以太網的特點,要使本不應到達本地的數據幀到達本地,實現對網絡中通信的監聽和進一步的DNS欺騙攻擊,目前有兩種方法:MAC洪泛和ARP欺騙。MAC洪泛是指向交換機發送大量含有虛假MAC地址和IP地址的數據幀,溢出交換機中存儲MAC端口映射表的有限空間,致使交換機就進入了所謂的“打開失效模式(Failopen Mode)”,即進入和集線器相同的廣播轉發模式;ARP欺騙則是通過欺騙被攻擊者將攻擊者的MAC地址作爲網關MAC地址或使被攻擊者認爲網關的MAC地址是廣播地址FF-FF-FF-FF-FF-FF。MAC洪泛容易造成網絡不穩定,且攻擊者需要處理接收到的網內大量數據包,所以ARP欺騙技術較爲常用。因此,本文將介紹以ARP欺騙突破交換式以太網對數據監聽的限制,成爲“中間人(man-in-middle)”截獲DNS報文,進而僞造DNS報文進行DNS欺騙的技術。

2. 欺騙原理
2.1 ARP 欺騙

    在TCP/IP網絡環境下,一個IP數據包到達目的地所經過的網絡路徑是由路由器根據數據包的目的IP地址查找路由表決定的,但IP地址只是主機在網絡層中的地址,要在實際的物理鏈路上傳送數據包,還需要將 IP數據包封裝到MAC幀後才能發送到網絡中。同一鏈路上的哪臺主機接收這個MAC幀是依據該MAC幀中的目的MAC地址來識別的,即除了同一鏈路上將網卡置爲混雜模式的主機外,只有當某臺主機的MAC地址和鏈路中傳輸的MAC幀的目的MAC地址相同時,該主機纔會接收這個MAC幀並拆封爲IP數據包交給上層模塊處理。因此,每一臺主機在發送鏈路層數據幀前都需要知道同一鏈路上接收方的MAC地址,地址解析協議ARP正是用來進行IP地址到MAC地址的轉換的。同時爲了避免不必要的ARP報文查詢,每臺主機的操作系統都維護着一個ARP高速緩存(ARP Cache),記錄着同一鏈路上其它主機的IP地址到MAC地址的映射關係。ARP高速緩存通常是動態的(該緩存可以手工添加靜態條目),由系統在一定的時間間隔後進行刷新。
    ARP協議雖然是一個高效的數據鏈路層協議,但作爲一個局域網協議,它是建立在各主機之間相互信任的基礎上的,所以ARP協議存在以下缺陷:ARP高速緩存根據所接收到的ARP協議包隨時進行動態更新;ARP 協議沒有連接的概念,任意主機即使在沒有ARP請求的時候也可以做出應答;ARP協議沒有認證機制,只要接收到的協議包是有效的,主機就無條件的根據協議包的內容刷新本機ARP 緩存,並不檢查該協議包的合法性。因此攻擊者可以隨時發送虛假ARP包更新被攻擊主機上的ARP緩存,進行地址欺騙或拒絕服務攻擊。


    針對交換機根據目的MAC地址來決定數據包轉發端口的特點,ARP欺騙的實現如圖1所示:假設主機C 爲實施ARP欺騙的攻擊者,其目的是截獲主機B和主機A間的通信數據,且主機C 在實施ARP 欺騙前已經預先知道A 和B的IP 地址。這時C 先發送ARP 包獲得主機B 的MAC 地址,然後向B發送ARP Reply 數據包,其中源IP地址爲A的IP地址,但是源MAC地址卻是主機C的MAC地址。主機B收到該ARP Reply後,將根據新的IP與MAC 映射對更新ARP 緩存。這以後當B給A發送數據包時,目標MAC地址將使用C的MAC 地址,因此交換機根據C的MAC地址就將數據包轉發到攻擊者C所在的端口。同理攻擊者C發送ARP Reply使主機A確信主機B的MAC地址爲C的MAC地址。在間歇的發送虛假ARP Reply的同時,攻擊者C打開本地主機的路由功能,將被劫持的數據包轉發到正確的目地主機,這時攻擊者對主機A 和B 來說是完全透明的,通信不會出現異常,但實際上數據包卻被C 非法截獲,攻擊者C成爲了“中間人”。
2.2 DNS欺騙
    主機域名與IP 地址的映射關係是由域名系統DNS來實現的,現在Internet上主要使用Bind 域名服務器程序。DNS 協議具有以下特點:
    (1) DNS 報文只使用一個序列號來進行有效性鑑別,序列號由客戶程序設置並由服務器返回結果,客戶程序通過它來確定響應與查詢是否匹配,這就引入了序列號攻擊的危險;
    (2) 在DNS 應答報文中可以附加信息,該信息可以和所請求的信息沒有直接關係,這樣,攻擊者就可以在應答中隨意添加某些信息,指示某域的權威域名服務器的域名及IP,導致在被影響的域名服務器上查詢該域的請求都會被轉向攻擊者所指定的域名服務器上去,從而對網絡的完整性構成威脅;
    (3) DNS的高速緩存機制,當一個域名服務器收到有關域名和IP的映射信息時,它會將該信息存放在高速緩存中,當再次遇到對此域名的查詢請求時就直接使用緩存中的結果而無需重新查詢。
針對DNS協議存在的安全缺陷,目前可採用DNS 欺騙技術有:
    (1)內應攻擊。攻擊者在非法或合法地控制一臺DNS 服務器後,可以直接操作域名數據庫,修改指定域名所對應的IP 爲自己所控制的主機IP。於是,當客戶發出對指定域名的查詢請求後,將得到僞造的IP 地址。
    (2) 序列號攻擊。DNS協議格式中定義了序列號ID是用來匹配請求數據包和響應數據報,客戶端首先以特定的ID向 DNS服務器發送域名查詢數據包,在DNS服務器查詢之後以相同的ID號給客戶端發送域名響應數據包。這時客戶端會將收到的DNS響應數據包的ID和自己發送的查詢數據包ID相比較,如果匹配則表明接收到的正是自己等待的數據報,如果不匹配則丟棄之。利用序列號進行DNS欺騙的關鍵是僞裝DNS服務器向客戶端發送DNS 響應數據包,並在DNS服務器發送的真實DNS響應數據報之前到達客戶端,從而使客戶端DNS緩存中查詢域名所對應的IP就是攻擊者僞造的IP,因此將客戶端帶到攻擊者所希望的網站。其欺騙的前提條件是攻擊者發送的DNS響應數據包ID必須匹配客戶的DNS查詢數據包ID。
在實際欺騙攻擊中,利用序列號進行DNS欺騙可分兩種情況:第一,當攻擊者與DNS服務器、本地主機與客戶端主機均不在同一個局域網內時,攻擊者可以向客戶端主機隨機發送大量DNS響應數據報,其中序列號是任意給定的,因此序列號和客戶端查詢報文序列號匹配的概率很低; 第二,當攻擊者至少與DNS服務器或客戶端主機中的某一個處在同一個局域網內時,對於共享式以太網攻擊者可以通過嗅探得到DNS查詢報文的序列號, 對於交換式以太網攻擊者就需要通過ARP欺騙獲取DNS查詢報文序列號。


3.具體實現 
    爲了能在Windows下發送原始數據包,本文利用了WinPcap來開發實驗程序。WinPcap是一個Win32平臺下進行數據包捕獲和網絡分析的開源程序庫,它具有內核級的包過濾器,提供了捕獲原始數據包,按照一定規則過濾數據包,以及發送原始數據包功能。
3.1 實驗設計
    實驗程序的假設應用環境是攻擊者和被攻擊客戶端(也可以是域名服務器)處於同一個交換式以太網中。首先,打開本地攻擊者主機的路由功能,設置Windows2000 Server註冊表鍵值HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/IPEnableRouter = 0x1,這樣在實施欺騙攻擊時被攻擊客戶端仍能訪問互聯網,達到隱蔽攻擊者的目的。然後根據網關和被攻擊客戶端的IP發送ARP請求得到兩者的MAC地址,爲攻擊做好準備。
    要突破交換式以太網數據監聽的限制,成爲“中間人”截獲DNS報文,實驗程序中創建了兩個線程。一個線程進行實時的ARP欺騙,其具體負責間歇地向被攻擊客戶端和網關發送僞造的ARP響應報文,更新被攻擊客戶端和網關的ARP緩存,讓攻擊者成爲雙方通信的中繼節點,即作爲“中間人”插入被攻擊客戶端和網關的通信路徑中,從而截獲被攻擊客戶端和網關間的所有數據通信,爲進行DNS欺騙奠定基礎。
    另一個線程監聽網關和被攻擊客戶端之間的數據包,若發現其中有客戶發送的DNS域名服務查詢數據包(目的端口爲53),則提取客戶DNS查詢數據包中的ID序列號,僞造一個DNS響應報文發送給查詢域名的客戶,該響應報文中就帶有攻擊者希望客戶去訪問的IP地址。這樣客戶將先收到僞造的DNS響應報文並訪問錯誤的或者被攻擊者控制的網站。整個攻擊的過程如圖2所示。
3.2對進一步Web欺騙的分析
    通過DNS欺騙,客戶將訪問到錯誤的網站,若攻擊者在讓客戶訪問的虛假網站上克隆了客戶欲訪問的真實網站,則對於普通計算機用戶來說是無法分辨網站的真實性的,因此攻擊者可誘騙客戶輸入如賬號和密碼等信息然後再將客戶端重定向到真實網站,而客戶卻對自己遭到欺騙攻擊的事實毫無察覺。
    此外,對於Web 服務等有鏈接服務,客戶每次訪問獲得的數據中常常包含許多鏈接,而客戶端用戶也常常根據客戶端界面的引導而對這些鏈接指向的地址進行訪問。由於攻擊者作爲“中間人”轉發客戶端和Internet間通信的數據流,所以攻擊者可以不進行DNS欺騙,直接對服務器返回內容中的鏈接進行修改,將它們指向攻擊者控制的機器上去。當然,攻擊者還要保留原來鏈接的足夠信息,以便在收到新的訪問請求時攻擊者能夠代替客戶去訪問正確的地址,回送看似正確的內容。當然,細心的用戶可以通過查看Web 瀏覽器中的狀態行、地址行或網頁源代碼等發現自己已經進入假冒的頁面,這時攻擊者就需要進行更細緻的欺騙,文獻[4]中詳細介紹了這些技術。

4.結論
通過本文的分析得知,在交換式以太網中要進行數據監聽和DNS欺騙等,都需要先進行ARP欺騙,因此在以太網中防禦ARP欺騙顯得尤爲重要。目前,針對ARP欺騙的防禦可以採用在目標主機的ARP緩存中設置靜態地址映射記錄,但其缺點是若改變了網內主機的IP,就需要重新設置ARP緩存,所以運用不廣;也可以對網絡中的ARP報文進行被動檢測或主動發送ARP查詢報文,當發現一個IP地址對應兩個MAC地址時,就存在欺騙攻擊的可能性。總的來說,由於ARP設計存在缺陷,要根本解決ARP欺騙問題比較困難,作爲在IPv6網絡中替代ARP協議的鄰居發現協議ND同樣也存在被欺騙攻擊的可能,目前IETF正在開發的安全鄰居發現協議SEND可能在下一代網絡中解決此問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章