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