[摘 要] 目前利用TCP/IP協議安全漏洞進行欺騙攻擊的事件經常發生,攻擊者利用ARP欺騙進行拒絕服務攻擊(DoS)或中間人攻擊,造成網絡通信中斷或數據被截取和竄改,嚴重影響網絡的安全。本文通過ARP協議原理分析揭示ARP協議欺騙,并對ARP病毒攻擊提出一套有效可行的防犯措施和解決辦法。
[關鍵詞] ARP協議 ARP欺騙 ARP病毒
一、引言
ARP欺騙具有隱蔽性、隨機性的特點,在Internet上隨處可下載的ARP欺騙工具使ARP欺騙更加普遍。目前利用ARP欺騙的木馬病毒在局域網中廣泛傳播,給網絡安全運行帶來巨大隱患,是局域網安全的首要威脅。有時會出現網絡設備完好,運轉正常的情況下,局域網內用戶上網速度緩慢甚至完全阻塞的情況,這種現象往往是由于局域網內遭到ARP攻擊引起的,一些帶有ARP欺騙功能的木馬病毒,利用ARP協議的缺陷,像大規模爆發的流行性感冒一樣,造成網絡時斷時續,無法正常上網。同時清理和防范都比較困難,給不少的網絡管理員造成了很多的困擾。
二、ARP協議概述
ARP協議全稱為Address Resolution Protocol,即地址解析協議,是TCP/IP協議棧中的基礎協議之一,它工作于OSI模型的第二層,在本層和硬件接口間進行聯系, 同時為上層(網絡層) 提供服務。是將IP地址與網絡物理地址一一對應的協議,負責IP地址和網卡實際地址(MAC)之間的轉換。也就是將網絡層地址解析為數據鏈路層的MAC地址。在以太網中,一個網絡設備要和另一個網絡設備進行直接的通信,除了知道目標設備的IP地址外,還要知道目標設備的MAC地址。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通訊的順利進行。當一個網絡設備需要和另一個網絡設備通信時,它首先把目標設備的IP地址與自己子網掩碼進行“與”操作,以判斷目標設備與自己是否位于同一網段內,如果目標設備與源設備在同一網段內,則源設備以第二層廣播的形式(目標MAC地址全為1)發送ARP請求報文,在ARP請求報文中包含了源設備與目標設備的IP地址。如果目標設備與源設備不在同一網段,則源設備首先把IP分組發向自己的缺省網關,由缺省網關對該分組進行轉發。
三、ARP協議的缺陷
1.主機ARP列表是基于高速緩存動態更新的。由于正常的主機間的MAC地址刷新都是有時限的,這樣惡意用戶如果在下次交換之前成功地修改了被欺騙機器上的地址緩存,就可以進行假冒或拒絕服務攻擊。
2.可以隨意發送ARP應答分組。由于ARP協議是無狀態的,任何主機即使在沒有請求的時候也可以做出應答。因此任何時候發送ARP應答。只要應答分組是有效的,接收到ARP應答分組的主機就無條件地根據應答分組的內容刷新本機高速緩存。
四、ARP的主要攻擊類型
ARP期騙是指利用ARP協議的漏洞,通過向目標設備主機發送虛假的ARP報文,達到監聽或者截獲目標主機數據的攻擊手段。主要攻擊類型:冒充主機欺騙網關(對路由器ARP表的欺騙)、冒充網關欺騙主機(對內網PC的網關欺騙)。
1.冒充主機欺騙網關
攻擊主機C發出一個報文,其中源MAC地址為MAC C,源IP地址為IP A。這樣任何發往主機A的報文都會被發往攻擊主機C。網關無法與真實主機A直接通信。假如攻擊主機不斷地利用自己的真實MAC地址和其他主機的IP地址作為源地址發送ARP包,則網關無法與網段內的任何主機(攻擊主機C除外),進行直接通信。然而,這種情況下,交換機是不會產生任何報警日志的,原因在于,多個IP地址對應一個MAC地址在交換機看來是正常的,不會影響其通過IP所對應的MAC來交付報文。

如果攻擊者將網關ARP緩存中的MAC地址全部改為根本就不存在的地址,那么網關向外發送的所有以太網數據幀會丟失,使得上層應用忙于處理這種異常而無法響應外來請求,也就導致網關產生拒絕服務(不能響應外界請求,不能對外提供服務)。
2.冒充網關欺騙主機
(1)在主動攻擊中,攻擊者C主動向A發送ARP 應答數據包,告訴A,B(網關)的IP地址所對應的MAC地址是CC-CC-CC-CC-CC-CC,從而使得A修改自己的ARP列表,把B的IP地址對應的MAC地址修改為攻擊者C的MAC地址。
(2)同時,攻擊者C 也主動向B發送ARP應答數據包,告訴B,A的IP地址所對應的MAC 地址是CC-CC-CC-CC-CC-CC,從而使得B修改自己的ARP列表,把A的IP地址對應的MAC地址修改為攻擊者C的MAC 地址。
(3)從而使得A←→B 之間的通信形式變成A←→C←→B,實現了中間人攻擊。
在被動攻擊中,攻擊者C只在A或者B發送ARP請求數據包時,延時一段時間發送應答數據包,使得自己的應答包在正確的應答包之后到達,防止自己修改的相應主機的ARP 列表被正確的應答包再次修改。
那么主機A發往網關B的報文都會被發往攻擊主機C,造成主機A突然斷網。如果攻擊主機向網關B轉發了來自主機A的報文,那么主機A能通過攻擊主機C繼續上網,但其上網質量完全取決于攻擊主機C,通常表現為時斷時續。
例如,網絡上有3臺主機,有如下的信息:
主機名 IP地址 硬件地址
A 202.206.208.1AA:AA
B 202.206.208.2 BB:BB
C 202.206.208.3 CC:CC
這三臺主機中,C是一臺被入侵者控制了的主機,而A信任B,入侵者的目的就是要偽裝成B獲得A的信任,以便獲得一些無法直接獲得的信息等。

