狄明遠(yuǎn)
摘要:校園網(wǎng)目前越來越普及,隨之而來也出現(xiàn)了很多問題,arp問題已經(jīng)出現(xiàn)在了許多學(xué)校網(wǎng)絡(luò)中,本文對何為arp攻擊進(jìn)行了簡要的論述,并提出了相應(yīng)的解決辦法。
關(guān)鍵詞:arp 欺騙 攻擊
中圖分類號:TP393.04文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8937(2009)03-0073-02
最近一段時(shí)間,很多校園局域網(wǎng)內(nèi)的主機(jī)出現(xiàn)頻繁斷網(wǎng)的現(xiàn)象,引起這種現(xiàn)象的主要原因是局域網(wǎng)內(nèi)部存在ARP 欺騙攻擊。以下筆者就針對這種攻擊的原理和防范方法進(jìn)行了簡單介紹。
1 ARP 協(xié)議的定義
要想了解ARP 欺騙攻擊的原理,首先就要了解什么是ARP 協(xié)議,ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議。從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體說來就是將網(wǎng)絡(luò)層(IP層,也就是相當(dāng)于OSI的第三層)地址解析為數(shù)據(jù)連接層(MAC層,也就是相當(dāng)于OSI的第二層)的MAC地址。
我們知道,二層的以太網(wǎng)交換設(shè)備并不能識別32位的IP地址,它們是以48位以太網(wǎng)地址(就是我們常說的MAC地址)傳輸以太網(wǎng)數(shù)據(jù)包的。因此IP地址與MAC地址之間就必須存在一種對應(yīng)關(guān)系,而ARP協(xié)議就是用來確定這種對應(yīng)關(guān)系的協(xié)議。
ARP工作時(shí),首先請求主機(jī)發(fā)送出一個含有所希望到達(dá)的IP地址的以太網(wǎng)廣播數(shù)據(jù)包,然后目標(biāo)IP的所有者會以一個含有IP和MAC地址對的數(shù)據(jù)包應(yīng)答請求主機(jī)。這樣請求主機(jī)就能獲得要到達(dá)的IP地址對應(yīng)的MAC地址,同時(shí)請求主機(jī)會將這個地址對放入自己的ARP表緩存起來,以節(jié)約不必要的ARP通信。ARP緩存表采用了老化機(jī)制,在一段時(shí)間內(nèi)如果表中的某一行沒有使用(Windows系統(tǒng)這個時(shí)間為2分鐘,而Cisco路由器的這個時(shí)間為5分鐘),就會被刪除。通過下面的例子我們可以很清楚地看出ARP的工作機(jī)制。
假定有如下五個IP地址的主機(jī)或者網(wǎng)絡(luò)設(shè)備,它們分別是:
假如主機(jī)A要與主機(jī)B通信,它首先會檢查自己的ARP緩存中是否有192.168.1.3 這個地址對應(yīng)的MAC地址,如果沒有
它就會向局域網(wǎng)的廣播地址發(fā)送ARP 請求包,大致的意思是192.168.1.3的MAC地址是什么請告訴192.168.1.2,而廣播地址會把這個請求包廣播給局域網(wǎng)內(nèi)的所有主機(jī),但是只有192.168.1.3 這臺主機(jī)才會響應(yīng)這個請求包,它會回應(yīng)192.168.1.2一個ARP包,大致的意思是192.168.1.3的MAC 地址是02-02-02-02-02-02。這樣的話主機(jī)A 就得到了主機(jī)B 的MAC 地址,并且它會把這個對應(yīng)的關(guān)系存在自己的ARP緩存表中。之后主機(jī)A與主機(jī)B之間的通信就依靠兩者緩存表里的MAC地址來通信了,直到通信停止后2分鐘,這個對應(yīng)關(guān)系才會從表中被刪除。
再來看一個非局域網(wǎng)內(nèi)部的通信過程。假如主機(jī)A需要和主機(jī)D進(jìn)行通信,它首先會發(fā)現(xiàn)這個主機(jī)D的IP 地址并不是自己同一個網(wǎng)段內(nèi)的,因此需要通過網(wǎng)關(guān)來轉(zhuǎn)發(fā),這樣的話它會檢查自己的ARP緩存表里是否有網(wǎng)關(guān)192.168.1.1 對應(yīng)的MAC地址,如果沒有就通過ARP請求獲得,如果有就直接與網(wǎng)關(guān)通信,然后再由網(wǎng)關(guān)C通過路由將數(shù)據(jù)包送到網(wǎng)關(guān)E,網(wǎng)關(guān)E 收到這個數(shù)據(jù)包后發(fā)現(xiàn)是送給主機(jī)D(10.1.1.2)的,它就會檢查自己的ARP緩存,看看里面是否有10.1.1.2 對應(yīng)的MAC地址,如果沒有就使用ARP協(xié)議獲得,如果有就是用該MAC地址與主機(jī)D通信。
2 ARP欺騙的含義
通過上面的例子我們知道,在以太局域網(wǎng)內(nèi)數(shù)據(jù)包傳輸依靠的是MAC地址,IP地址與MAC對應(yīng)的關(guān)系依靠ARP表,每臺主機(jī)(包括網(wǎng)關(guān))都有一個ARP緩存表。在正常情況下這個緩存表能夠有效保證數(shù)據(jù)傳輸?shù)囊粚σ恍?像主機(jī)B之類的是無法截獲A與D之間的通信信息的。
但是主機(jī)在實(shí)現(xiàn)ARP緩存表的機(jī)制中存在一個不完善的地方,當(dāng)主機(jī)收到一個ARP的應(yīng)答包后,它并不會去驗(yàn)證自己是否發(fā)送過這個ARP請求,而是直接將應(yīng)答包里的MAC地址與IP對應(yīng)的關(guān)系替換掉原有的ARP緩存表里的相應(yīng)信息。這就導(dǎo)致主機(jī)B截取主機(jī)A主機(jī)D之間的數(shù)據(jù)通信成為可能。
首先主機(jī)B向主機(jī)A發(fā)送一個ARP應(yīng)答包說192.168.1.1 的MAC地址是02-02-02-02-02-02,主機(jī)A收到這個包后并沒有去驗(yàn)證包的真實(shí)性而是直接將自己ARP列表中的192.168.1.1的MAC地址替換成02-02-02-02-02-02,02,同時(shí)主機(jī)B向網(wǎng)關(guān)C 發(fā)送一個ARP 響應(yīng)包說192.168.1.2 的MAC 是02-02-02-02-02-02,同樣,網(wǎng)關(guān)C 也沒有去驗(yàn)證這個包的真實(shí)性就把自己ARP 表中的192.168.1.2 的MAC地址(下轉(zhuǎn)第95頁)(上接第73頁)替換成02-02-02-02-02-02。當(dāng)主機(jī)A 想要與主機(jī)D 通信時(shí),它直接把應(yīng)該發(fā)送給網(wǎng)關(guān)192.168.1.1 的數(shù)據(jù)包發(fā)送到02-02-02-02-02-02 這個MAC 地址,也就是發(fā)給了主機(jī)B,主機(jī)B 在收到這個包后經(jīng)過修改再轉(zhuǎn)發(fā)給真正的網(wǎng)關(guān)C,當(dāng)從主機(jī)D返回的數(shù)據(jù)包到達(dá)網(wǎng)關(guān)C后,網(wǎng)關(guān)也使用自己ARP表中的MAC,將發(fā)往192.168.1.2 這個IP 地址的數(shù)據(jù)發(fā)往02-02-02-02-02-02 這個MAC 地址也就是主機(jī)B,主機(jī)B 在收到這個包后再轉(zhuǎn)發(fā)給主機(jī)A完成一次完整的數(shù)據(jù)通信,這樣就成功地實(shí)現(xiàn)了一次A R P 欺騙攻擊。
因此簡單點(diǎn)說,ARP 欺騙的目的就是為了實(shí)現(xiàn)全交換環(huán)境下的數(shù)據(jù)監(jiān)聽。大部分的木馬或病毒使用ARP 欺騙攻擊也是為了達(dá)到這個目的。
3 如何發(fā)現(xiàn)及清除
局域網(wǎng)內(nèi)一旦有ARP 的攻擊存在,會欺騙局域網(wǎng)內(nèi)所有主機(jī)和網(wǎng)關(guān),讓所有上網(wǎng)的流量必須經(jīng)過A R P 攻擊者控制的主機(jī)。其他用戶原來直接通過網(wǎng)關(guān)上網(wǎng),現(xiàn)在卻轉(zhuǎn)由通過被控主機(jī)轉(zhuǎn)發(fā)上網(wǎng)。由于被控主機(jī)性能和程序性能的影響,這種轉(zhuǎn)發(fā)并不會非常流暢,因此就會導(dǎo)致用戶上網(wǎng)的速度變慢甚至頻繁斷線。另外ARP 欺騙需要不停地發(fā)送ARP 應(yīng)答包,會造成網(wǎng)絡(luò)擁塞。
一旦懷疑有ARP 攻擊我們就可以使用抓包工具來抓包,如果發(fā)現(xiàn)網(wǎng)內(nèi)存在大量ARP 應(yīng)答包,并且將所有的IP 地址都指向同一個M A C 地址,那么就說明存在A R P欺騙攻擊,并且這個MAC 地址就是用來進(jìn)行A R P 欺騙攻擊的主機(jī)M A C 地址,我們可以查出它對應(yīng)的真實(shí)IP 地址,從而采取相應(yīng)的控制措施。另外,我們也可以到路由器或者網(wǎng)關(guān)交換機(jī)上查看IP 地址與M A C地址的對應(yīng)表,如果發(fā)現(xiàn)某一個MAC 對應(yīng)了大量的IP 地址,那么也說明存在ARP 欺騙攻擊,同時(shí)通過這個MAC 地址查出用來ARP 欺騙攻擊的主機(jī)在交換機(jī)上所對應(yīng)的物理端口,從而進(jìn)行控制。
4 如何防范
我們可以采取以下措施防范ARP 欺騙。
第一,在客戶端使用arp命令綁定網(wǎng)關(guān)的真實(shí)M A C 地址命令如下:
arp (先清除錯誤的ARP表)
arp 192.168.1.1 03-03-03-03-03-03 (靜態(tài)指定網(wǎng)關(guān)的MAC 地址)
第二,在交換機(jī)上做端口與MAC 地址的靜態(tài)綁定。
第三,在路由器上做IP 地址與MAC 地址的靜態(tài)綁定。
第四,使用“ARP SERVER”按一定的時(shí)間間隔廣播網(wǎng)段內(nèi)所有主機(jī)的正確IPMA C 映射表。
第五,最主要是要提高用戶的安全意識,養(yǎng)成良好的安全習(xí)慣,包括:及時(shí)安裝系統(tǒng)補(bǔ)丁程序;為系統(tǒng)設(shè)置強(qiáng)壯的密碼;安裝防火墻;安裝有效的殺毒軟件并及時(shí)升級病毒庫;不主動進(jìn)行網(wǎng)絡(luò)攻擊,不隨便運(yùn)行不受信任的軟件。