何顯文
(贛南師范學院 數學與計算機科學學院,江西 贛州 341000)
在局域網內經常有人使用ARP欺騙的木馬程序盜取網絡帳號或用戶信息.有時在訪問某些網站時會被告知有木馬病毒,盡管所訪問的是非常正規(guī)的門戶網站,但由于這個網站所在的服務器受到ARP攻擊,就影響到了訪問這個網站的用戶.
在瀏覽器地址欄內輸入網址后,DNS服務器會自動把它解析為IP地址,瀏覽器實際上查找和識別的是IP地址而不是網址.IP地址又要轉換為第二層物理地址(即MAC地址),在局域網中,這是通過ARP協(xié)議來完成的.通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞.因此,ARP協(xié)議對網絡安全具有重要的意義.
ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉化成物理地址的協(xié)議[1].從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式.ARP具體說來就是將OSI參考模型中的網絡層地址解析為數據鏈路層的物理地址.
在局域網中,網絡中實際傳輸的是幀,幀包含目標主機的MAC地址.在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址,這個目標MAC地址是通過ARP地址解析協(xié)議獲得的.所謂地址解析,就是主機在發(fā)送幀前將目標IP地址轉換成目標MAC地址的過程.ARP協(xié)議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證網絡通信的順利進行.
每臺安裝了TCP/IP協(xié)議的主機都會在自己的ARP緩沖區(qū)中建立一個ARP列表,以表示IP地址和MAC地址的對應關系,如表1所示.

表1 ARP緩存表
當源主機需要將一個數據包發(fā)送到目標主機時,會首先檢查自己ARP列表中是否存在該IP地址對應的MAC地址,如果存在就直接將數據包發(fā)送到這個MAC地址;如果沒有就向本地網段發(fā)出一個ARP請求的廣播包,查詢此目標主機對應的MAC地址.此ARP請求數據包內包括源主機的IP地址、硬件地址和目標主機的IP地址.網絡中所有的主機收到這個ARP請求后,會檢查數據包中的目標IP是否與本機的IP地址一致.如果不相同就忽略此數據包,若相同,該主機首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經存在該IP的信息,則將其覆蓋,然后給源主機發(fā)送一個ARP響應數據包,告訴源主機自己是它需要查找的MAC地址;源主機收到這個ARP響應數據包后,將得到的目標主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始傳輸數據.如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗.
例如:
A的地址IP:192.168.10.1MAC:AA-AA-AA-AA-AA-AA
B的地址IP:192.168.10.2MAC:BB-BB-BB-BB-BB-BB
根據ARP原理,主機A要向主機B發(fā)送報文,A就必須知道B的以太網地址,于是A發(fā)送一個ARP請求廣播(詢問誰是192.168.10.2,請告訴192.168.10.1),當B收到該廣播,就檢查自己,結果發(fā)現和自己的一致,然后就向A發(fā)送一個ARP單播應答(192.168.10.2在BB-BB-BB-BB-BB-BB),而主機C和主機D則忽略這個ARP請求,該過程如圖1所示.

圖1 主機A與主機B之間的請求與應答關系
本地高速緩存中的這個ARP表是本地網絡流通的基礎,這個緩存是動態(tài)的.也就是說,ARP緩存表采用老化機制,如果緩存表中的某些地址在一段時間內沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度.
ARP緩存表中的內容不僅可以自動添加和刪除,用戶還可以通過命令來查看、添加和修改.要查看ARP緩存表中的內容,可以在命令提示符下輸入“arp-a”,如下圖2所示.

