程銳+陳中舉+杜友福
摘要:工作在TCP/IP協(xié)議族中網(wǎng)絡(luò)層的ARP(Address Resolution Protocol)協(xié)議是一個把網(wǎng)絡(luò)層使用的32位的IP地址解析成數(shù)據(jù)鏈路層使用的48位的MAC地址的協(xié)議。該協(xié)議在設(shè)計(jì)的時候沒有考慮必要的身份認(rèn)證和鑒別機(jī)制,導(dǎo)致這一漏洞經(jīng)常被黑客利用,對局域網(wǎng)的安全有效運(yùn)作產(chǎn)生巨大威脅。使用Java網(wǎng)絡(luò)和多線程編程模擬了局域網(wǎng)內(nèi)的ARP攻擊,實(shí)現(xiàn)了ARP攻擊的檢測,介紹了幾種ARP攻擊的防范方法。
關(guān)鍵詞:ARP協(xié)議;ARP欺騙;攻擊檢測;攻擊防范
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)01-0059-02
Abstract: The Address Resolution Protocol (ARP), which works at the network layer of the TCP / IP protocol suite, is a protocol that resolves a 32-bit IP address used by the network layer into a 48-bit MAC address used by the data link layer. The lack of essential authentication and identification mechanisms of its design generating its vulnerability which is often exploited by hackers, leading to a great threat to the safe and effective operation of the LAN.using Java network and multi-threaded programming to simulate the LAN ARP attacks, implements the detections of ARP attacks, and introduce several methods to prevent ARP attacks.
Key words:ARP protocol; ARP cheat; attack detection; attack prevention
1 概述
互聯(lián)網(wǎng)的快速發(fā)展,讓網(wǎng)絡(luò)安全備受重視。在諸多網(wǎng)絡(luò)安全隱患中,ARP攻擊可謂是大名鼎鼎。ARP攻擊的危害性很大,黑客們可以利用ARP攻擊實(shí)現(xiàn)DoS攻擊或中間人攻擊,造成網(wǎng)絡(luò)通信中斷或數(shù)據(jù)被截取甚至是篡改,嚴(yán)重影響網(wǎng)絡(luò)的安全。目前利用ARP進(jìn)行攻擊的木馬病毒在局域網(wǎng)中廣泛傳播,給網(wǎng)絡(luò)安全運(yùn)行帶來巨大隱患,是局域網(wǎng)安全的首要威脅[1]。
2 ARP協(xié)議概述
ARP協(xié)議工作在網(wǎng)絡(luò)層,它的作用就是要把網(wǎng)絡(luò)層使用的IP地址解析成數(shù)據(jù)鏈路層使用的硬件地址。以太網(wǎng)上的每一個設(shè)備都維持著一張最近IP地址到MAC地址的映射表,也叫ARP高速緩存[2]。
當(dāng)以太網(wǎng)上的一個網(wǎng)絡(luò)設(shè)備要和另一個設(shè)備進(jìn)行通信時,會先查看自己的ARP緩存里是否存在目的IP地址和某個MAC地址的映射,如果有,就使用該條記錄,否則,該設(shè)備就會通過ARP協(xié)議來獲得目的MAC地址。其過程是:該設(shè)備會廣播ARP請求分組,局域網(wǎng)內(nèi)的每一個設(shè)備都會接收到該ARP請求報(bào)文。當(dāng)一個設(shè)備接收到一個ARP請求報(bào)文時,它的做法是:1)先取出該報(bào)文的源IP地址和源MAC地址,看自己的ARP緩存中是否有這樣的映射,如果有的話,就更新該條記錄的計(jì)時器;如果沒有,就新增一條記錄。2)查看該報(bào)文的目標(biāo)IP地址是否就是自己的IP地址,如果是,就向報(bào)文的發(fā)送者單播一個ARP響應(yīng)報(bào)文;如果不是,就丟棄該報(bào)文。3)ARP請求報(bào)文的發(fā)送者在接收到ARP響應(yīng)報(bào)文時,就把目標(biāo)設(shè)備的IP地址和硬件地址的映射寫入自己的ARP緩存中。
3 ARP攻擊原理和攻擊模擬
3.1 ARP攻擊原理
ARP協(xié)議是建立在信任局域網(wǎng)內(nèi)所有節(jié)點(diǎn)的基礎(chǔ)上,網(wǎng)絡(luò)上的設(shè)備可以自主發(fā)送ARP應(yīng)答分組,其他設(shè)備收到應(yīng)答分組時不會檢測該報(bào)文的真實(shí)性就會將其加入或是更新本機(jī)ARP緩存[3-5]。由此攻擊者就可以向某一設(shè)備發(fā)送偽造的ARP應(yīng)答報(bào)文,來達(dá)到讓被攻擊對象發(fā)送的信息無法到達(dá)預(yù)期的設(shè)備或到達(dá)錯誤的設(shè)備,這樣就構(gòu)成了一個ARP欺騙攻擊。
3.2 ARP攻擊模擬
3.2.1 攻擊模擬流程
ARP攻擊模擬的工作流程如圖1所示,描述如下:
(1) 手動輸入要攻擊的兩個設(shè)備的IP地址。輸入IP地址后,會校驗(yàn)輸入的IP地址是否有效。
(2) 如果校驗(yàn)不通過,則退到上一步。如果校驗(yàn)通過,則進(jìn)行下一步。
(3) 判斷要攻擊的兩個對象和本機(jī)是否在同一個局域網(wǎng)。如果不是,則退到第一步。否則執(zhí)行下一步。
(4) 由多線程程序來解析兩個被攻擊的對象以太網(wǎng)地址。
(5) 由多線程程序來向兩個被攻擊對象持續(xù)發(fā)送偽造的ARP應(yīng)答分組,不斷刷新兩個被攻擊對象的ARP緩存。
(6) 由多線程程序來收發(fā)數(shù)據(jù)包。
3.2.2 攻擊模擬環(huán)境
程序編寫采用Java語言,JDK的版本是jdk1.7.0_80,IDE采用的是eclipse-jee-luna-SR2-win32,Jpacp的版本是0.6,操作系統(tǒng)是Windows 7操作系統(tǒng)。
3.2.3 攻擊模擬結(jié)果
本程序成功的實(shí)現(xiàn)了局域網(wǎng)內(nèi)的ARP攻擊,效果如圖2所示。
從上面的攻擊結(jié)果圖可以清楚地看到,程序達(dá)到了預(yù)期想要的結(jié)果,實(shí)現(xiàn)了局域網(wǎng)內(nèi)的ARP攻擊模擬。endprint
3.2.4 攻擊模擬分析
從圖2中可以看出實(shí)施ARP攻擊后,主機(jī)B的ARP高速緩存中同一個硬件地址C8-FF-28-9B-7F-F2對應(yīng)了兩個不同的IP地址,而該硬件地址就是實(shí)施攻擊者的主機(jī)的硬件地址。因此,就可以得出結(jié)論,當(dāng)局域網(wǎng)內(nèi)發(fā)生了ARP攻擊的時候,被攻擊的對象的ARP高速緩存中必然會有多個不同的IP地址映射到同一個硬件地址,并且該硬件地址就是實(shí)施攻擊的主機(jī)的硬件地址。
4 ARP攻擊的檢測及防御
4.1 ARP攻擊的檢測
通過分析可知,要實(shí)現(xiàn)ARP欺騙,攻擊者必須持續(xù)發(fā)送偽造的ARP應(yīng)答分組,所以,當(dāng)檢測到局域網(wǎng)存在著大量的ARP應(yīng)答分組時,就可以斷定,局域網(wǎng)內(nèi)必然發(fā)生了ARP攻擊。
由此,可以通過對整個局域網(wǎng)內(nèi)的數(shù)據(jù)包或者是經(jīng)由某個設(shè)備上的數(shù)據(jù)包進(jìn)行分析,檢測ARP攻擊。下面以主機(jī)為例進(jìn)行說明。
1) 對經(jīng)由本機(jī)網(wǎng)卡的每一個數(shù)據(jù)包進(jìn)行分析。如果該數(shù)據(jù)包是本機(jī)發(fā)送的ARP請求分組,就把所請求的IP地址加入請求隊(duì)列之中。如果是發(fā)送給本機(jī)的ARP應(yīng)答分組,就檢查該應(yīng)答分組的發(fā)送端IP地址是否在請求隊(duì)列中,如果在,則該IP地址出隊(duì)列;否則,就說明該應(yīng)答分組是一個偽造的ARP應(yīng)答分組,也能夠說明本機(jī)受到了該ARP應(yīng)答分組發(fā)送者的攻擊。檢測效果如圖3所示。
2) 監(jiān)視本機(jī)的ARP高速緩存,一旦發(fā)現(xiàn)ARP高速緩存中出現(xiàn)了同一個MAC地址映射到多個IP地址的情況,就表名本機(jī)遭受到了ARP攻擊。檢測效果如圖4所示。
4.2 ARP攻擊的防御
ARP攻擊的實(shí)現(xiàn)依賴于設(shè)備對ARP應(yīng)答的無條件信任,從而通過發(fā)送偽造的ARP應(yīng)答來刷新被攻擊對象的ARP高速緩存。
從這一點(diǎn)上來看,可以從以下幾方面來防范局域網(wǎng)內(nèi)的ARP攻擊。
1) 設(shè)置靜態(tài)ARP緩存,實(shí)現(xiàn)IP地址和MAC地址的靜態(tài)綁定。由網(wǎng)絡(luò)管理員手動輸入局域網(wǎng)內(nèi)設(shè)備上的ARP緩存記錄,設(shè)備就不再接收ARP分組,這樣就能完全避免ARP攻擊。這種方法雖然能夠起到很好的作用,但是有很多缺點(diǎn)[6]。一是局域網(wǎng)內(nèi)的每一個設(shè)備都需要手動輸入,這樣很麻煩,容易出錯。二是局域網(wǎng)內(nèi)的設(shè)備的IP地址并不是固定不變的,IP地址的每變化一次,就要重新輸入ARP緩存。
2) 設(shè)置ARP服務(wù)器。在局域網(wǎng)內(nèi)設(shè)置專用的ARP服務(wù)器,所有與地址解析相關(guān)的任務(wù)都交給ARP服務(wù)器來處理,設(shè)備不再接收非ARP服務(wù)器發(fā)送的ARP應(yīng)答分組;也不再對非來自ARP服務(wù)器的ARP請求分組進(jìn)行應(yīng)答[7]。這種方法效果比較好,缺點(diǎn)是不利于維護(hù),并且服務(wù)器也很容易被攻擊。
3) 拒收無請求型的應(yīng)答。設(shè)備只在自己發(fā)送了ARP請求的情況下才接受ARP應(yīng)答[8]。
4) 對局域網(wǎng)劃分VLAN或者增加VLAN的數(shù)量,減少VLAN中主機(jī)的數(shù)量。這種方法可以限制ARP廣播域的大小,縮小攻擊范圍,缺點(diǎn)是不利于維護(hù),也無法自動適應(yīng)網(wǎng)絡(luò)的動態(tài)變化。
5) 限制主機(jī)自主發(fā)送ARP應(yīng)答分組,只有在接收到ARP請求分組時,才允許主機(jī)發(fā)送相應(yīng)的ARP應(yīng)答分組。
5 總結(jié)與展望
ARP協(xié)議是建立在信任局域網(wǎng)內(nèi)所有節(jié)點(diǎn)的基礎(chǔ)上,網(wǎng)絡(luò)上的設(shè)備可以自主發(fā)送ARP應(yīng)答分組,正是由于這一漏洞才讓該協(xié)議容易被黑客用來進(jìn)行ARP欺騙攻擊,對局域網(wǎng)安全有效運(yùn)作產(chǎn)生巨大威脅和損害。本文闡述了ARP攻擊的原理,使用Java網(wǎng)絡(luò)和多線程編程模擬了局域網(wǎng)內(nèi)的ARP攻擊,實(shí)現(xiàn)了ARP攻擊的檢測,介紹了幾種ARP攻擊的防范方法。相信在計(jì)算機(jī)安全領(lǐng)域備受重視的大環(huán)境下,這個長期以來沒有得到很好解決的問題一定會一步一步被徹底解決。
參考文獻(xiàn):
[1] 鄭先偉. CERNET應(yīng)急響應(yīng)組2007年5月報(bào)告 ARP欺騙是首要威脅[J]. 中國教育網(wǎng)絡(luò),2007(7):41.
[2] [美]W. Richard Stevens. TCP/IP詳解 卷1:協(xié)議[M].范建華,胥光輝,張濤,譯.北京:機(jī)械工業(yè)出版社,2000(4):40-41.
[3] 陳英,馬洪濤.局域網(wǎng)內(nèi)ARP協(xié)議攻擊及解決辦法[J].中國安全科學(xué)學(xué)報(bào),2007(7):126-131+179.
[4] 秦豐林,段海新,郭汝廷.ARP欺騙的監(jiān)測與防范技術(shù)綜述[J].計(jì)算機(jī)應(yīng)用研究,2009,26(01):30-33.
[5] 智陽光,胡曦明,馬苗. 淺析ARP攻擊原理及其防御[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(7):30-32.
[6] 任俠,呂述望. ARP協(xié)議欺騙原理分析與抵御方法[J]. 計(jì)算機(jī)工程,2003(9):127-128+182.
[7] 黃元培. ARP欺騙在局域網(wǎng)中的分析及防御探究[J]. 現(xiàn)代鹽化工,2016,43(05):17-18.
[8] 趙均,陳克非. ARP協(xié)議安全漏洞分析及其防御方法[J]. 信息安全與通信保密,2006(8):72-74+77.endprint