摘要:闡述了ARP欺騙技術的基本原理,對ARP欺騙造成局域網無法正常通訊的實例進行分析,提出了針對ARP欺騙的多種防范辦法。實際應用效果較好。
關鍵詞:ARP;局域網;MAC地址;IP地址;TCP/IP
0 引言
在大型局域網的維護工作中,最近常常發現網絡時斷時續的現象,而且斷網的計算機也不固定。經過多方面的監控和測試,最終確定是時下比較流行的ARP欺騙病毒導致斷網。由于這個病毒相當普遍而且易發,所以對ARP欺騙的原理做一些分析是很有必要的。
1 ARP欺騙的基本原理
ARP協議是“Address Resolution Protocol”(地址解析協議)的縮寫,是一個位于TCP/IP協議棧中的低層協議,負責將某個IP)地址解析成對應的MAC地址。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
首先以總線型以太網上三臺主機通信(如圖1所示)了解一下ARP協議的通信過程。以太網中的主機A發送數據給主機B時,主機A會先檢查自己的ARP緩存表中是否有主機B的MAC地址。如果沒有,則主機A就會在網絡上發送一個廣播,向同一網段內的所有主機發出這樣的詢問:“IP地址為主機B(即IP地址為192.168.12)的MAC地址是什么?”網絡上其他IP地址不匹配主機并不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應:“IP地址為主機B的MAC地址是BB-BB-BB-BB-BB-BB”。這樣,主機A就獲得了主機B的MAC地址,并對ARP緩存表進行更新,隨后就可以向主機B發送信息了。

ARP欺騙過程如下:
假定主機A是進行監聽的主機(ARP欺騙發起的主機),B和C為以太網內任意兩臺臺主機,處于被監聽狀態。
①首先主機A主動向主機B發送ARP應答報文,告訴主機B,192.168.1.3地址的MAC地址改為AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是CC-CC-CC-CC-CC-CC)。
②主機A主動向主機c發送ARP應答報文,告訴主機c,192.168.1.2地址的MAC地址改為AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是BB-BB-BB-BB-BB-BB)。
③這樣,當主機c需要發數據給主機B的時候,因為主機B的IP地址192.168.1.2在c的ARP表中對應MAC地址是AA-AA-AA-AA-AA-AA,所以實際數據就轉發到主機A上。同理,當主機B發送數據到主機c的時候,數據也同樣發到了主機A上。
還有一些ARP欺騙采用存儲轉發方式:將C給B發送消息,改為c先發消息給A,A再發給B;將B給C發送消息,改為B把消息發給A,A再發給C。
2 ARP欺騙在局域網中的危害實例
下面以最基礎的通過VLAN通信的局域網為例,剖析ARP欺騙在局域網中的危害。
如圖2所示,假設局域網中的主機A、B、c、D等等處于VLAN2(192.168.2.0/24),Web代理服務器E處于VLANl(192.168.1.0/24),其IP地址是192.168.1.8。主機A想要連接Intemet,必須通過Web代理服務器E,A想發數據給E,就會發現服務器E的IP地址并不在自己所屬網段內,因此必須通過網關s2來轉發,因此,需要檢查自己的ARP緩存表里是否有網關s2的IP地址(192.168.2.254)所對應的MAC地址,如果沒有就通過ARP請求獲得,如果有就直接與網關通信,然后再由網關S2通過路由將數據包送到網關S1,網關S1收到這個數據包后發現是送給服務器E的,就會檢查自己的ARP緩存,看看里面是否有192.168.1.8對應的MAC地址,如果沒有就使用ARP協議獲得,如果有就用該MAC地址與Web服務器E通信。

