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