陳晨
天津財(cái)經(jīng)大學(xué),天津 300222
ARP攻擊的認(rèn)識(shí)與防護(hù)
陳晨
天津財(cái)經(jīng)大學(xué),天津 300222
ARP攻擊已經(jīng)成為校園網(wǎng)環(huán)境中最常見、最難纏的問題之一。本文介紹了ARP的原理和ARP欺騙的方式,并且從交換機(jī)和PC機(jī)兩個(gè)層面提出了防范的方法和策略。
ARP;網(wǎng)絡(luò)攻擊
近期 “地址解析協(xié)議欺騙”(簡(jiǎn)稱:ARP欺騙)攻擊手段正在校園網(wǎng)中擴(kuò)散,嚴(yán)重影響了包括校園網(wǎng)在內(nèi)的各種類型局域網(wǎng)的正常運(yùn)行。黑客通過偽造一個(gè)假的網(wǎng)關(guān)進(jìn)行木馬的散播,讓局域網(wǎng)內(nèi)的用戶一上網(wǎng)就會(huì)連接有木馬的地址,而用戶唯一的感覺只是網(wǎng)絡(luò)不暢通。那么ARP欺騙是怎樣的一種黑客攻擊手段?普通的用戶又該如何防范ARP欺騙攻擊呢?
ARP(Address Resolution Protocol,地址解析協(xié)議)用于將網(wǎng)絡(luò)層的IP地址解析為數(shù)據(jù)鏈路層的物理地址。IP地址只是主機(jī)在網(wǎng)絡(luò)層中的地址,如果要將網(wǎng)絡(luò)層中數(shù)據(jù)包傳送給目的主機(jī),必須知道目的主機(jī)的數(shù)據(jù)鏈路層地址 (比如以太網(wǎng)絡(luò)MAC地址)。那么ARP負(fù)責(zé)將局域網(wǎng)中32位IP地址映射為48位硬件地址(MAC地址)。因?yàn)榫钟蚓W(wǎng)中的兩臺(tái)主機(jī)要相互直接通信,必須是A主機(jī)先向B主機(jī)發(fā)送包含IP地址信息的廣播數(shù)據(jù)包 (ARP請(qǐng)求),然后B主機(jī)再向A主機(jī)發(fā)送含有自身IP地址和MAC地址的數(shù)據(jù)包,A主機(jī)收到B主機(jī)的MAC地址后便建立數(shù)據(jù)連接,實(shí)現(xiàn)數(shù)據(jù)傳輸,這相當(dāng)于一個(gè)身份核實(shí)的過程。當(dāng)然,并不是說每次通信都需要身份核實(shí),因?yàn)锳RP緩存表可以簡(jiǎn)化這個(gè)過程。
安裝了TCP/IP協(xié)議的局域網(wǎng)設(shè)備中有一張ARP緩存表,也叫本地ARP緩存,它保存著網(wǎng)內(nèi)曾與本機(jī)通信過的其他主機(jī)的IP及MAC地址,且IP地址與MAC地址逐一對(duì)應(yīng),今后本機(jī)與其他主機(jī)通信時(shí)就會(huì)首先查詢本地ARP緩存表,如果目標(biāo)主機(jī)存在于表中,則使用表中的MAC地址發(fā)送數(shù)據(jù)。
那么,如果目標(biāo)主機(jī)不在緩存表中會(huì)怎么樣呢?比如本機(jī)想與192.168.0.1通信,但緩存表中并無此機(jī)MAC地址,這時(shí)本機(jī)便向全網(wǎng)發(fā)送廣播詢問誰的IP是192.168.0.1,通常情況下其他主機(jī)接收到此廣播后都會(huì)保持沉默,只有192.168.0.1會(huì)作出回應(yīng)并向本機(jī)返回它的MAC地址,隨后本機(jī)重寫ARP緩存,即將192.168.0.1的MAC地址寫入本地ARP緩存表,下次訪問192.168.0.1時(shí)無須向全網(wǎng)廣播,直接向其發(fā)送數(shù)據(jù)。
表1 ARP表項(xiàng)
ARP的報(bào)文格式
ARP報(bào)文分為ARP請(qǐng)求和ARP應(yīng)答報(bào)文,ARP請(qǐng)求和應(yīng)答報(bào)文的格式如下面的表2所示。
當(dāng)一個(gè)ARP請(qǐng)求發(fā)出時(shí),除了接收方硬件地址(即請(qǐng)求方想要獲取的地址)字段為空外,其他所有的字段都被使用。
ARP應(yīng)答報(bào)文使用了所有的字段。
表2 ARP報(bào)文格式
一般情況下,ARP動(dòng)態(tài)執(zhí)行并自動(dòng)尋求IP地址到以太網(wǎng)MAC地址的解析,無需管理員的介入。
ARP是網(wǎng)絡(luò)通信中一種經(jīng)常使用的網(wǎng)絡(luò)協(xié)議,那么ARP為何會(huì)成為病毒利用目標(biāo)呢?從前面的介紹我們可以了解到ARP緩存表的作用便是提高網(wǎng)絡(luò)效率減少數(shù)據(jù)延遲。然而,ARP緩存表存在易信任性,即對(duì)發(fā)來的ARP數(shù)據(jù)包正確與否不做審查。當(dāng)主機(jī)接收到被刻意編制的,將IP地址指向錯(cuò)誤的MAC地址的ARP數(shù)據(jù)包,主機(jī)會(huì)不加審查地將其中的記錄加入ARP緩存表。這樣,當(dāng)主機(jī)下次訪問此IP時(shí),就將根據(jù)這個(gè)虛假的記錄,將數(shù)據(jù)發(fā)送到記錄中所對(duì)應(yīng)的“錯(cuò)誤的MAC地址”,而真正使用這個(gè)IP的目標(biāo)主機(jī),則收不到數(shù)據(jù),這就是ARP欺騙。
常見的ARP欺騙有以下兩類。
這使得用戶主機(jī)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)“石沉大海”,發(fā)出去的信息無法得到回應(yīng)。訪問網(wǎng)關(guān)的失敗,將導(dǎo)致用戶沒有辦法與外網(wǎng)進(jìn)行通信。這時(shí)在命令行方式下鍵入:arp-a,會(huì)得到如下信息:
Internet Address Physical Address Type
202.113.128.95 00-00-00-00-00-00 invalid
這種做法會(huì)讓用戶主機(jī)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)傳到了原本不應(yīng)該傳輸?shù)牡胤健AC地址所對(duì)應(yīng)的主機(jī),將接收到原本應(yīng)該被發(fā)到網(wǎng)關(guān)的網(wǎng)絡(luò)數(shù)據(jù)。如果收到數(shù)據(jù)的主機(jī)直接丟棄數(shù)據(jù),結(jié)果就是被欺騙主機(jī)得不到回應(yīng),不能正常上網(wǎng)。而如果收到數(shù)據(jù)的主機(jī),對(duì)數(shù)據(jù)內(nèi)容進(jìn)行分析處理,就可能從中得到被欺騙主機(jī)用戶的隱私信息比如賬號(hào)、密碼,這種行為危害性更大。當(dāng)然,此時(shí)被欺騙主機(jī)并非一定得不到回應(yīng)。因?yàn)榻邮盏綌?shù)據(jù)的“偽網(wǎng)關(guān)”可以選擇充當(dāng)起“真網(wǎng)關(guān)”的替代者,成為數(shù)據(jù)的中轉(zhuǎn)站,為用戶向“真網(wǎng)關(guān)”呼叫,用戶仍可以收到“真網(wǎng)關(guān)”經(jīng)由“偽網(wǎng)關(guān)”傳來的回應(yīng)數(shù)據(jù)。
如圖1所示:Host A和Host C通過交換機(jī)進(jìn)行通信。此時(shí),如果有黑客(Host B)想探聽Host A和Host C之間的通信,它可以分別向這兩臺(tái)主機(jī)發(fā)送偽造的 ARP應(yīng)答報(bào)文,使 Host A和 Host C用MAC_B更新自身ARP映射表中與對(duì)方IP地址相應(yīng)的表項(xiàng)。此后,Host A和Host C之間看似“直接”的通信,實(shí)際上都是通過黑客所在的主機(jī)間接進(jìn)行的,即Host B擔(dān)當(dāng)了“中間人”的角色,可以對(duì)信息進(jìn)行了竊取和篡改。
圖1 中間人攻擊示意圖
了解了ARP欺騙的特點(diǎn),我們?cè)賮砜纯碅RP病毒。需要注意的是,“ARP病毒”不是一個(gè)病毒,而是“一群”病毒,我們把所有具有ARP欺騙行為的病毒統(tǒng)稱為 “ARP病毒”。對(duì)于某一個(gè)具體的病毒而言,ARP欺騙只是它的一個(gè)行為和手段,永遠(yuǎn)是為了達(dá)到其目的而設(shè)置的。使用ARP欺騙的病毒,可以是盜號(hào)木馬,也可以是蠕蟲病毒,其危害性如下。
將ARP欺騙包指向不能提供數(shù)據(jù)傳輸服務(wù)的,無效的MAC地址;或指向中毒的主機(jī),但中毒主機(jī)不為用戶向“真網(wǎng)關(guān)”傳遞數(shù)據(jù)。這將導(dǎo)致局域網(wǎng)全網(wǎng)掉線,其他主機(jī)無法訪問網(wǎng)絡(luò)。
將ARP欺騙包指向中毒主機(jī)的MAC地址,則局域網(wǎng)中被欺騙主機(jī)會(huì)將數(shù)據(jù)傳送給中毒主機(jī)。中毒主機(jī)系統(tǒng)中的病毒,可以通過嗅探這些數(shù)據(jù)的內(nèi)容,進(jìn)行包括破譯密文等處理,從而得到包括網(wǎng)絡(luò)游戲、網(wǎng)絡(luò)銀行賬號(hào)密碼在內(nèi)的各種信息,直接或間接威脅到用戶的隱私和財(cái)產(chǎn)安全。這樣的病毒明顯具有木馬的性質(zhì),換句話說,盜號(hào)木馬可以采用這樣的方式,得到用戶的賬號(hào)密碼。
一位安全業(yè)界人士說過:“ARP欺騙造成的局域網(wǎng)上網(wǎng)斷線,只是表面現(xiàn)象。更深層的危害在于,ARP欺騙造成了網(wǎng)絡(luò)數(shù)據(jù)的違規(guī)‘出站’和‘回傳’(即被欺騙主機(jī)將數(shù)據(jù)傳到了原本不應(yīng)該被信任的目標(biāo))。攻擊者因此可以利用‘回傳’給他的數(shù)據(jù),作出進(jìn)一步危害用戶安全的行為,包括利用數(shù)據(jù)中的信息,發(fā)動(dòng)有針對(duì)性的‘進(jìn)站’攻擊(即向被欺騙主機(jī)發(fā)送帶有惡意攻擊性代碼的數(shù)據(jù))。”
將ARP欺騙包指向中毒主機(jī)的MAC地址,中毒主機(jī)接收到被欺騙主機(jī)傳來的信息,并充當(dāng)“偽網(wǎng)關(guān)”,在被欺騙主機(jī)與“真網(wǎng)關(guān)”之間進(jìn)行數(shù)據(jù)交互。然而,“偽網(wǎng)關(guān)”得到由“真網(wǎng)關(guān)”傳來的數(shù)據(jù)后,在將數(shù)據(jù)傳回給被欺騙主機(jī)的過程中,在其中加插了惡意代碼。不知情的被欺騙主機(jī)接收了數(shù)據(jù),主機(jī)系統(tǒng)中的應(yīng)用程序執(zhí)行了包括惡意代碼在內(nèi)的內(nèi)容,就直接導(dǎo)致用戶的計(jì)算機(jī)安全遭到破壞。
對(duì)于搜索局域網(wǎng)中的ARP病毒主機(jī),可以從兩個(gè)方向入手。一是從交換機(jī)層面,一是從PC層面。
1.從交換機(jī)層面查出病毒主機(jī)。由于ARP攻擊屬于二層網(wǎng)絡(luò)攻擊,這就決定了攻擊數(shù)據(jù)包不可能跨越子網(wǎng)攻擊其它的網(wǎng)絡(luò)主機(jī),所以我們要找某一子網(wǎng)內(nèi)的攻擊源,只需要在該子網(wǎng)所在的三層交換機(jī)上搜索即可。目前,大多數(shù)的交換機(jī)都有ARP檢測(cè)功能,以華為8016交換機(jī)為例,當(dāng)網(wǎng)絡(luò)中存在ARP攻擊的時(shí),我們可以清楚地在交換機(jī)日志中發(fā)現(xiàn)如下的提示:
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
信息里寫明了出現(xiàn)問題的端口、IP、和MAC,下一步需要做的只是去針對(duì)這臺(tái)主機(jī)做殺毒或去除木馬的工作了。
2.從PC層面查出病毒主機(jī)。對(duì)于一些沒有ARP入侵檢測(cè)功能的交換機(jī),我們只能從PC方面入手查找ARP的攻擊源。
(1)使用Sniffer抓包。在網(wǎng)絡(luò)內(nèi)任意一臺(tái)主機(jī)上運(yùn)行抓包軟件,捕獲所有到達(dá)本機(jī)的數(shù)據(jù)包。如果發(fā)現(xiàn)有某個(gè)IP不斷發(fā)送ARP Request請(qǐng)求包,那么這臺(tái)電腦一般就是病毒源。
原理:無論何種ARP病毒變種,行為方式有兩種,一是欺騙網(wǎng)關(guān),二是欺騙網(wǎng)內(nèi)的所有主機(jī)。最終的結(jié)果是,在網(wǎng)關(guān)的ARP緩存表中,網(wǎng)內(nèi)所有活動(dòng)主機(jī)的MAC地址均為中毒主機(jī)的MAC地址;網(wǎng)內(nèi)所有主機(jī)的ARP緩存表中,網(wǎng)關(guān)的MAC地址也成為中毒主機(jī)的MAC地址。前者保證了從網(wǎng)關(guān)到網(wǎng)內(nèi)主機(jī)的數(shù)據(jù)包被發(fā)到中毒主機(jī),后者相反,使得主機(jī)發(fā)往網(wǎng)關(guān)的數(shù)據(jù)包均被發(fā)送到中毒主機(jī)。
(2)使用arp-a命令。任意選兩臺(tái)不能上網(wǎng)的主機(jī),在DOS命令窗口下運(yùn)行arp-a命令。例如在結(jié)果中,兩臺(tái)電腦除了網(wǎng)關(guān)的IP、MAC地址對(duì)應(yīng)項(xiàng),都包含了 192.168.0.186的這個(gè) IP,則可以斷定192.168.0.186這臺(tái)主機(jī)就是病毒源。
原理:一般情況下,網(wǎng)內(nèi)的主機(jī)只和網(wǎng)關(guān)通信。正常情況下,一臺(tái)主機(jī)的ARP緩存中應(yīng)該只有網(wǎng)關(guān)的MAC地址。如果有其他主機(jī)的MAC地址,說明本地主機(jī)和這臺(tái)主機(jī)最近有過數(shù)據(jù)通信發(fā)生。如果某臺(tái)主機(jī)(例如上面的192.168.0.186)既不是網(wǎng)關(guān)也不是服務(wù)器,但和網(wǎng)內(nèi)的其他主機(jī)都有通信活動(dòng),且此時(shí)又是ARP病毒發(fā)作時(shí)期,那么,病毒源也就是它了。
(3)使用tracert命令。在任意一臺(tái)受影響的主機(jī)上,在DOS命令窗口下運(yùn)行tracert命令。
假定設(shè)置的缺省網(wǎng)關(guān)為202.113.128.3,在跟蹤一個(gè)外網(wǎng)地址時(shí),第一跳卻是202.113.128.95,那么,202.113.128.95就是病毒源。
原理:中毒主機(jī)在受影響主機(jī)和網(wǎng)關(guān)之間,扮演了“中間人”的角色。所有本應(yīng)該到達(dá)網(wǎng)關(guān)的數(shù)據(jù)包,由于錯(cuò)誤的MAC地址,均被發(fā)到了中毒主機(jī)。此時(shí),中毒主機(jī)越俎代庖,起了缺省網(wǎng)關(guān)的作用。
對(duì)于ARP入侵的防范我們?nèi)匀粡慕粨Q機(jī)和PC兩個(gè)層面入手。
1.交換機(jī)層面。目前多數(shù)新型號(hào)的交換機(jī)都支持APR入侵檢測(cè)功能,如H3C的S3600以上的交換機(jī)都加入了此功能。它的工作原理是:將經(jīng)過交換機(jī)的所有ARP(請(qǐng)求與回應(yīng))報(bào)文重定向到CPU,利用DHCP Snooping表或手工配置的IP靜態(tài)綁定表,對(duì)ARP報(bào)文進(jìn)行合法性檢測(cè)。
開啟ARP入侵檢測(cè)功能后,如果ARP報(bào)文中的源MAC地址、源IP地址、接收ARP報(bào)文的端口編號(hào)以及端口所在VLAN與DHCP Snooping表或手工配置的IP靜態(tài)綁定表表項(xiàng)一致,則認(rèn)為該報(bào)文是合法的ARP報(bào)文,進(jìn)行轉(zhuǎn)發(fā);否則認(rèn)為是非法ARP報(bào)文,直接丟棄。
除了開啟ARP入侵檢測(cè)功能之外,還應(yīng)該對(duì)ARP報(bào)文進(jìn)行限速控制,因?yàn)楫?dāng)某一個(gè)端口以高頻率發(fā)送ARP報(bào)文的時(shí)候會(huì)占用交換機(jī)大量的CPU資源,嚴(yán)重時(shí)甚至?xí)斐山粨Q機(jī)死機(jī),所以千萬不要忽視這點(diǎn)。開啟某個(gè)端口的ARP報(bào)文限速功能后,交換機(jī)對(duì)每秒內(nèi)該端口接收的ARP報(bào)文數(shù)量進(jìn)行統(tǒng)計(jì),如果每秒收到的ARP報(bào)文數(shù)量超過設(shè)定值,則認(rèn)為該端口處于超速狀態(tài) (即受到ARP報(bào)文攻擊)。此時(shí),交換機(jī)將關(guān)閉該端口,使其不再接收任何報(bào)文,從而避免大量ARP報(bào)文攻擊設(shè)備。同時(shí),設(shè)備支持配置端口狀態(tài)自動(dòng)恢復(fù)功能,對(duì)于配置了ARP限速功能的端口,在其因超速而被交換機(jī)關(guān)閉后,經(jīng)過一段時(shí)間可以自動(dòng)恢復(fù)為開啟狀態(tài)。
2.PC機(jī)層面。對(duì)于PC機(jī)這端的防范就相對(duì)簡(jiǎn)單的多,安裝一個(gè)專門的ARP軟件防火墻即可。目前此類的防火墻品種很多,其中金山ARP防火墻的防護(hù)效果尤為突出。金山ARP防火墻最大的特點(diǎn)是:完全免費(fèi)、支持Vista、安裝免重啟、低資源占用,并且能夠雙向攔截ARP欺騙攻擊包,監(jiān)測(cè)鎖定攻擊源。
圖2 金山ARP防火墻界面
總之,ARP病毒的危害可以說是遍及整個(gè)局域網(wǎng)。目前ARP病毒已經(jīng)對(duì)眾多高校的校園網(wǎng)造成嚴(yán)重影響,因此從校園網(wǎng)中主機(jī)受到ARP欺騙攻擊,到發(fā)現(xiàn)中毒主機(jī)并進(jìn)行清除病毒的處理,校園網(wǎng)的網(wǎng)管,需要在這其中扮演積極的角色。如果反應(yīng)和處理不及時(shí),病毒造成的影響和損失會(huì)更大。而對(duì)于用戶來說,一旦發(fā)現(xiàn)自己受到ARP欺騙攻擊的影響,在做好防護(hù)措施,避免由于違規(guī)的“回傳”數(shù)據(jù)而導(dǎo)致的“進(jìn)站”攻擊的同時(shí),應(yīng)該盡快聯(lián)系網(wǎng)管協(xié)調(diào)處理。而一旦確認(rèn)自己的電腦被感染了ARP病毒,更應(yīng)該配合網(wǎng)管,自覺進(jìn)行查殺病毒的處理。
[1]姚小兵.校園局域網(wǎng)ARP病毒的解決方案[J].山西廣播電視大學(xué)學(xué)報(bào),2009,(5).
[2]任俠,呂述望.ARP協(xié)議欺騙原理分析與抵御方法[J].計(jì)算機(jī)工程,2003,(9).
[3]王奇.以太網(wǎng)中ARP欺騙原理與解決辦法[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007,(2).
責(zé)任編輯:陳 卓 陳 巖
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—),男,漢族,天津市人,天津財(cái)經(jīng)大學(xué)信息化建設(shè)辦公室工程師,天津師范大學(xué)高校教師碩士。研究方向:計(jì)算機(jī)網(wǎng)絡(luò)。