程銳+陳中舉+杜友福
摘要:工作在TCP/IP協(xié)議族中網(wǎng)絡(luò)層的ARP(Address Resolution Protocol)協(xié)議是一個(gè)把網(wǎng)絡(luò)層使用的32位的IP地址解析成數(shù)據(jù)鏈路層使用的48位的MAC地址的協(xié)議。該協(xié)議在設(shè)計(jì)的時(shí)候沒(méi)有考慮必要的身份認(rèn)證和鑒別機(jī)制,導(dǎo)致這一漏洞經(jīng)常被黑客利用,對(duì)局域網(wǎng)的安全有效運(yùn)作產(chǎn)生巨大威脅。使用Java網(wǎng)絡(luò)和多線程編程模擬了局域網(wǎng)內(nèi)的ARP攻擊,實(shí)現(xiàn)了ARP攻擊的檢測(cè),介紹了幾種ARP攻擊的防范方法。
關(guān)鍵詞:ARP協(xié)議;ARP欺騙;攻擊檢測(cè);攻擊防范
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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)行帶來(lái)巨大隱患,是局域網(wǎng)安全的首要威脅[1]。
2 ARP協(xié)議概述
ARP協(xié)議工作在網(wǎng)絡(luò)層,它的作用就是要把網(wǎng)絡(luò)層使用的IP地址解析成數(shù)據(jù)鏈路層使用的硬件地址。以太網(wǎng)上的每一個(gè)設(shè)備都維持著一張最近IP地址到MAC地址的映射表,也叫ARP高速緩存[2]。
當(dāng)以太網(wǎng)上的一個(gè)網(wǎng)絡(luò)設(shè)備要和另一個(gè)設(shè)備進(jìn)行通信時(shí),會(huì)先查看自己的ARP緩存里是否存在目的IP地址和某個(gè)MAC地址的映射,如果有,就使用該條記錄,否則,該設(shè)備就會(huì)通過(guò)ARP協(xié)議來(lái)獲得目的MAC地址。其過(guò)程是:該設(shè)備會(huì)廣播ARP請(qǐng)求分組,局域網(wǎng)內(nèi)的每一個(gè)設(shè)備都會(huì)接收到該ARP請(qǐng)求報(bào)文。當(dāng)一個(gè)設(shè)備接收到一個(gè)ARP請(qǐng)求報(bào)文時(shí),它的做法是:1)先取出該報(bào)文的源IP地址和源MAC地址,看自己的ARP緩存中是否有這樣的映射,如果有的話,就更新該條記錄的計(jì)時(shí)器;如果沒(méi)有,就新增一條記錄。2)查看該報(bào)文的目標(biāo)IP地址是否就是自己的IP地址,如果是,就向報(bào)文的發(fā)送者單播一個(gè)ARP響應(yīng)報(bào)文;如果不是,就丟棄該報(bào)文。3)ARP請(qǐng)求報(bào)文的發(fā)送者在接收到ARP響應(yīng)報(bào)文時(shí),就把目標(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)答分組時(shí)不會(huì)檢測(cè)該報(bào)文的真實(shí)性就會(huì)將其加入或是更新本機(jī)ARP緩存[3-5]。由此攻擊者就可以向某一設(shè)備發(fā)送偽造的ARP應(yīng)答報(bào)文,來(lái)達(dá)到讓被攻擊對(duì)象發(fā)送的信息無(wú)法到達(dá)預(yù)期的設(shè)備或到達(dá)錯(cuò)誤的設(shè)備,這樣就構(gòu)成了一個(gè)ARP欺騙攻擊。
3.2 ARP攻擊模擬
3.2.1 攻擊模擬流程
ARP攻擊模擬的工作流程如圖1所示,描述如下:
(1) 手動(dòng)輸入要攻擊的兩個(gè)設(shè)備的IP地址。輸入IP地址后,會(huì)校驗(yàn)輸入的IP地址是否有效。
(2) 如果校驗(yàn)不通過(guò),則退到上一步。如果校驗(yàn)通過(guò),則進(jìn)行下一步。
(3) 判斷要攻擊的兩個(gè)對(duì)象和本機(jī)是否在同一個(gè)局域網(wǎng)。如果不是,則退到第一步。否則執(zhí)行下一步。
(4) 由多線程程序來(lái)解析兩個(gè)被攻擊的對(duì)象以太網(wǎng)地址。
(5) 由多線程程序來(lái)向兩個(gè)被攻擊對(duì)象持續(xù)發(fā)送偽造的ARP應(yīng)答分組,不斷刷新兩個(gè)被攻擊對(duì)象的ARP緩存。
(6) 由多線程程序來(lái)收發(fā)數(shù)據(jù)包。
3.2.2 攻擊模擬環(huán)境
程序編寫采用Java語(yǔ)言,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高速緩存中同一個(gè)硬件地址C8-FF-28-9B-7F-F2對(duì)應(yīng)了兩個(gè)不同的IP地址,而該硬件地址就是實(shí)施攻擊者的主機(jī)的硬件地址。因此,就可以得出結(jié)論,當(dāng)局域網(wǎng)內(nèi)發(fā)生了ARP攻擊的時(shí)候,被攻擊的對(duì)象的ARP高速緩存中必然會(huì)有多個(gè)不同的IP地址映射到同一個(gè)硬件地址,并且該硬件地址就是實(shí)施攻擊的主機(jī)的硬件地址。
4 ARP攻擊的檢測(cè)及防御
4.1 ARP攻擊的檢測(cè)
通過(guò)分析可知,要實(shí)現(xiàn)ARP欺騙,攻擊者必須持續(xù)發(fā)送偽造的ARP應(yīng)答分組,所以,當(dāng)檢測(cè)到局域網(wǎng)存在著大量的ARP應(yīng)答分組時(shí),就可以斷定,局域網(wǎng)內(nèi)必然發(fā)生了ARP攻擊。
由此,可以通過(guò)對(duì)整個(gè)局域網(wǎng)內(nèi)的數(shù)據(jù)包或者是經(jīng)由某個(gè)設(shè)備上的數(shù)據(jù)包進(jìn)行分析,檢測(cè)ARP攻擊。下面以主機(jī)為例進(jìn)行說(shuō)明。
1) 對(duì)經(jīng)由本機(jī)網(wǎng)卡的每一個(gè)數(shù)據(jù)包進(jìn)行分析。如果該數(shù)據(jù)包是本機(jī)發(fā)送的ARP請(qǐng)求分組,就把所請(qǐng)求的IP地址加入請(qǐng)求隊(duì)列之中。如果是發(fā)送給本機(jī)的ARP應(yīng)答分組,就檢查該應(yīng)答分組的發(fā)送端IP地址是否在請(qǐng)求隊(duì)列中,如果在,則該IP地址出隊(duì)列;否則,就說(shuō)明該應(yīng)答分組是一個(gè)偽造的ARP應(yīng)答分組,也能夠說(shuō)明本機(jī)受到了該ARP應(yīng)答分組發(fā)送者的攻擊。檢測(cè)效果如圖3所示。
2) 監(jiān)視本機(jī)的ARP高速緩存,一旦發(fā)現(xiàn)ARP高速緩存中出現(xiàn)了同一個(gè)MAC地址映射到多個(gè)IP地址的情況,就表名本機(jī)遭受到了ARP攻擊。檢測(cè)效果如圖4所示。
4.2 ARP攻擊的防御
ARP攻擊的實(shí)現(xiàn)依賴于設(shè)備對(duì)ARP應(yīng)答的無(wú)條件信任,從而通過(guò)發(fā)送偽造的ARP應(yīng)答來(lái)刷新被攻擊對(duì)象的ARP高速緩存。
從這一點(diǎn)上來(lái)看,可以從以下幾方面來(lái)防范局域網(wǎng)內(nèi)的ARP攻擊。
1) 設(shè)置靜態(tài)ARP緩存,實(shí)現(xiàn)IP地址和MAC地址的靜態(tài)綁定。由網(wǎng)絡(luò)管理員手動(dòng)輸入局域網(wǎng)內(nèi)設(shè)備上的ARP緩存記錄,設(shè)備就不再接收ARP分組,這樣就能完全避免ARP攻擊。這種方法雖然能夠起到很好的作用,但是有很多缺點(diǎn)[6]。一是局域網(wǎng)內(nèi)的每一個(gè)設(shè)備都需要手動(dòng)輸入,這樣很麻煩,容易出錯(cuò)。二是局域網(wǎng)內(nèi)的設(shè)備的IP地址并不是固定不變的,IP地址的每變化一次,就要重新輸入ARP緩存。
2) 設(shè)置ARP服務(wù)器。在局域網(wǎng)內(nèi)設(shè)置專用的ARP服務(wù)器,所有與地址解析相關(guān)的任務(wù)都交給ARP服務(wù)器來(lái)處理,設(shè)備不再接收非ARP服務(wù)器發(fā)送的ARP應(yīng)答分組;也不再對(duì)非來(lái)自ARP服務(wù)器的ARP請(qǐng)求分組進(jìn)行應(yīng)答[7]。這種方法效果比較好,缺點(diǎn)是不利于維護(hù),并且服務(wù)器也很容易被攻擊。
3) 拒收無(wú)請(qǐng)求型的應(yīng)答。設(shè)備只在自己發(fā)送了ARP請(qǐng)求的情況下才接受ARP應(yīng)答[8]。
4) 對(duì)局域網(wǎng)劃分VLAN或者增加VLAN的數(shù)量,減少VLAN中主機(jī)的數(shù)量。這種方法可以限制ARP廣播域的大小,縮小攻擊范圍,缺點(diǎn)是不利于維護(hù),也無(wú)法自動(dòng)適應(yīng)網(wǎng)絡(luò)的動(dòng)態(tài)變化。
5) 限制主機(jī)自主發(fā)送ARP應(yīng)答分組,只有在接收到ARP請(qǐng)求分組時(shí),才允許主機(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é)議容易被黑客用來(lái)進(jìn)行ARP欺騙攻擊,對(duì)局域網(wǎng)安全有效運(yùn)作產(chǎn)生巨大威脅和損害。本文闡述了ARP攻擊的原理,使用Java網(wǎng)絡(luò)和多線程編程模擬了局域網(wǎng)內(nèi)的ARP攻擊,實(shí)現(xiàn)了ARP攻擊的檢測(cè),介紹了幾種ARP攻擊的防范方法。相信在計(jì)算機(jī)安全領(lǐng)域備受重視的大環(huán)境下,這個(gè)長(zhǎng)期以來(lái)沒(méi)有得到很好解決的問(wèn)題一定會(huì)一步一步被徹底解決。
參考文獻(xiàn):
[1] 鄭先偉. CERNET應(yīng)急響應(yīng)組2007年5月報(bào)告 ARP欺騙是首要威脅[J]. 中國(guó)教育網(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].中國(guó)安全科學(xué)學(xué)報(bào),2007(7):126-131+179.
[4] 秦豐林,段海新,郭汝廷.ARP欺騙的監(jiān)測(cè)與防范技術(shù)綜述[J].計(jì)算機(jī)應(yīng)用研究,2009,26(01):30-33.
[5] 智陽(yáng)光,胡曦明,馬苗. 淺析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