摘要:近年來局域網中ARP病毒頻繁發作,給網內用戶遣成不便。本文從ARP協議入手,深入分析了ARP安全漏洞及病毒攻擊原理,闡明了ARP病毒欺騙的過程,給用戶提出解決ARP病毒攻擊的方法。
關鍵詞:ARP病毒;協議;IP地址
近年來局域網爆發了ARP木馬病毒,病毒發作時其癥狀表現為計算機網絡連接正常,能登陸成功卻無法打開網頁,極大地影響了局域網用戶的正常使用。
1、ARP協議的工作原理
在以太網中傳輸的數據包是以太包,而以太包的尋址是依據其首部的MAC地址。僅僅知道某主機的IP地址并不能讓內核發送一幀數據給此主機,內核必須知道目的主機的MAc地址才能發送數據。ARP協議的作用就是在于把32位的IP地址變換成48位的以太地址。
在以太局域網內數據包傳輸依靠的是MAc地址,IP地址與MAC對應的關系依靠ARP緩存表,每臺主機(包括網關)都有一個ARP緩存表。在正常情況下這個緩存表能夠有效保證數據傳輸的一對一性。
當數據源主機需要將一個數據包要發送到目的主機時,會首先檢查自己ARP列表中是否存在該IP地址對應的MAC地址,如果存在,就直接將數據包發送到這個MAc地址;如果不存在,就向本地網段發起一個ARP請求的廣播包,詢問目的主機的IP所對應的MAC地址。網絡中所有的主機收到這個ARP請求后,會檢查數據包中的目的IP是否和自己的IP地址一致。如果不一致就不作回應;如果一致,該主機首先將發送端的M A C地址和IP地址添加到自己的ARP列表中,如果ARP表中已經存在該IP的信息,則將其覆蓋,后給數據源主機發送一個ARP響應數據包,告訴對方自己是它需要查找的MAC地址。源主機收到這個ARPP向應數據包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中。并利用此信息開始數據的傳輸。若數據源主機一直沒有收到ARPII向應數據包,表示ARP查詢失敗。
2、ARP病毒的發作過程
ARP欺騙的目的就是為了實現全交換環境下的數據監聽,大部分的木馬或病毒使用ARP欺騙攻擊也是為了達到這個目的。
假設一個只有三臺電腦組成的局域網,該局域網由交換機(switch)連接。其中一個電腦名叫A,代表攻擊方;一臺電腦叫B,代表源主機,即發送數據的電腦;令一臺電腦名叫C,代表目的主機,即接收數據的電腦。這三臺電腦的IP地址分別為:192.168.O.168,192.168.0.169,192.168.0.200,MAC地址分別為:MAC-A,MAC-B,MAC-C。
現在,B電腦要給C電腦發送數據,則要先查詢自身的ARP緩存表,查看里面是否有192.168.0.200這臺電腦的MAC地址,如果有,就將MAC-C封裝在數據包的外面,直接發送出去即可。如果沒有,B電腦便向全網絡發送一個這樣的ARP廣播包:B的IP是192.168.0.169,硬件地址是MAC-B,要求返回IP地址為192.168.0.200的主機的硬件地址。而C電腦接受到該廣播,經核實IP地址,則將自身的IP地址和MAC-C地址返回到B電腦。現在B電腦可以在要發送的數據包上貼上目的地址MAC-C發送出去,同時它還會動態更新自身的ARP緩存表,將192.168.0.200-MAC-C這一條記錄添加進去,這樣,等B電腦下次再給C電腦發送數據的時候,發送ARP廣播包進行查詢了。這就是正常情況下的數據包發送過程。
但是,上述數據發送機制有一個致命的缺陷,即它是建立在對局域網中電腦全部信任的基礎上的,也就是說它的假設前提是:無論局域網中哪臺電腦,其發送的ARP數據包都是正確的。比如在上述數據發送中,當B電腦向全網詢問后,C電腦也回應了自己的正確MAc地址。但是當此時,A電腦卻返回了C電腦的IP地址和和自己的硬件地址。由于A電腦不停地發送這樣的應答數據包,則會導致B電腦又重新動態更新自身的ARP緩存表,這回記錄成:192.168.0.200與MAC-A對應,我們把這步叫做ARP緩存表中毒。這樣,就導致以后凡是B電腦要發送給c電腦,都將會發送給A主機。也就是說,A電腦就劫持了由B電腦發送給C電腦的數據。這就是ARP欺騙的過程。
如果A電腦不冒充C電腦,而是冒充網關,那后果會更加嚴重。一個局域網中的電腦要連接外網,都要經過局域網中的網關進行轉發。在局域網中,網關的IP地址假如為192.168.0.1。如果A電腦向全網不停的發送IP地址是192.168.0.1,硬件地址是MAC-A的ARP欺騙廣播,局域網中的其它電腦都會更新自身的ARP緩存表,將A電腦當成網關,這樣,當它們發送數據給網關,結果都會發送到MAC-A這臺電腦中。這樣,A電腦就將會監聽整個局域網發送給互聯網的數據包。
3、ARP病毒的防護
ARP欺騙是目前網絡管理中最讓人頭疼的攻擊,它的攻擊技術含量低,隨便一個人都可以通過攻擊軟件來完成ARP欺騙攻擊。同時防范ARP欺騙也沒有什么特別有效的方法,目前只能通過被動的亡羊補牢形式的措施了。無論是攻和防,首要的就是找出每種攻擊的“癥結”之所在。只有這樣才能找到行之有效的解決方案。當然最根本的辦法在客戶端自身的防范上,如及時下載安裝系統補丁、所裝殺毒軟件及時升級,安裝ARP專殺與防范軟件等。