圖2 執(zhí)行“arp-a”命令后顯示的內容
用“arp-d”命令可以刪除ARP緩存表中某些地址對應關系;用“arp-s”命令則可以在ARP緩存表中手動編輯IP地址與MAC地址的對應關系.
在上網時經常出現的瞬間掉線或大面積的斷網大都因為ARP欺騙的原因,ARP欺騙和攻擊已經成為破壞局域網正常通信的罪魁禍首.從影響網絡連接通暢的方式來看,ARP欺騙分兩種類型,一種是對路由器ARP表的欺騙,另一種是對內網PC的網關欺騙.[2]
(1)截獲網關數據.某攻擊主機發(fā)送給路由器一系列錯誤的內網MAC地址,并按照一定的頻率持續(xù)不斷進行,使真實的地址信息無法通過更新保存在路由器中,結果路由器的所有數據只能發(fā)送給錯誤的MAC地址,造成目標主機無法正常收到信息.
(2)偽造網關.它的原理是建立假網關,讓被它欺騙的PC向假網關發(fā)數據,而不是通過正常的路由器途徑上網.在PC看來,就是“上不了網”或“網絡掉線”.
一般來說,ARP欺騙和攻擊的后果非常嚴重,大多數情況下會造成網絡大面積掉線.出現故障時,原因并不容易發(fā)現,網絡管理員檢查PC沒有問題,交換機一般不可能掉線,ISP提供的網絡服務也正常.因此,當第一種ARP欺騙發(fā)生時,只要重啟路由器,網絡就能全面恢復,很多網絡管理員就會認為問題一定是在路由器,事實并非如此,而是ARP欺騙所致.
目前,路由器的生產廠家,為防范ARP欺騙也對路由器不斷地進行技術改進.首先,在寬帶路由器中把所有主機的IP-MAC輸入到一個靜態(tài)表中,這叫路由器IP-MAC綁定;其次,建議網絡管理員在內網所有主機上設置網關的靜態(tài)ARP信息,這叫PC機IP-MAC綁定.路由器的這兩技術工作被稱為IP-MAC雙向綁定[3].
針對ARP的原理,就可以分析在網絡中如何實現ARP欺騙了,下面是一個典型的ARP欺騙實例.
入侵者想非法進入某臺主機,如果知道這臺主機的防火墻只對192.0.0.3(假設)這個IP開放23端口(Telnet),那么可以采用以下方法,即:先測試192.0.0.3這臺主機,將發(fā)現對這臺主機只要使用一個OOB(帶外數據)就可以讓其死機;接著,可以送一個洪水包給192.0.0.3的139端口,于是,該機器將應包而死;此時,主機發(fā)到192.0.0.3的IP包將無法被正常的目標主機應答,系統(tǒng)開始更新自己的ARP緩存表,將表中192.0.0.3的IP地址擦去;然后,入侵者把自己的IP改成192.0.0.3,同時他發(fā)送一個Ping(Icmp 0)給主機,要求主機更新其ARP轉換表;主機找到該IP后,在ARP緩存表中加入新的IP-MAC對應關系.至此,防火墻就完全失效了,入侵的IP變成合法的MAC地址,可以使用Telnet正常登錄,從而達到入侵的目的.
隨著Internet的普及,ARP欺騙無處不在,一旦網絡遭到ARP攻擊,會對局域網用戶造成重大影響,為盡可能減少ARP攻擊的干擾的發(fā)生,必須采取必要的防范對策.目前,對于ARP攻擊的防護,可以采用以下三種措施[4],即靜態(tài)綁定(綁定IP和MAC)、使用帶有ARP防護功能的路由器、安裝ARP防護軟件.
(1)靜態(tài)綁定.所謂靜態(tài)綁定,就是將IP地址和MAC地址靜態(tài)綁定,把局域網內主機和網關都做IP和MAC綁定[5].
ARP欺騙是通過ARP的動態(tài)實時的規(guī)則欺騙內網機器,所以把ARP全部設置為靜態(tài)可以解決對內網PC的欺騙問題,同時在網關也要進行IP和MAC的靜態(tài)綁定,這種雙向綁定策略能很好地保證內網避免遭到欺騙[3].
對每臺主機進行IP和MAC地址靜態(tài)綁定的方法可以通過命令“arp-s”實現,命令格式為“arp-s IP MAC地址”.
例如:“arp-s 192.168.10.1AA-AA-AA-AA-AA-AA”.
如果設置成功可在PC上通過執(zhí)行“arp-a”看到以下的提示:
Internet Address Physical Address Type
192.168.10.1AA-AA-AA-AA-AA-AA static(靜態(tài))
如果不綁定,在動態(tài)的情況下則看到以下提示:
Internet Address Physical Address Type
192.168.10.1 AA-AA-AA-AA-AA-AA dynamic(動態(tài))
然而,對于機器數量較多的局域網,如果我們對每臺主機都做靜態(tài)綁定,工作量之大可想而知.此外,這種靜態(tài)綁定,在機器每次重啟后,都必須重新綁定,雖然可以做一個批處理文件,但仍然比較麻煩.
(2)使用具有ARP防護功能的路由器.這類路由器之所以具備ARP防護功能,是由于它可以定期的發(fā)送自己正確的ARP信息.但是這類路由器對于真正意義上的ARP攻擊是不能解決的.
ARP攻擊最常見的現象就是網絡掉線.一般情況下,不做任何處理,一段時間后網絡也能恢復正常,這是因為ARP欺騙本身具有老化時間,過了老化時間就會自動的恢復正常.現在大多數路由器都會在短時間內不斷地廣播自己正確的ARP信息,使受騙的主機恢復正常.但是,如果出現攻擊性ARP欺騙(即短時間內出現大量的欺騙ARP,1秒有個幾百上千個),它將不斷地發(fā)起ARP欺騙包來阻止內網機器上網,即使路由器不斷廣播正確的數據包也會被其大量的錯誤信息所淹沒.
遇到這種情況,理論上可以讓路由器發(fā)送比欺騙者更多更快正確的ARP信息,如果攻擊者每秒發(fā)送1000個ARP欺騙包,那我們就讓路由器每秒發(fā)送1500個正確的ARP信息.但是,如果網絡拓撲很大,網絡中連接了很多網絡設備和主機,若大量的設備都去處理這些廣播信息,結果可想而知,網絡資源將大大被浪費和占用,網絡通信效率將大大降低.此外,如果該網絡出現故障,還要抓包分析,數據包中將出現大量的ARP廣播包,對分析結果也會造成一定的影響.
(3)使用ARP防護軟件.ARP類的防護軟件較常用的主要有欣向ARP工具,Antiarp等.它們除了本身可以檢測出ARP攻擊外,防護的工作原理是用一定頻率向網絡廣播正確的ARP信息.防護軟件的安裝和使用不再贅述.
總之,基于ARP協(xié)議的網上攻擊和欺騙較多,其本身并不一定能對網絡構成重大威脅,而一旦被結合利用,其危險性就不可估量了.由于ARP協(xié)議原理的缺陷,使得防范ARP的攻擊一直很棘手,經常查看當前的網絡狀態(tài),監(jiān)控網絡流量對網絡管理員來說尤為重要.
參考文獻:
[1]馬海軍.TCP/IP協(xié)議原理與應用[M].北京:清華大學出版社,2008.
[2]謝希仁.TCP/IP協(xié)議族北京[M].北京:清華大學出版社,2008.
[3]JOHN CHIRILLO.HACK ATTACKS DENIED[M].北京:機械工業(yè)出版社,2006.
[4]趙立群,等.計算機網絡管理與安全[M].北京:清華大學出版社,2008.
[5]KEVIN BURNS.TCP/IP ANALYSIS AND TROUBLESHOOTING TOOLKIT[M].北京:清華大學出版社,2005.