羅昌平
1故障原因
主要原因是在局域網中有人使用了ARP欺騙的木馬程序,比如一些盜號的軟件。當局域網內使用外掛時,外掛攜帶的病毒會將該機器的MAC地址映射到網關的IP地址上,向局域網內大量發送ARP包,致同一網段地址內的其它機器誤將其作為網關,掉線時內網是互通的,計算機卻不能上外網。
2故障現象
故障現象當局域網內有某臺電腦運行了此類ARP欺騙的木馬的時候,其他用戶原來直接通過路由器上網現在轉由通過病毒主機上網,切換的時候用戶會斷一次線。由于ARP欺騙的木馬發作的時候會發出大量的數據包導致局域網通訊擁塞,用戶會感覺上網速度越來越慢。當木馬程序停止運行時,用戶會恢復從路由器上網,切換中用戶會再斷一次線。
3欺騙過程
假設一個只有三臺電腦組成的局域網,該局域網由交換機連接。其中一個電腦名叫A,代表攻擊方;一臺叫S,代表源主機,即發送數據的電腦;另一臺叫D,代表目的主機,即接收數據的電腦。這三臺電腦的IP地址分別為192.168.0.2,192.168.0.3,192.168.0.4。MAC地址分別為MAC_A,MAC_S,MAC_D。現在,S電腦要給D電腦發送數據了,在S電腦內部,上層的TCP和UDP的數據包已經傳送到了最底層的網絡接口層,數據包即將要發送出去,但這時還不知道目的主機D電腦的MAC地址MAC_D。這時候,S電腦要先查詢自身的ARP緩存表,查看里面是否有192.168.0.4這臺電腦的MAC地址,如果有,就將封裝在數據包的外面。直接發送出去即可。如果沒有,這時S電腦要向全網絡發送一個ARP廣播包,大聲詢問:“我的IP是192.168.0.3,硬件地址是MAC_S,我想知道IP地址為192.168.0.4的主機的硬件地址是多少?” 這時,全網絡的電腦都收到該ARP廣播包了, A電腦一看其要查詢的IP地址不是自己的,就將該數據包丟棄不予理會。而D電腦一看IP地址是自己的,則回答S電腦:“我的IP地址是192.168.0.4,我的硬件地址是MAC_D”需要注意的是,這條信息是單獨回答的,即D電腦單獨向S電腦發送的,并非剛才的廣播。現在S電腦已經知道目的電腦D的MAC地址了,它可以將要發送的數據包上貼上目的地址MAC_D,發送出去了。同時它還會動態更新自身的ARP緩存表,將192.168.0.4-MAC_D這一條記錄添加進去,這樣,等S電腦下次再給D電腦發送數據的時候,就不用大聲詢問發送ARP廣播包了。這就是正常情況下的數據包發送過程。
這樣的機制看上去很完美,但是,上述數據發送機制有一個致命的缺陷,即它是建立在對局域網中電腦全部信任的基礎上的,也就是說它的假設前提是:無論局域網中那臺電腦,其發送的ARP數據包都是正確的。那么這樣就很危險了!因為局域網中并非所有的電腦都安分守己,往往有非法者的存在。比如在上述數據發送中,當S電腦向全網詢問“我想知道IP地址為192.168.0.4的主機的硬件地址是多少?”后,D電腦也回應了自己的正確MAC地址。但是當此時,一向沉默寡言的A電腦也回話了:“我的IP地址是192.168.0.4,我的硬件地址是MAC_A”,注意,此時它竟然冒充自己是D電腦的IP地址,而MAC地址竟然寫成自己的!由于A電腦不停地發送這樣的應答數據包,本來S電腦的ARP緩存表中已經保存了正確的記錄:192.168.0.4-MAC_D,但是由于A電腦的不停應答,這時S電腦并不知道A電腦發送的數據包是偽造的,導致S電腦又重新動態更新自身的ARP緩存表,這回記錄成:192.168.0.4-MAC_A,很顯然,這是一個錯誤的記錄(這步也叫ARP緩存表中毒),這樣就導致以后凡是S電腦要發送給D電腦,也就是IP地址為192.168.0.4這臺主機的數據,都將會發送給MAC地址為MAC_A的主機,這樣,在光天化日之下,A電腦竟然劫持了由S電腦發送給D電腦的數據!這就是ARP欺騙的過程。
如果A這臺電腦再做的“過分”一些,它不冒充D電腦,而是冒充網關,那后果就更嚴重。
4解決思路
如果有條件的單位可以安裝一臺DHCP服務器,最好在DHCP服務器里綁定計算機的用戶名、IP、MAC地址,以便查找對應的中毒計算機IP.
5結束語
總之,ARP病毒對局域網的攻擊危害性大,欺騙網關,會導致局域網用戶誤認為中毒機器是網關,正常的數據請求無法通過,病毒數據充斥局域網,導致用戶無法上網的局面,對二層網絡的危害極大,因為二層網絡同在一個網段,只要一臺電腦中了ARP病毒,整個網絡處于癱瘓狀態,因此在DHCP服務器平時要做好IP、MAC、計算機名的映射工作,網線盡可能的標識編號,這樣才能快速的找到中毒機器。
[參考文獻]
[1]識破局域網中的“諾言”——ARP病毒的認識和防范.少年電腦世界.高年級,2011年第1期.
[2]淺談校園網ARP病毒的攻擊與防范.硅谷.2011年第2期.
[3]淺談ARP病毒的危害及防治.大眾科技.2011年第2期.