安全之道:掌握ARP協(xié)議 防范ARP攻擊
不可否認(rèn),計(jì)算機(jī)網(wǎng)絡(luò)是人類偉大的發(fā)明,它給人們帶來了便利,創(chuàng)造了價(jià)值,提高了效率,提供了快樂。不知不覺中,人們已經(jīng)不再習(xí)慣沒有網(wǎng)絡(luò)的工作生活。有了網(wǎng)絡(luò),你我可以隨心所欲地瀏覽全世界的資訊新聞,快捷地收發(fā)郵件信息,與遠(yuǎn)在千里之外的人分享資源,坐在家里買賣商品,使地球村成為可能,這些都已經(jīng)成為了很多人生活的一部分。但人們?cè)诎l(fā)明計(jì)算機(jī)網(wǎng)絡(luò)之初,只是考慮到了網(wǎng)絡(luò)的互聯(lián)互通,而沒有考慮到安全性。這其中有一個(gè)比較重要的網(wǎng)絡(luò)協(xié)議ARP,沒有它,IPV4網(wǎng)絡(luò)就無法正常工作,但很多安全問題又因它而起。今天我們就對(duì)ARP協(xié)議做一些介紹,希望大家能對(duì)ARP協(xié)議有一個(gè)較為正確的認(rèn)識(shí)。
ARP協(xié)議:
為了工作需要,很多企業(yè)都會(huì)建立自己的企業(yè)內(nèi)網(wǎng),我們稱之為局域網(wǎng),如政府部門、機(jī)關(guān)單位、學(xué)校宿舍都對(duì)以太網(wǎng)情有獨(dú)鐘。在這種網(wǎng)絡(luò)中有兩種地址,一種是IP地址,它是由軟件分配的,可以改變,工作于OSI參考模型的第三層;另一種是MAC地址,也稱為網(wǎng)卡地址,是存儲(chǔ)在種個(gè)網(wǎng)卡的,是不可改變的,工作于OSI參考模型的第二層。局域網(wǎng)中的每一臺(tái)計(jì)算機(jī)都具有這兩種地址。
按照OSI封裝、解封裝的工作過程,必須實(shí)現(xiàn)這兩種地址之間的轉(zhuǎn)換,這中間需要用到ARP以及RARP協(xié)議,當(dāng)然我今天的重點(diǎn)是ARP。
ARP協(xié)議,又稱為地址解析協(xié)議,英文全稱是(Address Resolution Protocol)是屬于TCP/IP協(xié)議族的。它的主要作用是網(wǎng)絡(luò)地址轉(zhuǎn)換。
在局域網(wǎng)中,當(dāng)一臺(tái)主機(jī)把以太網(wǎng)數(shù)據(jù)幀發(fā)送到另一臺(tái)主機(jī)時(shí),是根據(jù)48bit以太網(wǎng)地址來確定目的接口的。網(wǎng)絡(luò)中實(shí)際傳輸?shù)拿恳粠锇心繕?biāo)主機(jī)的介質(zhì)訪問控制子層(Media Access Control,MAC)地址。在以太網(wǎng)中,一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址。而MAC地址可以通過地址解析協(xié)議獲得。所謂“地址解析”就是在IP地址和采用不同網(wǎng)絡(luò)技術(shù)的硬件地址之間提供的動(dòng)態(tài)映射。ARP協(xié)議就是用來獲取目的主機(jī)的MAC地址的。需要獲取的主機(jī)MAC地址,是存儲(chǔ)在網(wǎng)絡(luò)傳輸數(shù)據(jù)幀中的。
當(dāng)然,還有另外一個(gè)協(xié)議是RARP,叫做反向地址解析協(xié)議(Reverse Address Resolution Protocol,RARP),其作用是將MAC地址轉(zhuǎn)換為IP地址。
ARP緩存表:
為了提高通信的效率,網(wǎng)絡(luò)上每臺(tái)主機(jī)都有一個(gè)ARP緩存表,這也是ARP高效運(yùn)行的關(guān)鍵所在。緩存表中存放了最近的Internet地址到硬件地址之間的映射記錄。用戶可以使用arp–a命令查看本機(jī)ARP緩存內(nèi)容。以主機(jī)A向主機(jī)B發(fā)送數(shù)據(jù)為例,當(dāng)發(fā)送數(shù)據(jù)時(shí),主機(jī)A會(huì)在本機(jī)的ARP緩存表中尋找是否有目標(biāo)IP地址。如尋找到,將目標(biāo)主機(jī)MAC地址寫入以太網(wǎng)幀首部加入到輸出隊(duì)列等候發(fā)送;否則,主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)ARP請(qǐng)求廣播,詢問同一網(wǎng)段內(nèi)主機(jī)B的MAC地址。網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng)該ARP詢問,只有主機(jī)B的ARP層收到這份報(bào)文后,才會(huì)向主機(jī)A發(fā)送一個(gè)ARP應(yīng)答,告知其MAC地址為“00-E0-4C-87-DD-D2”
此時(shí),主機(jī)A將獲得主機(jī)B的MAC地址,就可以向主機(jī)B發(fā)送信息。在發(fā)送信息的同時(shí)更新本機(jī)的ARP緩存表,以便下次再向主機(jī)B發(fā)送信息時(shí),直接從ARP緩存表里查找。每臺(tái)在第一次登錄網(wǎng)絡(luò)建立網(wǎng)絡(luò)連接時(shí),都要發(fā)送ARP廣播包;如果要訪問的主機(jī)的IP地址和MAC地址在本機(jī)ARP緩存表中不存在,也將向網(wǎng)絡(luò)發(fā)送ARP請(qǐng)求。由此可以根據(jù)每個(gè)用戶的既定訪問權(quán)限信息對(duì)主機(jī)的ARP緩存表作相應(yīng)改變,從而達(dá)到訪問控制的目的。
但考慮到網(wǎng)絡(luò)的實(shí)時(shí)變化,ARP高速緩存中的記錄不是一承不變的,而是是動(dòng)態(tài)變化的,每當(dāng)發(fā)送一個(gè)指定地點(diǎn)的數(shù)據(jù)報(bào)且高速緩存中不存在當(dāng)前項(xiàng)目時(shí),ARP便會(huì)自動(dòng)添加當(dāng)前項(xiàng)目。ARP緩存采用老化機(jī)制,在一段時(shí)間內(nèi)如果表中的某一行沒有被使用,該行就會(huì)被刪除,如此可以大大縮小ARP緩存表的長(zhǎng)度,加快查詢速度。因此,訪問控制要求所進(jìn)行的ARP緩存改變必須進(jìn)行定時(shí)刷新,從而適應(yīng)ARP緩存老化機(jī)制。#p#
ARP攻擊(網(wǎng)絡(luò)偵聽):
在網(wǎng)絡(luò)中,當(dāng)信息進(jìn)行傳播的時(shí)候,通過某種方式將其截獲或者捕獲,從而進(jìn)行分析處理,稱之為網(wǎng)絡(luò)監(jiān)聽。網(wǎng)絡(luò)監(jiān)聽在網(wǎng)絡(luò)中的任何一個(gè)位置模式下都可實(shí)施。用戶只需要一個(gè)協(xié)議分析軟件即可實(shí)現(xiàn)。
1)信息發(fā)送。Ethernet網(wǎng)協(xié)議的工作方式是將要發(fā)送的數(shù)據(jù)報(bào)發(fā)往連接在一起的所有主機(jī)。包頭中包括有應(yīng)該接收數(shù)據(jù)報(bào)的主機(jī)的正確地址。要發(fā)送的數(shù)據(jù)報(bào)必須從TCP/IP協(xié)議的IP層交給數(shù)據(jù)鏈路層,在這個(gè)過程中,采用ARP將網(wǎng)絡(luò)地址翻譯成48bit的MAC地址。
2)信息接收。Ethernet中填寫了物理地址的幀經(jīng)網(wǎng)卡發(fā)送到物理線路上。當(dāng)使用集線器的時(shí)候,發(fā)送出去的信號(hào)到達(dá)集線器,由集線器再轉(zhuǎn)發(fā)到相連接的每一條線路。當(dāng)數(shù)字信號(hào)到達(dá)一臺(tái)主機(jī)的網(wǎng)絡(luò)接口時(shí),正常狀態(tài)下,網(wǎng)絡(luò)接口對(duì)讀入數(shù)據(jù)幀進(jìn)行檢查,決定是否將數(shù)據(jù)幀交給IP層軟件。但是,當(dāng)主機(jī)工作在監(jiān)聽模式下時(shí),所有的數(shù)據(jù)幀都將被交給上層協(xié)議軟件處理。以太網(wǎng)卡典型地具有一個(gè)“混合模式(Promiscuous)”選項(xiàng),能夠關(guān)掉過濾功能而查看經(jīng)過它的所有數(shù)據(jù)報(bào)。這個(gè)混合模式選項(xiàng)恰好被數(shù)據(jù)報(bào)監(jiān)測(cè)程序利用來實(shí)現(xiàn)它們的監(jiān)聽功能。
ARP攻擊就是通過偽造IP地址和MAC地址實(shí)現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞,攻擊者只要持續(xù)不斷的發(fā)出偽造的ARP響應(yīng)包就能更改目標(biāo)主機(jī)ARP緩存中的IP-MAC條目,造成網(wǎng)絡(luò)中斷或中間人攻擊。ARP攻擊主要是存在于局域網(wǎng)網(wǎng)絡(luò)中,局域網(wǎng)中若有一臺(tái)計(jì)算機(jī)感染ARP木馬,則感染該ARP木馬的系統(tǒng)將會(huì)試圖通過“ARP欺騙”手段截獲所在網(wǎng)絡(luò)內(nèi)其它計(jì)算機(jī)的通信信息,并因此造成網(wǎng)內(nèi)其它計(jì)算機(jī)的通信故障。
通過數(shù)據(jù)報(bào)截獲分析,系統(tǒng)探測(cè)到非法主機(jī)登錄網(wǎng)絡(luò)或者試圖訪問,系統(tǒng)將根據(jù)合法主機(jī)IP信息,構(gòu)造虛假M(fèi)AC地址,使用特定線程對(duì)非法主機(jī)進(jìn)行持續(xù)欺騙。根據(jù)實(shí)際運(yùn)行情況,考慮到網(wǎng)絡(luò)負(fù)擔(dān)以及系統(tǒng)性能,欺騙信息連續(xù)發(fā)送時(shí)間可為2~5min,每輪間隔為10~20s。系統(tǒng)運(yùn)行所得結(jié)果如下圖所示:
▲被攻擊后的ARP緩存表
ARP攻擊防范:
1、雙向綁定:
一般來說,在小規(guī)模網(wǎng)絡(luò)中,大家比較推薦使用雙向綁定,也就是在路由器和終端上都進(jìn)行IP-MAC綁定的措施,它可以對(duì)ARP欺騙的兩邊,偽造網(wǎng)關(guān)和截獲數(shù)據(jù),都具有約束的作用。這是從ARP欺騙原理上進(jìn)行的防范措施,也是最普遍應(yīng)用的辦法。它對(duì)付最普通的ARP欺騙是有效的。
2、ARP個(gè)人防火墻:
在一些殺毒軟件中加入了ARP個(gè)人防火墻的功能,它是通過在終端電腦上對(duì)網(wǎng)關(guān)進(jìn)行綁定,保證不受網(wǎng)絡(luò)中假網(wǎng)關(guān)的影響,從而保護(hù)自身數(shù)據(jù)不被竊取的措施。ARP防火墻使用范圍很廣,但也會(huì)有問題,如,它不能保證綁定的網(wǎng)關(guān)一定是正確的。如果一個(gè)網(wǎng)絡(luò)中已經(jīng)發(fā)生了ARP欺騙,有人在偽造網(wǎng)關(guān),那么,ARP個(gè)人防火墻上來就會(huì)綁定這個(gè)錯(cuò)誤的網(wǎng)關(guān),這是具有極大風(fēng)險(xiǎn)的。
3、VLAN和交換機(jī)端口綁定:
通過劃分VLAN和交換機(jī)端口綁定,以圖防范ARP,也是常用的防范方法。做法是細(xì)致地劃分VLAN,減小廣播域的范圍,使ARP在小范圍內(nèi)起作用,而不至于發(fā)生大面積影響。同時(shí),一些網(wǎng)管交換機(jī)具有MAC地址學(xué)習(xí)的功能,學(xué)習(xí)完成后,再關(guān)閉這個(gè)功能,就可以把對(duì)應(yīng)的MAC和端口進(jìn)行綁定,避免了病毒利用ARP攻擊篡改自身地址。也就是說,把ARP攻擊中被截獲數(shù)據(jù)的風(fēng)險(xiǎn)解除了。這種方法也能起到一定的作用。