摘 要:本文通過(guò)對(duì)IP地址和MAC地址對(duì)應(yīng)過(guò)程的分析,介紹了局域網(wǎng)上的ARP病毒如何欺騙主機(jī)與網(wǎng)關(guān),截獲通信數(shù)據(jù),引起網(wǎng)絡(luò)中斷。ARP病毒的防治是一個(gè)全校性的工程,加強(qiáng)ARP病毒的防治是當(dāng)前學(xué)校網(wǎng)管工作的一個(gè)重要內(nèi)容。
關(guān)鍵詞:IP地址;MAC地址;ARP協(xié)議;局域網(wǎng);病毒
中圖分類(lèi)號(hào):TP309.5文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-8454(2010)02-0082-03
網(wǎng)絡(luò)層IP地址實(shí)現(xiàn)了底層網(wǎng)絡(luò)物理地址的統(tǒng)一,但因特網(wǎng)技術(shù)并沒(méi)有改變底層的物理網(wǎng)絡(luò),最終,在物理網(wǎng)絡(luò)上傳輸數(shù)據(jù)還得依靠物理地址,也就是MAC地址,局域網(wǎng)中通過(guò)ARP(Address Resolution Protocol)協(xié)議來(lái)完成將IP地址轉(zhuǎn)換成MAC地址。
一、IP地址和MAC地址的對(duì)應(yīng)過(guò)程
IP地址與MAC地址之間的映射通常有兩種方法,即靜態(tài)映射和動(dòng)態(tài)映射。我們現(xiàn)在使用的網(wǎng)絡(luò)采用動(dòng)態(tài)映射,動(dòng)態(tài)映射是在需要獲得地址映射關(guān)系時(shí)利用網(wǎng)絡(luò)通信協(xié)議直接從其他主機(jī)上獲得映射信息,建立并維護(hù)一個(gè)ARP緩存表,表里的IP地址與MAC地址具有一一對(duì)應(yīng)的關(guān)系。
如圖1所示,校園網(wǎng)絡(luò)中,主機(jī)A、B、C、D在同一廣播域內(nèi),主機(jī)E、F在同一廣播域內(nèi),則主機(jī)A的電腦中有一個(gè)ARP緩存表,表中的IP地址與MAC地址一一對(duì)應(yīng),如表1所示。
因?yàn)槭侵鳈C(jī)A的ARP緩存表,所以不需要IP地址與MAC地址的對(duì)應(yīng),其他主機(jī)與網(wǎng)關(guān)相應(yīng)的也有一個(gè)類(lèi)似的ARP緩存表。
我們以主機(jī)A(10.200.0.11)向主機(jī)B(10.200.0.12)發(fā)送數(shù)據(jù)為例來(lái)說(shuō)明局域網(wǎng)數(shù)據(jù)幀傳送的過(guò)程。當(dāng)主機(jī)A需要發(fā)送數(shù)據(jù)時(shí),先從本機(jī)的ARP緩存表中尋找目標(biāo)IP地址與MAC地址的對(duì)應(yīng)關(guān)系,如能找到,直接把目標(biāo)MAC地址寫(xiě)入要發(fā)送的幀中;如果在ARP緩存表中沒(méi)有相應(yīng)的對(duì)應(yīng)關(guān)系,主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)廣播包,目標(biāo)MAC地址是“FFFFFFFFFFFF”,向同一廣播域內(nèi)的所有主機(jī)發(fā)出這樣的查詢:“10.200.0.12的MAC地址是什么”,網(wǎng)絡(luò)上只有主機(jī)B接收到這個(gè)幀后,才會(huì)向主機(jī)A回應(yīng):“10.200.0.12的MAC地址是0050FC0000BB”,其他主機(jī)都不會(huì)響應(yīng)ARP詢問(wèn)。主機(jī)A收到主機(jī)B的回應(yīng)以后,就知道了主機(jī)B的MAC地址。在向主機(jī)B發(fā)送數(shù)據(jù)的同時(shí)主機(jī)A更新ARP緩存表,把IP地址10.200.0.12與MAC地址0050FC0000BB的對(duì)應(yīng)關(guān)系存入ARP緩存表,下次再向主機(jī)發(fā)送信息時(shí),直接查ARP表就可以獲得了。
ARP緩存采用老化機(jī)制,Windows系統(tǒng)2分鐘刷新一次緩存表,減少ARP緩存表的長(zhǎng)度,加快查詢速度。
二、中毒局域網(wǎng)主機(jī)進(jìn)行ARP欺騙
1.中毒局域網(wǎng)主機(jī)冒充網(wǎng)關(guān)進(jìn)行ARP欺騙
主機(jī)C中了ARP欺騙病毒,當(dāng)主機(jī)A需要與網(wǎng)關(guān)通信而發(fā)送廣播包查詢網(wǎng)關(guān)的MAC地址時(shí),主機(jī)C用欺騙的數(shù)據(jù)回應(yīng)主機(jī)A,網(wǎng)關(guān)的IP地址10.200.0.1對(duì)應(yīng)的MAC地址是“0050FC0000CC”,主機(jī)A收到回應(yīng)以后就以為獲得了網(wǎng)關(guān)的MAC地址,于是發(fā)送數(shù)據(jù),并把IP地址與MAC地址在緩存表中進(jìn)行更新。主機(jī)A的ARP緩存表中就有了IP地址10.200.0.1與MAC地址0050FC00CC的對(duì)應(yīng),而真實(shí)的MAC地址是0050FC000011,這樣中毒主機(jī)C就完成了對(duì)主機(jī)A的欺騙工作。造成主機(jī)A與網(wǎng)關(guān)之間的正常通信中斷。
2.中毒局域網(wǎng)主機(jī)冒充其他主機(jī)欺騙網(wǎng)關(guān)
中毒主機(jī)C冒充主機(jī)B告訴網(wǎng)關(guān),主機(jī)B的IP地址10.200.0.12對(duì)應(yīng)的MAC地址是0050FC0000CC,而網(wǎng)關(guān)(一般是三層交換機(jī)或路由器)中也有一個(gè)ARP緩存表,結(jié)果緩存表也就出錯(cuò)了,這樣把原本應(yīng)該發(fā)給主機(jī)B的數(shù)據(jù)都轉(zhuǎn)發(fā)給了主機(jī)C,造成主機(jī)B斷網(wǎng)。
一個(gè)局域網(wǎng)中往往是一臺(tái)主機(jī)中了ARP病毒,病毒主機(jī)通過(guò)ARP攻擊,捕獲數(shù)據(jù),從中獲得有價(jià)值的信息,進(jìn)行網(wǎng)絡(luò)犯罪活動(dòng),而引起的結(jié)果是局域網(wǎng)中的電腦大量地?cái)嗑W(wǎng),給管理工作帶來(lái)巨大的壓力。
三、ARP病毒的防治
隨著校園網(wǎng)在整個(gè)學(xué)校中發(fā)揮的作用越來(lái)越大,加強(qiáng)ARP病毒的防治逐漸成為當(dāng)前學(xué)校網(wǎng)管工作的一個(gè)重要內(nèi)容。
我們?cè)趯?shí)踐過(guò)程中,采用了如下方法,取得了良好的效果。
1.用三層交換機(jī)劃分Vlan分割校園廣播域
由于ARP攻擊是用廣播的形式進(jìn)行欺騙,而廣播數(shù)據(jù)包不會(huì)通過(guò)路由或三層交換機(jī)傳播到其他廣播域,所以ARP攻擊只能影響同一Vlan的主機(jī)。現(xiàn)在的校園網(wǎng)一般都是采用“核心—匯聚—接入”三層模式,通過(guò)三層交換機(jī)的Vlan功能,把學(xué)校的網(wǎng)絡(luò)根據(jù)地理位置的不同劃分為不同的Vlan,這樣,有效地控制了同一廣播域中主機(jī)的數(shù)量,從而也控制了ARP欺騙的影響范圍,為定位中毒主機(jī)減少了工作量。
對(duì)于沒(méi)有做Vlan的校園網(wǎng),所有主機(jī)處于同一廣播域,并不影響我們查找ARP攻擊源。
2.查清校園網(wǎng)上運(yùn)行的主機(jī)MAC地址和相關(guān)的網(wǎng)關(guān)MAC地址
工欲善其事,必先利其器。對(duì)于校園網(wǎng)絡(luò)上運(yùn)行的主機(jī)和網(wǎng)關(guān)的MAC地址,我們事先做了詳細(xì)的記錄,并且詳細(xì)記錄了主機(jī)的放置地點(diǎn)及使用人員名單,這樣一旦發(fā)現(xiàn)問(wèn)題,可以馬上定位主機(jī),將其從網(wǎng)絡(luò)上斷開(kāi),校園網(wǎng)絡(luò)馬上就能恢復(fù)正常,然后我們?cè)偬幚碇卸局鳈C(jī)。
3.利用ARP實(shí)用程序查找病毒源
根據(jù)前面的分析可以知道,在正常情況下,每臺(tái)主機(jī)和網(wǎng)關(guān)都各自維護(hù)著一張正確的IP地址與MAC地址一一對(duì)應(yīng)的表。在異常情況下,這種對(duì)應(yīng)關(guān)系變得混亂了?,F(xiàn)在的ARP攻擊,一般情況下是用中毒主機(jī)的MAC地址替換掉了網(wǎng)關(guān)的MAC地址,我們可以利用Windows系統(tǒng)自帶的ARP實(shí)用程序,來(lái)查清到底是那臺(tái)主機(jī)中了病毒。
ARP命令的使用可以在命令提示符下輸入“arp /?” 來(lái)查看詳細(xì)使用方法,在這里我們只簡(jiǎn)單地查看一下就可以了。
例如:在正常情況下,主機(jī)A與網(wǎng)絡(luò)上的其他主機(jī)及網(wǎng)關(guān)有數(shù)據(jù)交換的情況下,在命令提示符下輸入:ARP –a
C:\\ >arp -a
Interface: 10.200.0.11 --- 0x4
Internet AddressPhysical AddressType
10.200.0.1 00-50-fc-00-00-11 dynamic
10.200.0.1200-50-fc-00-00-bb dynamic
10.200.0.1300-50-fc-00-00-cc dynamic
10.200.0.1400-50-fc-00-00-dd dynamic
我們可以從圖2中看到,各主機(jī)與網(wǎng)關(guān)的MAC地址正確無(wú)誤,網(wǎng)絡(luò)通信正常。
但是當(dāng)主機(jī)C中了ARP病毒以后,就會(huì)引起其他主機(jī)斷網(wǎng)。這里,在斷網(wǎng)的主機(jī)上(如主機(jī)A)我們?cè)賵?zhí)行ARP命令,就會(huì)顯示類(lèi)似圖3所示數(shù)據(jù)。
C:\\ >arp -a
Interface: 10.200.0.11 --- 0x4
Internet AddressPhysical AddressType
10.200.0.1 00-50-fc-00-00-cc dynamic
從圖3中的數(shù)據(jù)我們可以看到,網(wǎng)關(guān)的MAC地址替換成了中毒主機(jī)的MAC地址,這樣發(fā)往網(wǎng)關(guān)的數(shù)據(jù)都轉(zhuǎn)發(fā)給了中毒主機(jī),正常的網(wǎng)絡(luò)通信就中斷了。
有了對(duì)全校網(wǎng)絡(luò)上主機(jī)的事先了解,我們馬上可以查出MAC地址為0050FC0000CC的是主機(jī)C,這時(shí)只要把主機(jī)C從網(wǎng)絡(luò)上斷開(kāi),等其他主機(jī)都刷新了ARP緩存表以后,網(wǎng)絡(luò)就能恢復(fù)正常通信了。
4.利用常用工具防止ARP攻擊的發(fā)生
合理地利用小工具,能實(shí)時(shí)了解校園網(wǎng)絡(luò)的運(yùn)行情況,現(xiàn)在常用的360安全衛(wèi)士、瑞星個(gè)人防火墻、彩音ARP防火墻單機(jī)版等都具有ARP攻擊的提示與防范作用,方便我們實(shí)時(shí)檢測(cè)到ARP攻擊的發(fā)生,同時(shí)也能方便地知道攻擊源的MAC地址,可以有效地提高工作效率。
最后,需要指出的是,ARP病毒的防治是一個(gè)全校性的工程,只有全校師生都養(yǎng)成良好的上網(wǎng)習(xí)慣,不訪問(wèn)非正規(guī)的網(wǎng)站,不使用來(lái)歷不明的軟件,才能共同營(yíng)造一個(gè)高效穩(wěn)定安全的校園網(wǎng)絡(luò)。
參考文獻(xiàn):
[1]蘭少華,楊余旺,呂建勇.TCP/IP網(wǎng)絡(luò)與協(xié)議[M].北京:清華大學(xué)出版社,2006.
[2]馮文新. 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.
(編輯:劉軒)