陳晨
天津財經大學,天津 300222
ARP攻擊的認識與防護
陳晨
天津財經大學,天津 300222
ARP攻擊已經成為校園網環境中最常見、最難纏的問題之一。本文介紹了ARP的原理和ARP欺騙的方式,并且從交換機和PC機兩個層面提出了防范的方法和策略。
ARP;網絡攻擊
近期 “地址解析協議欺騙”(簡稱:ARP欺騙)攻擊手段正在校園網中擴散,嚴重影響了包括校園網在內的各種類型局域網的正常運行。黑客通過偽造一個假的網關進行木馬的散播,讓局域網內的用戶一上網就會連接有木馬的地址,而用戶唯一的感覺只是網絡不暢通。那么ARP欺騙是怎樣的一種黑客攻擊手段?普通的用戶又該如何防范ARP欺騙攻擊呢?
ARP(Address Resolution Protocol,地址解析協議)用于將網絡層的IP地址解析為數據鏈路層的物理地址。IP地址只是主機在網絡層中的地址,如果要將網絡層中數據包傳送給目的主機,必須知道目的主機的數據鏈路層地址 (比如以太網絡MAC地址)。那么ARP負責將局域網中32位IP地址映射為48位硬件地址(MAC地址)。因為局域網中的兩臺主機要相互直接通信,必須是A主機先向B主機發送包含IP地址信息的廣播數據包 (ARP請求),然后B主機再向A主機發送含有自身IP地址和MAC地址的數據包,A主機收到B主機的MAC地址后便建立數據連接,實現數據傳輸,這相當于一個身份核實的過程。當然,并不是說每次通信都需要身份核實,因為ARP緩存表可以簡化這個過程。
安裝了TCP/IP協議的局域網設備中有一張ARP緩存表,也叫本地ARP緩存,它保存著網內曾與本機通信過的其他主機的IP及MAC地址,且IP地址與MAC地址逐一對應,今后本機與其他主機通信時就會首先查詢本地ARP緩存表,如果目標主機存在于表中,則使用表中的MAC地址發送數據。
那么,如果目標主機不在緩存表中會怎么樣呢?比如本機想與192.168.0.1通信,但緩存表中并無此機MAC地址,這時本機便向全網發送廣播詢問誰的IP是192.168.0.1,通常情況下其他主機接收到此廣播后都會保持沉默,只有192.168.0.1會作出回應并向本機返回它的MAC地址,隨后本機重寫ARP緩存,即將192.168.0.1的MAC地址寫入本地ARP緩存表,下次訪問192.168.0.1時無須向全網廣播,直接向其發送數據。

表1 ARP表項
ARP的報文格式
ARP報文分為ARP請求和ARP應答報文,ARP請求和應答報文的格式如下面的表2所示。
當一個ARP請求發出時,除了接收方硬件地址(即請求方想要獲取的地址)字段為空外,其他所有的字段都被使用。
ARP應答報文使用了所有的字段。

表2 ARP報文格式
一般情況下,ARP動態執行并自動尋求IP地址到以太網MAC地址的解析,無需管理員的介入。
ARP是網絡通信中一種經常使用的網絡協議,那么ARP為何會成為病毒利用目標呢?從前面的介紹我們可以了解到ARP緩存表的作用便是提高網絡效率減少數據延遲。然而,ARP緩存表存在易信任性,即對發來的ARP數據包正確與否不做審查。當主機接收到被刻意編制的,將IP地址指向錯誤的MAC地址的ARP數據包,主機會不加審查地將其中的記錄加入ARP緩存表。這樣,當主機下次訪問此IP時,就將根據這個虛假的記錄,將數據發送到記錄中所對應的“錯誤的MAC地址”,而真正使用這個IP的目標主機,則收不到數據,這就是ARP欺騙。
常見的ARP欺騙有以下兩類。
這使得用戶主機發送的網絡數據“石沉大海”,發出去的信息無法得到回應。訪問網關的失敗,將導致用戶沒有辦法與外網進行通信。這時在命令行方式下鍵入:arp-a,會得到如下信息:
Internet Address Physical Address Type
202.113.128.95 00-00-00-00-00-00 invalid
這種做法會讓用戶主機發送的網絡數據傳到了原本不應該傳輸的地方。MAC地址所對應的主機,將接收到原本應該被發到網關的網絡數據。如果收到數據的主機直接丟棄數據,結果就是被欺騙主機得不到回應,不能正常上網。而如果收到數據的主機,對數據內容進行分析處理,就可能從中得到被欺騙主機用戶的隱私信息比如賬號、密碼,這種行為危害性更大。當然,此時被欺騙主機并非一定得不到回應。因為接收到數據的“偽網關”可以選擇充當起“真網關”的替代者,成為數據的中轉站,為用戶向“真網關”呼叫,用戶仍可以收到“真網關”經由“偽網關”傳來的回應數據。
如圖1所示:Host A和Host C通過交換機進行通信。此時,如果有黑客(Host B)想探聽Host A和Host C之間的通信,它可以分別向這兩臺主機發送偽造的 ARP應答報文,使 Host A和 Host C用MAC_B更新自身ARP映射表中與對方IP地址相應的表項。此后,Host A和Host C之間看似“直接”的通信,實際上都是通過黑客所在的主機間接進行的,即Host B擔當了“中間人”的角色,可以對信息進行了竊取和篡改。

