王明雄

摘要: 作為交換式局域網重要協議之一,地址解析協議(Address Resolution Protocol,ARP)對局域網的正常運行具有十分重要的作用。ARP 誕生之初,局域網并未得到廣泛應用,ARP 設置的運行機制在現有的局域網環境下存在安全隱患。基于ARP 的原理,對ARP 存在的典型安全漏洞進行了分析,并對局域網環境中通過利用ARP 存在的漏洞進行局域網攻擊的一般流程進行了介紹,提出了主機主動防御和網絡安全設備防御兩種典型防范方法。
關鍵詞: 局域網 地址解析協議 媒體存取控制位址 防范
中圖分類號: TP393.08;TP393.1 文獻標識碼: A 文章編號: 1672-3791(2023)24-0028-04
地址解析協議(Address Resolution Protocol,ARP)的主要功能是通過IP 地址獲得設備媒體存取控制位址(Media Access Control Address,MAC)。作為TCP/IP協議族的中IPv4 必備的一個協議,由互聯網工程任務組在1982 年制定。由于IPv4 在局域網中仍然占據主流地位,ARP 由于其協議層面固有的缺陷,導致其在局域網應用環境中極易被各類病毒和惡意軟件利用,為局域網信息安全帶來隱患。
1 ARP 存在的必要性
根據OSI 模型分層,把計算機網絡分為七層,從上到下分別為應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。其中IP 地址在網絡層,MAC 在數據鏈路層,彼此之間并不直接交換信息。在局域網中,終端設備通過以太網發送數據時,需要在數據報中先封裝第三層(IP)地址、第二層(MAC)地址的報頭。但在封裝數據時,彼此之間僅知道雙方的第三層(IP)地址,并不知道雙方的第二層(MAC)地址,導致數據封裝難以進行。這就需要通過某種機制來使雙方能夠獲取第二層(MAC)地址。ARP 正是在這種情況下被制定出來,可以通過網絡層數據包頭中的IP 地址信息,解析出目標終端的MAC[1],使雙方可以互相交換信息,保證網絡通信的順利進行[2]。
2 ARP 工作原理
ARP 通過ARP 報文在網絡中交換信息,根據ARP的工作過程,ARP 可以分為建立ARP 映射、更新ARP緩存等幾個步驟。
2.1 ARP 報文格式
ARP 是通過ARP 報文在網絡中交換信息的,ARP詳細規定了ARP 報文的格式,具體如表1 所示。
2.1.1 硬件類型字段
2 字節,共16 位。為了擴大ARP 的使用范圍,ARP報文專門設置字段用于標識物理網絡類型,即數據鏈路層使用的協議,其中0×0001 表示以太網。
2.1.2 協議類型字段
2 字節,共16 位。ARP 可用于任何高層協議,即網絡層使用的協議,其中0×0800 表示使用IP 協議。
2.1.3 硬件地址長度
1 字節,共8 位,表示源和目的硬件地址長度,單位為字節。在以太網中,該字段為0×0006。
2.1.4 協議地址長度
1 字節,共8 位,表示源和目的協議地址長度,單位為字節。在IP 協議中,該字段為0×0004。
2.1.5 操作類型字段
1 字節,共8 位,記錄本次報文的操作類型。共有4種操作類型,其中0×0001 表示ARP 請求報文,0×0002 表示ARP 應答報文。
2.1.6 發送方硬件地址字段
這是一個可變長度的字段,具體長度由“硬件地址長度”規定。在以太網中,本字段填充發送端的MAC。
2.1.7 發送方協議地址字段
這是一個可變長度的字段,具體長度都由“協議地址長度”規定。在以太網中,本字段填充發送端的IP地址。
2.1.8 目標硬件地址字段
在ARP 請求報文中,該字段為空;在ARP 應答報文中,該字段為ARP 請求報文的硬件地址。
2.1.9 目標協議地址字段
在ARP 請求報文中,該字段為目標主機的協議地址;在ARP 應答報文中,該字段為ARP 請求報文的協議地址。
2.2 建立ARP 映射
假設有主機A(IP 為1.1.1.1,MAC 為11:11:11:11:11:11),需要與同一局域網中的主機B(IP 為2.2.2.2,MAC 為22:22:22:22:22:22)通信。ARP 可以將主機B的地址由IP 解析為MAC,其主要流程如下。
(1)主機A 查詢其自身的路由表,確定需要通信的主機的IP 地址。由于是第一次與主機B 通信,主機A在封裝數據鏈路層數據幀時,查詢自身ARP 緩存。
(2)由于主機A 第一次和主機B 通信,會導致第一次查詢ARP 緩存時無法匹配,查詢失敗。
(3)主機A 此時需要詢問主機B 的MAC,它會構造一個ARP 請求幀廣播到本地網絡上的所有主機。主機A 的硬件地址、協議地址都被包括在這個請求幀中。此時網絡中的每一臺主機都會收到主機A 的請求幀,并通過目標協議地址字段中的IP 地址與自己的IP 地址進行比對。如果發現與自己的IP 地址不一致,主機會不做任何處理,丟棄這個ARP 請求幀。
(4)主機B 確定目標協議地址字段與自己的IP 地址一致,主機B 把主機A 的IP 和MAC 映射添加到自己的ARP 本地緩存中。
(5)主機B 將包含自身IP、MAC 的ARP 應答報文直接發送給主機B。
(6)當主機A 收到主機B 的應答報文時,會用主機B 的IP 和MAC 更新自己的ARP 本地緩存。
以上步驟建立了主機A 和主機B 的ARP 映射。當雙方需要再一次通信時,只需要查詢各自的ARP 本地緩存,就可以向對方發送數據,不必再經過以上步驟。
2.3 更新本地ARP 緩存
每一個運行ARP 的終端都需要在本地維護一個ARP 緩存表[2],其本質是一個用來存儲IP 和MAC 的緩沖區。表中每一條記錄了一個終端的IP、MAC 的記錄對。當ARP 協議被詢問一個終端的MAC 時,會首先查詢ARP 緩存,如果命中,則直接返回對應的MAC。若不存在,則發起ARP 廣播,請求在局域網內查詢。
ARP 緩存可以包含動態和靜態兩種。靜態條目一直保存在緩存表中,直到終端被重啟或關機。動態條目具有一定的生存周期,且每一個條目包含一個時間戳,標記每個條目已經存在的時間。在典型情況下,新添加到緩存表中的條目2 min 內沒有再使用,則該條目過期并從緩存表中被刪除;如果某個條目在2 min 內再次使用,則該條目又會更新時間戳,又收到2 min 的生存周期;如果某個條目始終在使用,則該條目會收到另外2 min 的生存周期,一直到10 min 的最長生命周期。
3 ARP 存在的缺陷
由于ARP 設計之初的網絡并未像今天這樣普及,所以無法預料網絡大規模部署后存在的缺陷。根據對ARP 的分析,ARP 主要存在認證機制、無順序控制、老化機制判定不全等方面的缺陷。
3.1 認證機制不健全
ARP 在進行網關中繼時,網關并不進行IP-MAC對應關系的正確性。在接收過程中,網關收到ARP 報文后直接轉發。網關不會對源IP 地址進行校驗,而是直接將新的映射關系更新到自己的緩存表中。
3.2 無順序控制機制
ARP 報文有兩種,即請求報文和響應報文。根據協議設計的正常邏輯,應當先有請求報文,然后才有響應報文。但ARP 為了保證在以太網中快速收斂,并未對兩種報文的先后順序做強制性安排。也就是ARP的響應報文和請求報文無相關性,終端在任何時候都可以向網絡中廣播響應報文。網絡中的其他終端在接收相應報文后,根據報文的信息更新自己的ARP 緩存表。
3.3 老化機制判定不全
為了保證ARP 緩存表中映射關系的準確性,ARP對在規定時間內未更新的緩存條目進行自動刪除。但ARP 在更新緩存表時,當接收到新的IP-MAC 映射關系時,終端會認為是終端更新IP,不會對ARP 報文的合法性進行校驗,這給攻擊者提供了可乘之機。
3.4 廣播特性
ARP 的請求報文和響應報文均可以廣播方式在網絡中傳輸,所有接收的終端對廣播報文中攜帶的新IPMAC映射關系都會進行響應,并更新自己的ARP 緩存表。從協議正常運行的需要來看,請求報文使用廣播方式具有必然性,但響應報文應當僅允許通過單播進行響應。如果惡意終端利用這個特點,在網絡中頻繁廣播ARP 響應信息,給網絡正常運行造成極大的隱患。同時,協議使用廣播報文非常占用帶寬資源,反而使正常的網絡應用受到限制,造成網絡堵塞。
4 ARP 攻擊原理
通過以上分析ARP 的原理可以看出,ARP 不包含任何的加密和認證措施,協議的正常運行有賴于所有主機的高度相互信任。這種協議設計使ARP 在誕生之初可以非常高效率地運行。作為提高查詢效率和降低網絡中發送廣播數據而設計的緩存表,由于其更新收到更新周期的限制,只保存最近使用的ARP 緩存表。這使得攻擊者有了可乘之機,可以在ARP 緩存表更新之前修改地址轉換表,實現攻擊[3]。
4.1 中間人攻擊
在ARP 中,網絡中所有主機對收到的廣播ARP 請求報文并不進行真實性檢測。當局域網中惡意主機利用ARP 缺陷進行攻擊時,其一般會構造一個虛假的ARP 報文,其中的發送方IP 地址字段會填入被攻擊對象IP 地址,但發送方硬件地址字段會被填入發送方真實地址,并把構造的共計報文廣播到網絡中。這樣,網絡中所有的主機都會收到這個廣播報文,并更新各自的ARP 緩存表,此時網絡中所有被攻擊主機的IP 地址所對應的MAC 都會被更新為攻擊者的MAC,所有局域網內主機向被攻擊主機發送的信息,在信息被封裝后都會通過第二層發送到攻擊主機[4]。攻擊主機收到數據后,可以先拆封保存后再重構數據報并發送給被攻擊主機,達到偷聽的效果[5]。攻擊主機也可以將信息篡改后再發給被攻擊主機,實現欺騙。如果攻擊主機將自身偽造成為網關MAC地址,則會造成網絡斷網的風險。
惡意攻擊者實現中間人攻擊的目的后,還可以通過腳本工具竊聽用戶的HTTP 協議,甚至可以篡改HTTP 協議的內容,例如:加入惡意的腳本信息、篡改正常鏈接至下載木馬病毒等,實現病毒在局域網內的廣泛傳播,造成很大危害。
4.2 泛洪攻擊
泛洪是交換機和網橋的一種數據轉發策略,即設備把一個接口接收的數據,從設備除接收數據接口外的所有接口轉發出去。泛洪對于廣播網絡來說,可以在較短的時間內將網絡的信息傳輸到所有終端,是一種數據轉發的有效策略,但如果被惡意攻擊者利用,會形成對網絡帶寬的非正常使用,造成網絡堵塞。在ARP 中,當惡意終端的攻擊目標為終端時,一般會每秒發送1 000 個以上的ARP 響應報文[6],這些報文的相應字段均由惡意程序的指紋庫隨機生成,如果被攻擊終端沒有做相應的防護措施,則這些偽造的IPMAC映射條目都會被寫入終端的ARP 緩存表中,只需要十幾秒,被攻擊終端的ARP 緩存表就會被填滿并造成溢出。其他合法的IP-MAC 映射條目就一直無法寫到ARP 緩存表中,而造成被攻擊主機網絡中斷。
網絡中的二層交換機運行ARP 時,通過交換機中的內容可尋址存儲器(Content Addressable Memory,CAM)存儲端口和MAC 的映射關系,交換機中的CAM一般為8 kB,可以存儲4 096 個主機的MAC。當交換機轉發數據時,首先查詢CAM 中的條目,如果命中,則通過對應的端口轉發出去;如果未命中,則通過泛洪的方式從所有端口廣播出去。當網絡中的惡意終端攻擊二層交換機時,通過與攻擊終端相似的方式,偽造大量未知MAC 地址的請求報文進行廣播,二層交換機不斷地學習并更新CAM 表,CAM 表很快就被填滿。正常的終端CAM 條目在經過老化時間后就再也無法進入CAM 表,使后續所有數據傳輸都變成廣播方式,網絡數據傳輸效率會變低甚至阻塞。
5 局域網中的防范措施
從以上分析可以看出,ARP 攻擊的成功實現,必須要在被攻擊主機、網絡傳輸設備被欺騙或攻擊的情況下才可以實現。因此,局域網中的ARP 共計防范主要有以下兩個措施。
5.1 用戶主機主動防御
目前,市場主流的殺毒軟件均有ARP 防御功能,ARP 防御可以主動識別網絡中虛假的ARP 廣播信息,阻止用戶主機對虛假ARP廣播信息的應答并阻止修改自身ARP緩存表[7]。針對偽造網關類型的攻擊,可以通過操作系統提供的命令,配置靜態ARP條目,將網關的IP 和MAC 映射靜態寫入緩存表中,阻止攻擊主機偽造報文更新網關MAC地址條目,為主機提供有效保障。
5.2 網絡傳輸設備防御
對于接入層設備,可以對接入設備的主機進行主機的IP 和MAC 地址綁定,過濾偽造報文。對于三層及以上核心交換設備,可以對網關進行綁定,防止網關欺騙。同時,采取ARP 廣播報文數量限制策略,防御ARP 泛洪攻擊[8]。使用虛擬局域網技術,將各主機劃分在不同的虛擬局域網中,實現快速縮小攻擊范圍和查找攻擊源的目的。
6 結語
在當前IPv4 還在局域網中大量使用的情況下,ARP 攻擊防范是一個始終難以繞開的工作。只要做好終端自身的防護,安裝必要的防護軟件,就可以避免被局域網中的惡意攻擊主機欺騙。若要一勞永逸地解決這個問題,需要將局域網升級到IPv6,其采用的鄰居發現協議(Neighbor Discovery Protocol,NDP)整合了IPv4的ARP、ICMP 等協議,并對協議進行了改進,將地址解析工作放到第三層中進行,可以采用第三層標準的網絡安全認證機制來預防ARP 欺騙和攻擊。
基金項目: 西藏職業技術學院 2023 年度校級科研創新團隊(項目編號:2023KYCXTD02)。
參考文獻
[1] 馮一飛. 基于FPGA 的超低延遲量化金融計算平臺研究與實現[D]. 無錫:江南大學,2022.
[2] 宋宇,李治霖,程超. 基于CNN-BILSTM 的工業控制系統ARP 攻擊入侵檢測方法[J]. 計算機應用研究,2020,37(S2):242-244.
[3] 汪永生.ARP 攻擊原理與防御措施[J]. 數字技術與應用,2020,38(2):181-182.
[4] 黃金金,陳晶,張鯤,等. 基于計算機網絡安全防ARP攻擊的研究綜述[J]. 電腦編程技巧與維護,2018(10):157-158,164.
[5] 李海波. 基于ARP 欺騙的校園網攻擊與防御[J]. 中國信息化,2022(8):75-76.
[6] 林晨鈺,陳俊.ARP 協議分析及攻防技術研究[J]. 襄陽職業技術學院學報,2023,22(3):104-109.
[7] 黃兆麒. 計算機網絡中的APR 攻擊防御技術研究[J]. 中國新通信,2017,19(19):57.
[8] 王金亭,朱清華,趙煒斌.ARP 攻擊與防護演練在局域網中的實踐[J]. 廣播電視網絡,2022,29(6):59-61.