賀武征
摘 要:目前有一種網絡破壞行為很常見,主要發生在局域網中,這種破壞行為利用了ARP地址解析協議的工作過程,故障現象是:忽然整個內部網絡的電腦全部不能上網了、或者一臺一臺掉線。本文檔對于這種攻擊將進行簡單的分析介紹,并給出解決方案。
關鍵詞:局域網; 破壞行為; 解決方案
中圖分類號:TP393 文獻標識碼:A 文章編號:1006-3315(2014)03-171-002
目前有一種網絡破壞行為很常見,主要發生在局域網中,這種破壞行為利用了ARP地址解析協議的工作過程,一般是內網某臺電腦中了病毒,病毒無規律的自動進行破壞,或者是內網某臺電腦的操作者故意發起攻擊。
一、攻擊原理分析
局域網里每個節點都有自己的IP地址和MAC地址。
如果電腦A需要上網,電腦A就需要將數據包發送給局域網網關路由器,那么電腦A必須知道網關路由器的MAC地址,所以電腦A就會發出詢問的廣播包,詢問網絡里網關路由器的MAC地址是多少?
網關路由器收到電腦A的詢問廣播包后,獲知并記錄了電腦A的MAC地址,然后回復電腦A(藍色線條所示),告知電腦A自己的MAC地址是多少?這樣電腦A就獲知了網關路由器的MAC地址,在相互獲知并記錄了對方的MAC地址這個基礎上,兩者才開始正常收發數據包。
電腦A獲知網關路由器的MAC地址后,將這樣一個信息動態保存在自己的ARP地址表中,可以動態即時更新。另外單位時間內電腦A和網關路由器之間沒有傳輸數據包的話,電腦A和網關路由器都會將保存的相應的ARP表條目刪除掉。等到有需要的時候,再次通過上面詢問的方式重新獲取對方的MAC地址就可以了。
上面這樣一個詢問對方MAC地址,然后相互發送數據包的過程一直正常運轉著。忽然,ARP攻擊發生了。
局域網中某臺電腦(IP地址為192.168.1.30)發起ARP攻擊,它向局域網中發送了一個ARP廣播包(紅色線條所示),告訴所有的電腦:“現在進行廣播,局域網的網關路由器MAC地址已經不是以前的00-00-00-00-00-01了,而是新的MAC地址00-00-00-00-00-30,請各位更新自己的ARP表。”
就這樣所有的電腦都被欺騙了,將自己的ARP條目條中對應網關路由器的MAC地址更新為這個假網關的MAC地址,更新過以后,這些電腦凡是發往網關的數據包都不再發向00-00-00-00-00-01這個正確的MAC地址,而是發往了錯誤的MAC地址00-00-00-00-00-30(綠色線條所示),因為所有電腦都被欺騙并更新了自己的ARP條目。
根據上面的演示,所有本應發送到正確網關路由器MAC地址的數據包,都發往錯誤的假網關MAC地址了,而一般發往網關路由器的數據包都是去往互聯網的,所以發生ARP攻擊最常見的現象是:瞬間所有需要上網的電腦都無法上網。這個時候無論是PING網關路由器的IP地址或是嘗試登錄網關路由器的管理界面,都是失敗的,因為所有的數據包都發向了錯誤的00-00-00-00-00-30,而不是真實的網關路由器的MAC地址。
上面我們簡明扼要的分析了ARP攻擊發生的過程,既然找到了病因,就可以對癥下藥了。從上面的分析可以得出,故障出現的原因是每臺電腦上記錄真實網關路由器MAC地址的ARP表是動態的,是允許被動態更新的。如果在每臺電腦上采用固定的ARP表條目,不允許動態更新,這樣即使有惡意的ARP欺騙包在網絡里面進行廣播,因為每臺電腦的ARP表中都采用靜態綁定的方式,將真實網關的MAC地址固定了下來,這樣就可以應對ARP攻擊的發生。
二、ARP攻擊判斷
如何判斷網絡里面發生了ARP攻擊呢?
比如您的網絡出口使用的我司寬帶路由器作為網關路由器。
登錄路由器管理界面“運行狀態”頁面。
可以看到網關路由器的IP地址和MAC地址分別是多少?如果顯示網關路由器的MAC地址是00-0A-EB-B9-5C-CE,那么正常上網的時候,在內網任意一臺電腦的DOS界面運行arp–a這個命令,可以看到,任意一臺電腦arp–a的回顯信息中,都有一條對應網關路由器的IP地址和MAC地址的條目,可以看到其中的Physical Address就是前面在路由器“運行狀態”頁面看到的LAN口MAC地址00-0a-eb-b9-5c-ce,當發生ARP攻擊的時候,這個Physical Address就變為另一個MAC地址了,而不是00-0a-eb-b9-5c-ce。
所以說,判斷是否發生ARP攻擊的辦法就是:
正常情況下,登錄網關路由器管理界面并記錄網關面向局域網接口(LAN口)的MAC地址。
發生異常情況的時候,在內網發生故障的電腦(/或任意一臺電腦)上運行arp–a命令,在回顯的信息中查看對應網關IP的MAC地址,還是不是之前記錄的網關的MAC地址?如果不是,則說明局域網發生了ARP攻擊。
三、基本配置步驟
在上面第一步“攻擊原理分析”里,我們從理論上簡要描述了ARP攻擊的發生過程,以及解決的辦法。在第二步“ARP攻擊判斷”里又引入了實際的參數界面,如何察看參數?看到了正常情況的參數都應該是怎樣的?等等。
接下來我們以第二步“ARP攻擊判斷”里面的參數為例,來說明基本的防護配置方法:
1.電腦端進行ARP條目綁定
下面以Microsoft Windows2000操作系統為例,來說明如何在電腦上綁定靜態的ARP條目:
(1)“開始”-“程序”-“附件”-“記事本”,
打開“記事本”以后在里面輸入命令,
分別是:“arp”、“–s”、“網關IP地址”和“網關MAC地址”,這四個參數中間以“空格”隔離開。
可以看到“網關IP地址”和“網關MAC地址”這兩個參數分別就是路由器的“LAN口IP地址”和“LAN口MAC地址”,也就是說如果您使用我司出品的寬帶路由器作為網關路由器使用,那么對于內網所有電腦來說,它們的“網關IP地址”就是路由器的“LAN口IP地址”,“網關MAC地址”就是LAN口的MAC地址。
輸入完成后點擊記事本菜單欄“文件”-“另存為(A)…”,
選擇保存在桌面(或者別的路徑也可以)。
“文件名(N)”這一欄需要注意,這里舉例取名為“protection.bat”。您可以隨便取名為別的文件名*.bat,這里“bat”是文件名后綴,“*”可以輸入任意數字或者字母或者兩者的組合,但是不能取為“arp”或者“ARP”,也就是不能輸入,否則會和系統參數沖突而不能生效:
填入了文件名以后,就可以點擊“保存”按鈕。
(2)“開始”-“程序”-“啟動”,對著“啟動”單擊鼠標右鍵,選擇“打開”,單擊后可以將“啟動”文件夾打開,然后將剛才建立的“protection.bat”文件復制進去。
(3)復制完成后,重新啟動電腦,上面那個protection.bat文件將會被操作系統自動執行一次,執行的結果就是電腦上記錄網關路由器MAC地址的ARP條目成為靜態的,不會動態改變,這樣就確保了這臺電腦不會因為受到ARP欺騙而動態修改自己的ARP表,導致上不了網。在這臺電腦DOS界面運行arp –a 可以看到ARP表條目已經由以前的動態(Dynamic)變為靜態(Static),
上面的配置只是在一臺電腦上進行了ARP綁定,實際上在局域網里,并不僅僅是電腦A和網關路由器之間有一個詢問MAC地址的過程,而是任意兩臺電腦之間通訊之前,都有一個詢問對方MAC地址的過程,所以實際上內網所有的電腦都需要進行上面第1步“電腦端進行ARP條目綁定”的操作。有一個簡單的辦法就是將上面這個protection.bat 文件拷貝到內網每臺電腦上,然后再復制到各自的“啟動”文件夾內即可。
2.網關路由器端進行ARP綁定
在上面第1步操作里,對所有電腦的ARP表進行了靜態綁定,綁定后確保了電腦上面記錄的網關路由器的地址信息正確不會改變,那么也就確保了電腦可以將數據包正常發送到路由器。
實際情況是,網關路由器也有一張ARP表格,用來記錄內網某臺主機的IP和MAC地址,如果網關路由器受到ARP欺騙,那么網關路由器將不能把數據包發送到正確的主機,而是發送到了錯誤的假MAC地址去了。
網關路由器為了防止受到ARP欺騙,也需要具備IP和MAC綁定的功能,也就是說在網關路由器上進行配置,將內網每臺電腦的IP地址和MAC地址組合體現出來,綁定以后確保了網關路由器知道內網每臺電腦正確的IP地址和MAC地址。
在網關路由器上進行綁定后,網關路由器就可將數據包發送到正確的MAC地址,而不會因為受欺騙而將數據包發送到錯誤的MAC地址去。
經過上面兩步,分別在電腦端和網關路由器端進行IP和MAC的綁定,就可以有效防止ARP欺騙的發生。