表1 ARP緩存表
主機 |
IP地址 |
MAC地址 |
主機 |
網(wǎng)關(guān) |
192.168.16.254 |
xx-xx-xx-xx-xx-xx |
網(wǎng)關(guān) |
A |
192.168.16.1 |
aa-aa-aa-aa-aa-aa |
A |
我們以主機A(192.168.16.1)上網(wǎng)為例。當發(fā)送數(shù)據(jù)時,主機A會在自己的ARP緩存表中尋找是否有網(wǎng)關(guān)的IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀里面發(fā)送就可以了;如果在ARP緩存表中沒有找到相對應的IP地址,主機A就會在網(wǎng)絡上發(fā)送一個廣播,目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網(wǎng)段內(nèi)的所有主機發(fā)出這樣的詢問:“192.168.16.254的MAC地址是什么?”網(wǎng)絡上其他主機并不響應ARP詢問,只有網(wǎng)關(guān)接收到這個幀時,才向主機A做出這樣的回應:“192.168.16.254的MAC地址是xx-xx-xx-xx-xx-xx”。這樣,主機A就知道了網(wǎng)關(guān)的MAC地址,它就可以向網(wǎng)關(guān)發(fā)送信息了。同時它還更新了自己的ARP緩存表,下次再向網(wǎng)關(guān)發(fā)送信息時,直接從ARP緩存表里查找就可以了。ARP緩存表采用老化機制,在一段時間內(nèi)如果表中的某一行沒有使用,就會刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。
當局域網(wǎng)內(nèi)某臺主機運行ARP欺騙的木馬程序時,會欺騙局域網(wǎng)內(nèi)所有主機和路由器,讓所有上網(wǎng)的流量必須經(jīng)過病毒主機。其他用戶原來直接通過路由器上網(wǎng)現(xiàn)在轉(zhuǎn)由通過病毒主機上網(wǎng),切換的時候用戶會斷一次線。當ARP欺騙的木馬程序停止運行時,用戶會恢復從路由器上網(wǎng),切換過程中用戶會再斷一次線。
于是我們在網(wǎng)關(guān)交換機的“系統(tǒng)歷史記錄”中看到大量如下類似的信息:
%1/15/2006 18:32:30-SYSM-5-IP COLLISION:Rcv src IP 10.4.1.26 arped 00-00-93-64-48-d2 By 00-00-b4-52-43-10 resided in port 16 |
這個消息代表了用戶的MAC地址發(fā)生了變化,在ARP欺騙木馬開始運行的時候,局域網(wǎng)主機的MAC地址更新為病毒主機的MAC地址。
雙向綁定防止ARP欺騙
我們可以采用雙向綁定的方法來解決并且防止ARP欺騙。
(1)在PC上綁定路由器的IP和MAC地址。
(2)在路由器上綁定用戶主機的IP和MAC地址。
對于網(wǎng)絡運營商來說,在不方便進行雙向綁定時,只有通過管理員經(jīng)常查閱路由器日志,盡早發(fā)現(xiàn)相關(guān)提示信息,斷開問題用戶連接的辦法來保障其他用戶正常上網(wǎng)。