圖1 中間人攻擊示意圖
了解了ARP欺騙的特點,我們再來看看ARP病毒。需要注意的是,“ARP病毒”不是一個病毒,而是“一群”病毒,我們把所有具有ARP欺騙行為的病毒統稱為 “ARP病毒”。對于某一個具體的病毒而言,ARP欺騙只是它的一個行為和手段,永遠是為了達到其目的而設置的。使用ARP欺騙的病毒,可以是盜號木馬,也可以是蠕蟲病毒,其危害性如下。
將ARP欺騙包指向不能提供數據傳輸服務的,無效的MAC地址;或指向中毒的主機,但中毒主機不為用戶向“真網關”傳遞數據。這將導致局域網全網掉線,其他主機無法訪問網絡。
將ARP欺騙包指向中毒主機的MAC地址,則局域網中被欺騙主機會將數據傳送給中毒主機。中毒主機系統中的病毒,可以通過嗅探這些數據的內容,進行包括破譯密文等處理,從而得到包括網絡游戲、網絡銀行賬號密碼在內的各種信息,直接或間接威脅到用戶的隱私和財產安全。這樣的病毒明顯具有木馬的性質,換句話說,盜號木馬可以采用這樣的方式,得到用戶的賬號密碼。
一位安全業界人士說過:“ARP欺騙造成的局域網上網斷線,只是表面現象。更深層的危害在于,ARP欺騙造成了網絡數據的違規‘出站’和‘回傳’(即被欺騙主機將數據傳到了原本不應該被信任的目標)。攻擊者因此可以利用‘回傳’給他的數據,作出進一步危害用戶安全的行為,包括利用數據中的信息,發動有針對性的‘進站’攻擊(即向被欺騙主機發送帶有惡意攻擊性代碼的數據)。”
將ARP欺騙包指向中毒主機的MAC地址,中毒主機接收到被欺騙主機傳來的信息,并充當“偽網關”,在被欺騙主機與“真網關”之間進行數據交互。然而,“偽網關”得到由“真網關”傳來的數據后,在將數據傳回給被欺騙主機的過程中,在其中加插了惡意代碼。不知情的被欺騙主機接收了數據,主機系統中的應用程序執行了包括惡意代碼在內的內容,就直接導致用戶的計算機安全遭到破壞。
對于搜索局域網中的ARP病毒主機,可以從兩個方向入手。一是從交換機層面,一是從PC層面。
1.從交換機層面查出病毒主機。由于ARP攻擊屬于二層網絡攻擊,這就決定了攻擊數據包不可能跨越子網攻擊其它的網絡主機,所以我們要找某一子網內的攻擊源,只需要在該子網所在的三層交換機上搜索即可。目前,大多數的交換機都有ARP檢測功能,以華為8016交換機為例,當網絡中存在ARP攻擊的時,我們可以清楚地在交換機日志中發現如下的提示:
The last fake gateway ARP packet was detected at:
Year=2008,Month=11,Day=24 9:50:33
Packet's info:
Port Index:3/0/0
IP Addr:202.113.135.3
Mac Addr:0016-36df-9cb8
信息里寫明了出現問題的端口、IP、和MAC,下一步需要做的只是去針對這臺主機做殺毒或去除木馬的工作了。
2.從PC層面查出病毒主機。對于一些沒有ARP入侵檢測功能的交換機,我們只能從PC方面入手查找ARP的攻擊源。
(1)使用Sniffer抓包。在網絡內任意一臺主機上運行抓包軟件,捕獲所有到達本機的數據包。如果發現有某個IP不斷發送ARP Request請求包,那么這臺電腦一般就是病毒源。
原理:無論何種ARP病毒變種,行為方式有兩種,一是欺騙網關,二是欺騙網內的所有主機。最終的結果是,在網關的ARP緩存表中,網內所有活動主機的MAC地址均為中毒主機的MAC地址;網內所有主機的ARP緩存表中,網關的MAC地址也成為中毒主機的MAC地址。前者保證了從網關到網內主機的數據包被發到中毒主機,后者相反,使得主機發往網關的數據包均被發送到中毒主機。
(2)使用arp-a命令。任意選兩臺不能上網的主機,在DOS命令窗口下運行arp-a命令。例如在結果中,兩臺電腦除了網關的IP、MAC地址對應項,都包含了 192.168.0.186的這個 IP,則可以斷定192.168.0.186這臺主機就是病毒源。
原理:一般情況下,網內的主機只和網關通信。正常情況下,一臺主機的ARP緩存中應該只有網關的MAC地址。如果有其他主機的MAC地址,說明本地主機和這臺主機最近有過數據通信發生。如果某臺主機(例如上面的192.168.0.186)既不是網關也不是服務器,但和網內的其他主機都有通信活動,且此時又是ARP病毒發作時期,那么,病毒源也就是它了。
(3)使用tracert命令。在任意一臺受影響的主機上,在DOS命令窗口下運行tracert命令。
假定設置的缺省網關為202.113.128.3,在跟蹤一個外網地址時,第一跳卻是202.113.128.95,那么,202.113.128.95就是病毒源。
原理:中毒主機在受影響主機和網關之間,扮演了“中間人”的角色。所有本應該到達網關的數據包,由于錯誤的MAC地址,均被發到了中毒主機。此時,中毒主機越俎代庖,起了缺省網關的作用。
對于ARP入侵的防范我們仍然從交換機和PC兩個層面入手。
1.交換機層面。目前多數新型號的交換機都支持APR入侵檢測功能,如H3C的S3600以上的交換機都加入了此功能。它的工作原理是:將經過交換機的所有ARP(請求與回應)報文重定向到CPU,利用DHCP Snooping表或手工配置的IP靜態綁定表,對ARP報文進行合法性檢測。
開啟ARP入侵檢測功能后,如果ARP報文中的源MAC地址、源IP地址、接收ARP報文的端口編號以及端口所在VLAN與DHCP Snooping表或手工配置的IP靜態綁定表表項一致,則認為該報文是合法的ARP報文,進行轉發;否則認為是非法ARP報文,直接丟棄。
除了開啟ARP入侵檢測功能之外,還應該對ARP報文進行限速控制,因為當某一個端口以高頻率發送ARP報文的時候會占用交換機大量的CPU資源,嚴重時甚至會造成交換機死機,所以千萬不要忽視這點。開啟某個端口的ARP報文限速功能后,交換機對每秒內該端口接收的ARP報文數量進行統計,如果每秒收到的ARP報文數量超過設定值,則認為該端口處于超速狀態 (即受到ARP報文攻擊)。此時,交換機將關閉該端口,使其不再接收任何報文,從而避免大量ARP報文攻擊設備。同時,設備支持配置端口狀態自動恢復功能,對于配置了ARP限速功能的端口,在其因超速而被交換機關閉后,經過一段時間可以自動恢復為開啟狀態。
2.PC機層面。對于PC機這端的防范就相對簡單的多,安裝一個專門的ARP軟件防火墻即可。目前此類的防火墻品種很多,其中金山ARP防火墻的防護效果尤為突出。金山ARP防火墻最大的特點是:完全免費、支持Vista、安裝免重啟、低資源占用,并且能夠雙向攔截ARP欺騙攻擊包,監測鎖定攻擊源。