四、 ARP欺騙防范和解決方案
1.手動防御
防御ARP欺騙的簡單方法是網絡管理員分別在主機和路由器上靜態綁定
另一方面通過arp-s命令,在PC上綁定網關的MAC和IP地址,這樣可以防御冒充網關欺騙主機的ARP欺騙。
另一種有效的手動防御方法是在局域網中增加VLAN的數目,減少VLAN中的主機數量。局域網管理員可以根據本單位的網絡拓撲結構劃分若干個VLAN,這樣既能夠在發生ARP攻擊時減少所影響的網絡范圍,又能夠在發生ARP攻擊時便于定位出現的網段和具體的主機。缺點同樣是增加了網絡維護的復雜度,也無法自動適應網絡的動態變化。
2.使用ARP服務器
在局域網內部的設置一臺機器作為ASP服務器,專門保存并且維護網絡內的所有主機的IP地址與MAC地址映射記錄,使其他計算機的ARP配置只接受來自ARP服務器的ARP響應。當有ARP請求時該服務器通過查閱自己緩存的靜態記錄并以被查詢主機的名義響應ARP局域網內部的請求,從而防止了ARP欺騙攻擊的發生。但是這個方法也有不足,首先要保證ARP服務器不被攻擊,確保ARP服務器的安全;其次要保證主機只接受指定ARP服務器的ARP響應報文。如何做到這一點,目前還是比較困難的。
3.ARP欺騙的解決措施
以上只是對ARP欺騙的防御手段,但對于局域網中已經有機器中了ARP欺騙木馬,偽造網關,則可采用以下方法解決。
判斷攻擊機的IP地址
某計算機所處網段的路由IP地址為xx.xx.xx.1,本機地址為xx.xx.xx.8,在計算機上DOS命令行中運行arp-a后輸出如下:
C:\\Documents and Settings\\Administrator>arp-a
Interface:xx.xx.xx.8---0x10003
Internet Address Physical AddressType
xx.xx.xx.100-01-02-03-04-05dynamic
其中,00-01-02-03-04-05就是路由器xx.xx.xx.1對應的MAC地址,類型為動態,因此可被改變。正常情況下,xx.xx.xx.1和00-01-02-03-04-05始終對應。被攻擊后,重復使用該命令查看,就會發現該MAC已經被替換成攻擊機器的MAC,而且攻擊機器的MAC地址和真正的網關MAC地址會出現交替現象,如
C:\\Documents and Settings\\Administrator>arp-a
Interface:xx.xx.xx.8---0x10003
Internet Address Physical AddressType
xx.xx.xx.100-01-02-03-04-05dynamic
xx.xx.xx.600-01-02-03-04-05dynamic
由此可判斷xx.xx.xx.6的計算機就是攻擊機,接下來就要判斷攻擊機的MAC地址并對連接該主機端口進行定位,定位操作主要通過SNMP協議完成。最后關閉交換機上受病毒感染的端口并對通過端口查出的相應用戶進行徹底查殺。當然也可以直接下載ARP欺騙檢測工具,如ARP Checker可以有效的定位到發起ARP欺騙的主機。

五、結論
通過以上幾種方法來解決ARP病毒對于局域網的欺騙攻擊是比較有效果的。但是由于ARP病毒版本在不斷更新升級中,所以仍會給局域網用戶帶來新的沖擊與危害。因此有必要提前做好局域網ARP病毒的防范工作,使得ARP病毒的危害減少到最小程度。當然,在網絡安全領域,沒有任何一種技術手段可以解決所有的問題,對于各種類型的網絡攻擊,經常查看當前的網絡狀態,對網絡活動進行分析、監控、采取積極、主動的防御行動是保證網絡安全和暢通的重要方法。網絡管理員應當密切檢查網絡,不斷提高自身的技術水平,確保網絡安全的正常運行。
參考文獻:
[1]張勝偉:基于DAI的ARP欺騙深度防御[J].計算機安全, 2009,(01)
[2]李 新:ARP欺騙防御技術的研究[J].商場現代化,2008(36)
[3]陳天洲 陳 純 谷小妮等:計算機安全策略[M].浙江大學學報,2004年