何顯文
(贛南師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,江西 贛州 341000)
在局域網(wǎng)內(nèi)經(jīng)常有人使用ARP欺騙的木馬程序盜取網(wǎng)絡(luò)帳號或用戶信息.有時在訪問某些網(wǎng)站時會被告知有木馬病毒,盡管所訪問的是非常正規(guī)的門戶網(wǎng)站,但由于這個網(wǎng)站所在的服務(wù)器受到ARP攻擊,就影響到了訪問這個網(wǎng)站的用戶.
在瀏覽器地址欄內(nèi)輸入網(wǎng)址后,DNS服務(wù)器會自動把它解析為IP地址,瀏覽器實(shí)際上查找和識別的是IP地址而不是網(wǎng)址.IP地址又要轉(zhuǎn)換為第二層物理地址(即MAC地址),在局域網(wǎng)中,這是通過ARP協(xié)議來完成的.通過偽造IP地址和MAC地址實(shí)現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞.因此,ARP協(xié)議對網(wǎng)絡(luò)安全具有重要的意義.
ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議[1].從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式.ARP具體說來就是將OSI參考模型中的網(wǎng)絡(luò)層地址解析為數(shù)據(jù)鏈路層的物理地址.
在局域網(wǎng)中,網(wǎng)絡(luò)中實(shí)際傳輸?shù)氖菐?,幀包含目?biāo)主機(jī)的MAC地址.在以太網(wǎng)中,一個主機(jī)要和另一個主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址,這個目標(biāo)MAC地址是通過ARP地址解析協(xié)議獲得的.所謂地址解析,就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程.ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證網(wǎng)絡(luò)通信的順利進(jìn)行.
每臺安裝了TCP/IP協(xié)議的主機(jī)都會在自己的ARP緩沖區(qū)中建立一個ARP列表,以表示IP地址和MAC地址的對應(yīng)關(guān)系,如表1所示.
表1 ARP緩存表
當(dāng)源主機(jī)需要將一個數(shù)據(jù)包發(fā)送到目標(biāo)主機(jī)時,會首先檢查自己ARP列表中是否存在該IP地址對應(yīng)的MAC地址,如果存在就直接將數(shù)據(jù)包發(fā)送到這個MAC地址;如果沒有就向本地網(wǎng)段發(fā)出一個ARP請求的廣播包,查詢此目標(biāo)主機(jī)對應(yīng)的MAC地址.此ARP請求數(shù)據(jù)包內(nèi)包括源主機(jī)的IP地址、硬件地址和目標(biāo)主機(jī)的IP地址.網(wǎng)絡(luò)中所有的主機(jī)收到這個ARP請求后,會檢查數(shù)據(jù)包中的目標(biāo)IP是否與本機(jī)的IP地址一致.如果不相同就忽略此數(shù)據(jù)包,若相同,該主機(jī)首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機(jī)發(fā)送一個ARP響應(yīng)數(shù)據(jù)包,告訴源主機(jī)自己是它需要查找的MAC地址;源主機(jī)收到這個ARP響應(yīng)數(shù)據(jù)包后,將得到的目標(biāo)主機(jī)的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始傳輸數(shù)據(jù).如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示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
根據(jù)ARP原理,主機(jī)A要向主機(jī)B發(fā)送報(bào)文,A就必須知道B的以太網(wǎng)地址,于是A發(fā)送一個ARP請求廣播(詢問誰是192.168.10.2,請告訴192.168.10.1),當(dāng)B收到該廣播,就檢查自己,結(jié)果發(fā)現(xiàn)和自己的一致,然后就向A發(fā)送一個ARP單播應(yīng)答(192.168.10.2在BB-BB-BB-BB-BB-BB),而主機(jī)C和主機(jī)D則忽略這個ARP請求,該過程如圖1所示.
圖1 主機(jī)A與主機(jī)B之間的請求與應(yīng)答關(guān)系
本地高速緩存中的這個ARP表是本地網(wǎng)絡(luò)流通的基礎(chǔ),這個緩存是動態(tài)的.也就是說,ARP緩存表采用老化機(jī)制,如果緩存表中的某些地址在一段時間內(nèi)沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度.
ARP緩存表中的內(nèi)容不僅可以自動添加和刪除,用戶還可以通過命令來查看、添加和修改.要查看ARP緩存表中的內(nèi)容,可以在命令提示符下輸入“arp-a”,如下圖2所示.
圖2 執(zhí)行“arp-a”命令后顯示的內(nèi)容
用“arp-d”命令可以刪除ARP緩存表中某些地址對應(yīng)關(guān)系;用“arp-s”命令則可以在ARP緩存表中手動編輯IP地址與MAC地址的對應(yīng)關(guān)系.
在上網(wǎng)時經(jīng)常出現(xiàn)的瞬間掉線或大面積的斷網(wǎng)大都因?yàn)锳RP欺騙的原因,ARP欺騙和攻擊已經(jīng)成為破壞局域網(wǎng)正常通信的罪魁禍?zhǔn)?從影響網(wǎng)絡(luò)連接通暢的方式來看,ARP欺騙分兩種類型,一種是對路由器ARP表的欺騙,另一種是對內(nèi)網(wǎng)PC的網(wǎng)關(guān)欺騙.[2]
(1)截獲網(wǎng)關(guān)數(shù)據(jù).某攻擊主機(jī)發(fā)送給路由器一系列錯誤的內(nèi)網(wǎng)MAC地址,并按照一定的頻率持續(xù)不斷進(jìn)行,使真實(shí)的地址信息無法通過更新保存在路由器中,結(jié)果路由器的所有數(shù)據(jù)只能發(fā)送給錯誤的MAC地址,造成目標(biāo)主機(jī)無法正常收到信息.
(2)偽造網(wǎng)關(guān).它的原理是建立假網(wǎng)關(guān),讓被它欺騙的PC向假網(wǎng)關(guān)發(fā)數(shù)據(jù),而不是通過正常的路由器途徑上網(wǎng).在PC看來,就是“上不了網(wǎng)”或“網(wǎng)絡(luò)掉線”.
一般來說,ARP欺騙和攻擊的后果非常嚴(yán)重,大多數(shù)情況下會造成網(wǎng)絡(luò)大面積掉線.出現(xiàn)故障時,原因并不容易發(fā)現(xiàn),網(wǎng)絡(luò)管理員檢查PC沒有問題,交換機(jī)一般不可能掉線,ISP提供的網(wǎng)絡(luò)服務(wù)也正常.因此,當(dāng)?shù)谝环NARP欺騙發(fā)生時,只要重啟路由器,網(wǎng)絡(luò)就能全面恢復(fù),很多網(wǎng)絡(luò)管理員就會認(rèn)為問題一定是在路由器,事實(shí)并非如此,而是ARP欺騙所致.
目前,路由器的生產(chǎn)廠家,為防范ARP欺騙也對路由器不斷地進(jìn)行技術(shù)改進(jìn).首先,在寬帶路由器中把所有主機(jī)的IP-MAC輸入到一個靜態(tài)表中,這叫路由器IP-MAC綁定;其次,建議網(wǎng)絡(luò)管理員在內(nèi)網(wǎng)所有主機(jī)上設(shè)置網(wǎng)關(guān)的靜態(tài)ARP信息,這叫PC機(jī)IP-MAC綁定.路由器的這兩技術(shù)工作被稱為IP-MAC雙向綁定[3].
針對ARP的原理,就可以分析在網(wǎng)絡(luò)中如何實(shí)現(xiàn)ARP欺騙了,下面是一個典型的ARP欺騙實(shí)例.
入侵者想非法進(jìn)入某臺主機(jī),如果知道這臺主機(jī)的防火墻只對192.0.0.3(假設(shè))這個IP開放23端口(Telnet),那么可以采用以下方法,即:先測試192.0.0.3這臺主機(jī),將發(fā)現(xiàn)對這臺主機(jī)只要使用一個OOB(帶外數(shù)據(jù))就可以讓其死機(jī);接著,可以送一個洪水包給192.0.0.3的139端口,于是,該機(jī)器將應(yīng)包而死;此時,主機(jī)發(fā)到192.0.0.3的IP包將無法被正常的目標(biāo)主機(jī)應(yīng)答,系統(tǒng)開始更新自己的ARP緩存表,將表中192.0.0.3的IP地址擦去;然后,入侵者把自己的IP改成192.0.0.3,同時他發(fā)送一個Ping(Icmp 0)給主機(jī),要求主機(jī)更新其ARP轉(zhuǎn)換表;主機(jī)找到該IP后,在ARP緩存表中加入新的IP-MAC對應(yīng)關(guān)系.至此,防火墻就完全失效了,入侵的IP變成合法的MAC地址,可以使用Telnet正常登錄,從而達(dá)到入侵的目的.
隨著Internet的普及,ARP欺騙無處不在,一旦網(wǎng)絡(luò)遭到ARP攻擊,會對局域網(wǎng)用戶造成重大影響,為盡可能減少ARP攻擊的干擾的發(fā)生,必須采取必要的防范對策.目前,對于ARP攻擊的防護(hù),可以采用以下三種措施[4],即靜態(tài)綁定(綁定IP和MAC)、使用帶有ARP防護(hù)功能的路由器、安裝ARP防護(hù)軟件.
(1)靜態(tài)綁定.所謂靜態(tài)綁定,就是將IP地址和MAC地址靜態(tài)綁定,把局域網(wǎng)內(nèi)主機(jī)和網(wǎng)關(guān)都做IP和MAC綁定[5].
ARP欺騙是通過ARP的動態(tài)實(shí)時的規(guī)則欺騙內(nèi)網(wǎng)機(jī)器,所以把ARP全部設(shè)置為靜態(tài)可以解決對內(nèi)網(wǎng)PC的欺騙問題,同時在網(wǎng)關(guān)也要進(jìn)行IP和MAC的靜態(tài)綁定,這種雙向綁定策略能很好地保證內(nèi)網(wǎng)避免遭到欺騙[3].
對每臺主機(jī)進(jìn)行IP和MAC地址靜態(tài)綁定的方法可以通過命令“arp-s”實(shí)現(xiàn),命令格式為“arp-s IP MAC地址”.
例如:“arp-s 192.168.10.1AA-AA-AA-AA-AA-AA”.
如果設(shè)置成功可在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))
然而,對于機(jī)器數(shù)量較多的局域網(wǎng),如果我們對每臺主機(jī)都做靜態(tài)綁定,工作量之大可想而知.此外,這種靜態(tài)綁定,在機(jī)器每次重啟后,都必須重新綁定,雖然可以做一個批處理文件,但仍然比較麻煩.
(2)使用具有ARP防護(hù)功能的路由器.這類路由器之所以具備ARP防護(hù)功能,是由于它可以定期的發(fā)送自己正確的ARP信息.但是這類路由器對于真正意義上的ARP攻擊是不能解決的.
ARP攻擊最常見的現(xiàn)象就是網(wǎng)絡(luò)掉線.一般情況下,不做任何處理,一段時間后網(wǎng)絡(luò)也能恢復(fù)正常,這是因?yàn)锳RP欺騙本身具有老化時間,過了老化時間就會自動的恢復(fù)正常.現(xiàn)在大多數(shù)路由器都會在短時間內(nèi)不斷地廣播自己正確的ARP信息,使受騙的主機(jī)恢復(fù)正常.但是,如果出現(xiàn)攻擊性ARP欺騙(即短時間內(nèi)出現(xiàn)大量的欺騙ARP,1秒有個幾百上千個),它將不斷地發(fā)起ARP欺騙包來阻止內(nèi)網(wǎng)機(jī)器上網(wǎng),即使路由器不斷廣播正確的數(shù)據(jù)包也會被其大量的錯誤信息所淹沒.
遇到這種情況,理論上可以讓路由器發(fā)送比欺騙者更多更快正確的ARP信息,如果攻擊者每秒發(fā)送1000個ARP欺騙包,那我們就讓路由器每秒發(fā)送1500個正確的ARP信息.但是,如果網(wǎng)絡(luò)拓?fù)浜艽?,網(wǎng)絡(luò)中連接了很多網(wǎng)絡(luò)設(shè)備和主機(jī),若大量的設(shè)備都去處理這些廣播信息,結(jié)果可想而知,網(wǎng)絡(luò)資源將大大被浪費(fèi)和占用,網(wǎng)絡(luò)通信效率將大大降低.此外,如果該網(wǎng)絡(luò)出現(xiàn)故障,還要抓包分析,數(shù)據(jù)包中將出現(xiàn)大量的ARP廣播包,對分析結(jié)果也會造成一定的影響.
(3)使用ARP防護(hù)軟件.ARP類的防護(hù)軟件較常用的主要有欣向ARP工具,Antiarp等.它們除了本身可以檢測出ARP攻擊外,防護(hù)的工作原理是用一定頻率向網(wǎng)絡(luò)廣播正確的ARP信息.防護(hù)軟件的安裝和使用不再贅述.
總之,基于ARP協(xié)議的網(wǎng)上攻擊和欺騙較多,其本身并不一定能對網(wǎng)絡(luò)構(gòu)成重大威脅,而一旦被結(jié)合利用,其危險(xiǎn)性就不可估量了.由于ARP協(xié)議原理的缺陷,使得防范ARP的攻擊一直很棘手,經(jīng)常查看當(dāng)前的網(wǎng)絡(luò)狀態(tài),監(jiān)控網(wǎng)絡(luò)流量對網(wǎng)絡(luò)管理員來說尤為重要.
參考文獻(xiàn):
[1]馬海軍.TCP/IP協(xié)議原理與應(yīng)用[M].北京:清華大學(xué)出版社,2008.
[2]謝希仁.TCP/IP協(xié)議族北京[M].北京:清華大學(xué)出版社,2008.
[3]JOHN CHIRILLO.HACK ATTACKS DENIED[M].北京:機(jī)械工業(yè)出版社,2006.
[4]趙立群,等.計(jì)算機(jī)網(wǎng)絡(luò)管理與安全[M].北京:清華大學(xué)出版社,2008.
[5]KEVIN BURNS.TCP/IP ANALYSIS AND TROUBLESHOOTING TOOLKIT[M].北京:清華大學(xué)出版社,2005.