圖2 金山ARP防火墻界面
總之,ARP病毒的危害可以說是遍及整個局域網。目前ARP病毒已經對眾多高校的校園網造成嚴重影響,因此從校園網中主機受到ARP欺騙攻擊,到發現中毒主機并進行清除病毒的處理,校園網的網管,需要在這其中扮演積極的角色。如果反應和處理不及時,病毒造成的影響和損失會更大。而對于用戶來說,一旦發現自己受到ARP欺騙攻擊的影響,在做好防護措施,避免由于違規的“回傳”數據而導致的“進站”攻擊的同時,應該盡快聯系網管協調處理。而一旦確認自己的電腦被感染了ARP病毒,更應該配合網管,自覺進行查殺病毒的處理。
[1]姚小兵.校園局域網ARP病毒的解決方案[J].山西廣播電視大學學報,2009,(5).
[2]任俠,呂述望.ARP協議欺騙原理分析與抵御方法[J].計算機工程,2003,(9).
[3]王奇.以太網中ARP欺騙原理與解決辦法[J].網絡安全技術與應用,2007,(2).
責任編輯:陳 卓 陳 巖
On ARP Attack and the Protection
CHEN Chen
(Tianjin University of Finance and Economics,Tianjin 300222)
ARP attack has become the most common and difficult problem on campus network.This article introduces the ARP on its principle and cheating methods,and promotes the prevention of methods and tactics from two aspects of the switch and the pc.
ARP;network attack
TP393.18
A
1008-9055(2011)01-0074-04
2010-10-17
陳晨(1981—),男,漢族,天津市人,天津財經大學信息化建設辦公室工程師,天津師范大學高校教師碩士。研究方向:計算機網絡。