當主機D被植入了ARP欺騙的木馬程序,D就主動向VLAN2中的所有主機發送ARP應答報文,告訴它們,網關S2的JP地址192.168.2254所對應的MAC地址是DD-DD-DD-DD-DD-DD(原先MAC地址是22-22-22-22-22-22)。所有接受到報文的主機都將更新自己的ARP緩存表。于是,當主機A想連接Internet的時候,會尋找IP地址為192.168.2.254的網關,因為對應的ARP緩存表已被修改,主機A最終找到的網關其實是主機D,于是把數據發送給了D,所以,主機無法連接Web服務器E,接入Internet失敗。同樣,其他的主機也無法接入Internet。
ARP欺騙最典型的應用就是一些盜號木馬。以傳奇盜號軟件為例,當軟件開始運行的時候,ARP欺騙也同時運行。在主機A中輸入賬號密碼想登錄傳奇服務器,由于A一直連不上Internet,而把它的相關數據一直發給監聽的主機D,所以D就能通過這個手段獲取A主機上的賬號和密碼。
當然,這只是針對代理服務器連接Internet的攻擊,同樣,ARP欺騙也會影響局域網中的Ftp、Telnet、Email等服務,并導致無法使用。
3 針對ARP欺騙的幾種防范方案
ARP欺騙實質上是利用主機對ARP應答的無條件信任,篡改主機的ARP緩存表,從而實現各種攻擊。因此,為了防御ARP攻擊,就需要保證主機的ARP緩存表的IP地址與MAC地址映射關系正確,盡可能地阻止非法篡改ARP緩存表。主要措施有以下幾點:
(1)主機上靜態地解析ARP緩存表
主機的IP和MAC地址對應表用手工維護,不作動態更新,可以避免ARP協議攻擊。大多數三層交換機都支持這種方法。但是,這種方法的缺陷也很明顯,移動或經常變化的網絡環境中,這種靜態手工維護MAC表的方式不適用。
(2)使用ARP服務器
使用ARP服務器查找自己的ARP轉換表來響應其他機器的ARP廣播,但必須確保這臺ARP服務器不被黑客攻擊。
(3)使用DHCP服務器
建立DHCP服務器(建議建在網關上),所有主機的IP地址及相關主機信息,只能從網關取得,網關開通DHCP服務,但是要給每個網卡綁定固定惟一的IP地址。一定要保持網內的機器IP/MAC一一對應的關系。
(4)使用三層交換方式
現在,更多的三層以至于四層交換機應用于局域網之中,第三層交換技術用的是IP路由交換協議,因而ARP欺騙攻擊在這種交換環境下不起作用。但相對來講第三(四)層交換機價格普遍比較昂貴。
上面所講的各種方法都是切實可行的,實際工作中,可以根據不同的網絡環境采取不同的方法。
舉個例子,一個有將近1000臺計算機的局域網,如果都采取第四鐘方法使用三層交換機連接,顯然費用過大,所以適當地在匯聚層采用幾臺三層交換機,可以有效地減少ARP欺騙的影響范圍。此外,由于前面三種方法都必須把ARP表或者DHCP對應表一一輸入,未免工作量太大(每臺機器都要輸入將近1000條記錄),所以可以采用一種折衷的方式。如果網絡更新不是太多的話,可以在第一種方法的基礎上作部分修改,編寫一個針對網關地址靜態ARP解析的批處理文件,內容如下:
@echo off
arp d
arp-s 1 92.1 68.2.254 22-22-22-22-22-22將這個批處理軟件拖到每臺主機“Windows—開始一程序一啟動”中。于是主機每次啟動的時候都會對網關進行靜態ARP綁定。雖然,這樣做也有缺陷:無法防范針對個別機器進行的ARP攻擊,比如說圖2中,D篡改的是主機B的地址,而非網關s2的地址時,就會發生斷網現象,但這樣的可能性很小,而且只有當任意主機和主機B通信的時候才會出現無法連接的情況。所以,對于如此大型的一個網絡,這種小范圍的、暫時的攻擊是可以接受的。
4 結束語
ARP協議在設計上是有一定缺陷的,而且為了節省ARP緩存表內存,被解析過的ARP條目的壽命都是有限的:如果一段時間內該條目沒有被引用過,則條目被自動刪除。在工作站PC的Windows環境中,ARP條目的壽命是2分鐘,在大部分Cisco交換機中,該值是5分鐘。這就注定了ARP表是在不斷更新的,因此給網絡黑客們提供了可利用的漏洞。本文提出的幾種解決辦法,通過實踐驗證,可以有效地避免ARP欺騙發生。ARP病毒版本不斷更新、不斷升級,給各地的網絡不斷帶來新的沖擊與危害,但是如果網絡管理員們能夠不斷學習新的防范欺騙類技術,提前做好防治工作,相信ARP的危害會減少到最小的程度。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。