摘要:闡述了ARP欺騙技術(shù)的基本原理,對(duì)ARP欺騙造成局域網(wǎng)無(wú)法正常通訊的實(shí)例進(jìn)行分析,提出了針對(duì)ARP欺騙的多種防范辦法。實(shí)際應(yīng)用效果較好。
關(guān)鍵詞:ARP;局域網(wǎng);MAC地址;IP地址;TCP/IP
0 引言
在大型局域網(wǎng)的維護(hù)工作中,最近常常發(fā)現(xiàn)網(wǎng)絡(luò)時(shí)斷時(shí)續(xù)的現(xiàn)象,而且斷網(wǎng)的計(jì)算機(jī)也不固定。經(jīng)過(guò)多方面的監(jiān)控和測(cè)試,最終確定是時(shí)下比較流行的ARP欺騙病毒導(dǎo)致斷網(wǎng)。由于這個(gè)病毒相當(dāng)普遍而且易發(fā),所以對(duì)ARP欺騙的原理做一些分析是很有必要的。
1 ARP欺騙的基本原理
ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)的縮寫,是一個(gè)位于TCP/IP協(xié)議棧中的低層協(xié)議,負(fù)責(zé)將某個(gè)IP)地址解析成對(duì)應(yīng)的MAC地址。ARP協(xié)議的基本功能就是通過(guò)目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
首先以總線型以太網(wǎng)上三臺(tái)主機(jī)通信(如圖1所示)了解一下ARP協(xié)議的通信過(guò)程。以太網(wǎng)中的主機(jī)A發(fā)送數(shù)據(jù)給主機(jī)B時(shí),主機(jī)A會(huì)先檢查自己的ARP緩存表中是否有主機(jī)B的MAC地址。如果沒(méi)有,則主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)廣播,向同一網(wǎng)段內(nèi)的所有主機(jī)發(fā)出這樣的詢問(wèn):“IP地址為主機(jī)B(即IP地址為192.168.12)的MAC地址是什么?”網(wǎng)絡(luò)上其他IP地址不匹配主機(jī)并不響應(yīng)ARP詢問(wèn),只有主機(jī)B接收到這個(gè)幀時(shí),才向主機(jī)A做出這樣的回應(yīng):“IP地址為主機(jī)B的MAC地址是BB-BB-BB-BB-BB-BB”。這樣,主機(jī)A就獲得了主機(jī)B的MAC地址,并對(duì)ARP緩存表進(jìn)行更新,隨后就可以向主機(jī)B發(fā)送信息了。
ARP欺騙過(guò)程如下:
假定主機(jī)A是進(jìn)行監(jiān)聽(tīng)的主機(jī)(ARP欺騙發(fā)起的主機(jī)),B和C為以太網(wǎng)內(nèi)任意兩臺(tái)臺(tái)主機(jī),處于被監(jiān)聽(tīng)狀態(tài)。
①首先主機(jī)A主動(dòng)向主機(jī)B發(fā)送ARP應(yīng)答報(bào)文,告訴主機(jī)B,192.168.1.3地址的MAC地址改為AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是CC-CC-CC-CC-CC-CC)。
②主機(jī)A主動(dòng)向主機(jī)c發(fā)送ARP應(yīng)答報(bào)文,告訴主機(jī)c,192.168.1.2地址的MAC地址改為AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是BB-BB-BB-BB-BB-BB)。
③這樣,當(dāng)主機(jī)c需要發(fā)數(shù)據(jù)給主機(jī)B的時(shí)候,因?yàn)橹鳈C(jī)B的IP地址192.168.1.2在c的ARP表中對(duì)應(yīng)MAC地址是AA-AA-AA-AA-AA-AA,所以實(shí)際數(shù)據(jù)就轉(zhuǎn)發(fā)到主機(jī)A上。同理,當(dāng)主機(jī)B發(fā)送數(shù)據(jù)到主機(jī)c的時(shí)候,數(shù)據(jù)也同樣發(fā)到了主機(jī)A上。
還有一些ARP欺騙采用存儲(chǔ)轉(zhuǎn)發(fā)方式:將C給B發(fā)送消息,改為c先發(fā)消息給A,A再發(fā)給B;將B給C發(fā)送消息,改為B把消息發(fā)給A,A再發(fā)給C。
2 ARP欺騙在局域網(wǎng)中的危害實(shí)例
下面以最基礎(chǔ)的通過(guò)VLAN通信的局域網(wǎng)為例,剖析ARP欺騙在局域網(wǎng)中的危害。
如圖2所示,假設(shè)局域網(wǎng)中的主機(jī)A、B、c、D等等處于VLAN2(192.168.2.0/24),Web代理服務(wù)器E處于VLANl(192.168.1.0/24),其IP地址是192.168.1.8。主機(jī)A想要連接Intemet,必須通過(guò)Web代理服務(wù)器E,A想發(fā)數(shù)據(jù)給E,就會(huì)發(fā)現(xiàn)服務(wù)器E的IP地址并不在自己所屬網(wǎng)段內(nèi),因此必須通過(guò)網(wǎng)關(guān)s2來(lái)轉(zhuǎn)發(fā),因此,需要檢查自己的ARP緩存表里是否有網(wǎng)關(guān)s2的IP地址(192.168.2.254)所對(duì)應(yīng)的MAC地址,如果沒(méi)有就通過(guò)ARP請(qǐng)求獲得,如果有就直接與網(wǎng)關(guān)通信,然后再由網(wǎng)關(guān)S2通過(guò)路由將數(shù)據(jù)包送到網(wǎng)關(guān)S1,網(wǎng)關(guān)S1收到這個(gè)數(shù)據(jù)包后發(fā)現(xiàn)是送給服務(wù)器E的,就會(huì)檢查自己的ARP緩存,看看里面是否有192.168.1.8對(duì)應(yīng)的MAC地址,如果沒(méi)有就使用ARP協(xié)議獲得,如果有就用該MAC地址與Web服務(wù)器E通信。
當(dāng)主機(jī)D被植入了ARP欺騙的木馬程序,D就主動(dòng)向VLAN2中的所有主機(jī)發(fā)送ARP應(yīng)答報(bào)文,告訴它們,網(wǎng)關(guān)S2的JP地址192.168.2254所對(duì)應(yīng)的MAC地址是DD-DD-DD-DD-DD-DD(原先MAC地址是22-22-22-22-22-22)。所有接受到報(bào)文的主機(jī)都將更新自己的ARP緩存表。于是,當(dāng)主機(jī)A想連接Internet的時(shí)候,會(huì)尋找IP地址為192.168.2.254的網(wǎng)關(guān),因?yàn)閷?duì)應(yīng)的ARP緩存表已被修改,主機(jī)A最終找到的網(wǎng)關(guān)其實(shí)是主機(jī)D,于是把數(shù)據(jù)發(fā)送給了D,所以,主機(jī)無(wú)法連接Web服務(wù)器E,接入Internet失敗。同樣,其他的主機(jī)也無(wú)法接入Internet。
ARP欺騙最典型的應(yīng)用就是一些盜號(hào)木馬。以傳奇盜號(hào)軟件為例,當(dāng)軟件開(kāi)始運(yùn)行的時(shí)候,ARP欺騙也同時(shí)運(yùn)行。在主機(jī)A中輸入賬號(hào)密碼想登錄傳奇服務(wù)器,由于A一直連不上Internet,而把它的相關(guān)數(shù)據(jù)一直發(fā)給監(jiān)聽(tīng)的主機(jī)D,所以D就能通過(guò)這個(gè)手段獲取A主機(jī)上的賬號(hào)和密碼。
當(dāng)然,這只是針對(duì)代理服務(wù)器連接Internet的攻擊,同樣,ARP欺騙也會(huì)影響局域網(wǎng)中的Ftp、Telnet、Email等服務(wù),并導(dǎo)致無(wú)法使用。
3 針對(duì)ARP欺騙的幾種防范方案
ARP欺騙實(shí)質(zhì)上是利用主機(jī)對(duì)ARP應(yīng)答的無(wú)條件信任,篡改主機(jī)的ARP緩存表,從而實(shí)現(xiàn)各種攻擊。因此,為了防御ARP攻擊,就需要保證主機(jī)的ARP緩存表的IP地址與MAC地址映射關(guān)系正確,盡可能地阻止非法篡改ARP緩存表。主要措施有以下幾點(diǎn):
(1)主機(jī)上靜態(tài)地解析ARP緩存表
主機(jī)的IP和MAC地址對(duì)應(yīng)表用手工維護(hù),不作動(dòng)態(tài)更新,可以避免ARP協(xié)議攻擊。大多數(shù)三層交換機(jī)都支持這種方法。但是,這種方法的缺陷也很明顯,移動(dòng)或經(jīng)常變化的網(wǎng)絡(luò)環(huán)境中,這種靜態(tài)手工維護(hù)MAC表的方式不適用。
(2)使用ARP服務(wù)器
使用ARP服務(wù)器查找自己的ARP轉(zhuǎn)換表來(lái)響應(yīng)其他機(jī)器的ARP廣播,但必須確保這臺(tái)ARP服務(wù)器不被黑客攻擊。
(3)使用DHCP服務(wù)器
建立DHCP服務(wù)器(建議建在網(wǎng)關(guān)上),所有主機(jī)的IP地址及相關(guān)主機(jī)信息,只能從網(wǎng)關(guān)取得,網(wǎng)關(guān)開(kāi)通DHCP服務(wù),但是要給每個(gè)網(wǎng)卡綁定固定惟一的IP地址。一定要保持網(wǎng)內(nèi)的機(jī)器IP/MAC一一對(duì)應(yīng)的關(guān)系。
(4)使用三層交換方式
現(xiàn)在,更多的三層以至于四層交換機(jī)應(yīng)用于局域網(wǎng)之中,第三層交換技術(shù)用的是IP路由交換協(xié)議,因而ARP欺騙攻擊在這種交換環(huán)境下不起作用。但相對(duì)來(lái)講第三(四)層交換機(jī)價(jià)格普遍比較昂貴。
上面所講的各種方法都是切實(shí)可行的,實(shí)際工作中,可以根據(jù)不同的網(wǎng)絡(luò)環(huán)境采取不同的方法。
舉個(gè)例子,一個(gè)有將近1000臺(tái)計(jì)算機(jī)的局域網(wǎng),如果都采取第四鐘方法使用三層交換機(jī)連接,顯然費(fèi)用過(guò)大,所以適當(dāng)?shù)卦趨R聚層采用幾臺(tái)三層交換機(jī),可以有效地減少ARP欺騙的影響范圍。此外,由于前面三種方法都必須把ARP表或者DHCP對(duì)應(yīng)表一一輸入,未免工作量太大(每臺(tái)機(jī)器都要輸入將近1000條記錄),所以可以采用一種折衷的方式。如果網(wǎng)絡(luò)更新不是太多的話,可以在第一種方法的基礎(chǔ)上作部分修改,編寫一個(gè)針對(duì)網(wǎng)關(guān)地址靜態(tài)ARP解析的批處理文件,內(nèi)容如下:
@echo off
arp d
arp-s 1 92.1 68.2.254 22-22-22-22-22-22將這個(gè)批處理軟件拖到每臺(tái)主機(jī)“Windows—開(kāi)始一程序一啟動(dòng)”中。于是主機(jī)每次啟動(dòng)的時(shí)候都會(huì)對(duì)網(wǎng)關(guān)進(jìn)行靜態(tài)ARP綁定。雖然,這樣做也有缺陷:無(wú)法防范針對(duì)個(gè)別機(jī)器進(jìn)行的ARP攻擊,比如說(shuō)圖2中,D篡改的是主機(jī)B的地址,而非網(wǎng)關(guān)s2的地址時(shí),就會(huì)發(fā)生斷網(wǎng)現(xiàn)象,但這樣的可能性很小,而且只有當(dāng)任意主機(jī)和主機(jī)B通信的時(shí)候才會(huì)出現(xiàn)無(wú)法連接的情況。所以,對(duì)于如此大型的一個(gè)網(wǎng)絡(luò),這種小范圍的、暫時(shí)的攻擊是可以接受的。
4 結(jié)束語(yǔ)
ARP協(xié)議在設(shè)計(jì)上是有一定缺陷的,而且為了節(jié)省ARP緩存表內(nèi)存,被解析過(guò)的ARP條目的壽命都是有限的:如果一段時(shí)間內(nèi)該條目沒(méi)有被引用過(guò),則條目被自動(dòng)刪除。在工作站PC的Windows環(huán)境中,ARP條目的壽命是2分鐘,在大部分Cisco交換機(jī)中,該值是5分鐘。這就注定了ARP表是在不斷更新的,因此給網(wǎng)絡(luò)黑客們提供了可利用的漏洞。本文提出的幾種解決辦法,通過(guò)實(shí)踐驗(yàn)證,可以有效地避免ARP欺騙發(fā)生。ARP病毒版本不斷更新、不斷升級(jí),給各地的網(wǎng)絡(luò)不斷帶來(lái)新的沖擊與危害,但是如果網(wǎng)絡(luò)管理員們能夠不斷學(xué)習(xí)新的防范欺騙類技術(shù),提前做好防治工作,相信ARP的危害會(huì)減少到最小的程度。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。