仇虹 施俊宇 涂秋月
摘要:地址解析協(xié)議(ARP)攻擊是局域網(wǎng)內(nèi)較常見的網(wǎng)絡(luò)攻擊事件,ARP攻擊可能導(dǎo)致網(wǎng)絡(luò)故障或信息泄露,一旦網(wǎng)絡(luò)中出現(xiàn)了ARP攻擊事件,網(wǎng)絡(luò)運(yùn)維人員需花費(fèi)大量的時(shí)間和精力處理。針對(duì)常見的ARP攻擊事件,對(duì)ARP工作原理進(jìn)行了介紹,使用eNSP模擬了局域網(wǎng)環(huán)境,用Scapy構(gòu)建ARP報(bào)文并實(shí)現(xiàn)了ARP欺騙攻擊和泛洪攻擊,結(jié)合網(wǎng)絡(luò)運(yùn)維經(jīng)驗(yàn)梳理了常用ARP攻擊的防范手段。
關(guān)鍵詞:地址解析協(xié)議;Scapy;欺騙攻擊;泛洪攻擊
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2021)01-56-4
0引言
互聯(lián)網(wǎng)使用了TCP/IP協(xié)議,在設(shè)計(jì)之初主要考慮的是互通性和開放性,未重視安全性,使得TCP/IP協(xié)議族中部分協(xié)議有漏洞。ARP是TCP/IP中網(wǎng)絡(luò)層的重要協(xié)議,是連接硬件和網(wǎng)絡(luò)的橋梁[1]。ARP建立在局域網(wǎng)主機(jī)相互信任的基礎(chǔ)上,設(shè)計(jì)初衷是方便進(jìn)行數(shù)據(jù)的傳輸、提高效率,并沒有安全驗(yàn)證手段,為病毒或黑客實(shí)施ARP攻擊提供了可乘之機(jī)。ARP攻擊是局域網(wǎng)中最常見的攻擊方式之一,ARP欺騙攻擊和泛洪攻擊是常見的攻擊方式,對(duì)網(wǎng)絡(luò)安全構(gòu)成嚴(yán)重威脅。
1 ARP工作原理
在網(wǎng)絡(luò)的數(shù)據(jù)鏈路層只能看見MAC幀,鏈路層以上的數(shù)據(jù)都被封裝在MAC幀中,MAC幀包含源MAC地址和目的MAC地址,在實(shí)際局域網(wǎng)絡(luò)中傳送數(shù)據(jù)時(shí),根據(jù)MAC地址尋找目的主機(jī)。已知一臺(tái)主機(jī)的IP地址,要發(fā)送數(shù)據(jù)時(shí)需要找到對(duì)方的MAC地址,這時(shí)就需要用到ARP。
ARP負(fù)責(zé)將網(wǎng)絡(luò)層中的IP地址解析為鏈路層的MAC地址。ARP報(bào)文封裝在MAC幀中,ARP報(bào)文格式如圖1所示,總長度為28 Byte[2]。
每臺(tái)主機(jī)都有一個(gè)ARP高速緩存,保存著本局域網(wǎng)內(nèi)已知主機(jī)和路由器的IP地址和MAC地址映射表,這些映射關(guān)系可更新且有生存周期。當(dāng)一臺(tái)主機(jī)發(fā)送數(shù)據(jù)時(shí),若目標(biāo)主機(jī)的MAC地址在ARP緩存表中不存在,會(huì)將包含目標(biāo)IP地址信息的ARP請(qǐng)求廣播給網(wǎng)絡(luò)中的所有主機(jī),接收返回消息以確定目標(biāo)IP地址的物理地址。收到返回消息后將該IP地址和MAC地址存入本機(jī)ARP緩存中并保留一定時(shí)間,以便下次請(qǐng)求時(shí)直接查詢ARP緩存。
但ARP建立在網(wǎng)絡(luò)中主機(jī)完全信任的基礎(chǔ)上,有嚴(yán)重的安全缺陷。ARP地址轉(zhuǎn)換表依賴于計(jì)算機(jī)中高速緩沖存儲(chǔ)器動(dòng)態(tài)更新,高速緩沖存儲(chǔ)器更新受到更新周期限制,只保存最近使用地址的映射關(guān)系。局域網(wǎng)上的主機(jī)可以自主發(fā)送ARP應(yīng)答消息,其他主機(jī)收到應(yīng)答報(bào)文時(shí)不會(huì)檢測(cè)該報(bào)文的真實(shí)性就會(huì)將其記入本機(jī)ARP緩存。攻擊者若發(fā)送偽造的ARP Request報(bào)文或ARP Reply報(bào)文,便可能會(huì)造成網(wǎng)絡(luò)通道阻塞、網(wǎng)絡(luò)設(shè)備的承載過重以及網(wǎng)絡(luò)的通信質(zhì)量不佳等情況[3]。
2構(gòu)建局域網(wǎng)環(huán)境
在實(shí)際環(huán)境中實(shí)施ARP攻擊的可能是非法接入的主機(jī)、中木馬病毒的合法主機(jī)或遠(yuǎn)程入侵的黑客等。使用eNSP軟件模擬局域網(wǎng)環(huán)境,如圖2所示,物理機(jī)通過Cloud1對(duì)局域網(wǎng)實(shí)施ARP攻擊,在拓?fù)鋱D中標(biāo)為PCA。PC1,PC2,PC3,PCA處于同一局域網(wǎng),通過路由器R2連接外網(wǎng),PC4是外網(wǎng)的主機(jī),各主機(jī)IP及MAC地址如表1所示。
3 ARP攻擊的實(shí)現(xiàn)
3.1掃描局域網(wǎng)內(nèi)在線的主機(jī)
攻擊者在攻擊前一般需要探測(cè)網(wǎng)絡(luò)環(huán)境,發(fā)現(xiàn)所有在線的主機(jī)。首先攻擊主機(jī)向整個(gè)網(wǎng)絡(luò)發(fā)送ARP數(shù)據(jù)包,收到 ARP廣播的主機(jī)自動(dòng)回復(fù)ARP Reply數(shù)據(jù)包,攻擊主機(jī)根據(jù)收到的ARP回復(fù)包可判斷出局域網(wǎng)內(nèi)存活主機(jī)的情況。
使用Python調(diào)用Scapy可方便構(gòu)造ARP數(shù)據(jù)包,2層地址設(shè)為廣播地址,3層地址設(shè)為網(wǎng)絡(luò)地址,即整個(gè)局域網(wǎng)段,變量為設(shè)置的ARP數(shù)據(jù)包[4]:
使用srp()函數(shù)發(fā)送ARP數(shù)據(jù)包,收到ARP回復(fù)包存入
變量。, unreplay=srp( , iface=wifi, timeout=5)。掃描結(jié)果如圖3所示。掃描結(jié)果中的192.168.24.254是網(wǎng)關(guān)地址,其余4個(gè)均是主機(jī)的地址,掃描結(jié)果與表1內(nèi)容一致。
3.2偽造ARP request報(bào)文欺騙主機(jī)
PC1要訪問PC3,會(huì)先廣播一個(gè)ARP請(qǐng)求報(bào)文,PC3收到后會(huì)返回一個(gè)ARP回復(fù)報(bào)文。若PCA發(fā)送的ARP Request報(bào)文以PC1的IP為源IP地址、PC3的IP為目標(biāo)IP地址,PC3收到后就會(huì)更新其ARP緩存表,將PC1的IP和PCA的MAC地址寫入緩存表,使得PC3發(fā)給PC1的數(shù)據(jù)都會(huì)發(fā)給PCA,從而達(dá)到欺騙的目的。
實(shí)施攻擊前查看PC3的ARP緩存表,如圖4所示,此時(shí)PC1與PC3是能正常通信的。
此時(shí)PC3的ARP緩存表已發(fā)生了變化,192.168.24.3(PC1)對(duì)應(yīng)的MAC地址變成PCA的MAC地址。PC3發(fā)往PC1的數(shù)據(jù)實(shí)際上都發(fā)給了PCA,PC3與PC1已不能正常通信。
使用Wireshark抓包,如圖6所示,發(fā)現(xiàn)PC3發(fā)往PC1的ICMP數(shù)據(jù)的目的MAC地址為PCA的地址,PC3發(fā)給PC1的數(shù)據(jù)實(shí)際上全發(fā)給了PCA,使得PC3無法和PC1正常通信。
PC4為外網(wǎng)計(jì)算機(jī),IP地址為192.168.10.2,正常情況下PC1可以訪問PC4,此時(shí)ARP緩存表里的網(wǎng)關(guān)MAC地址是正常的,如圖7所示。
發(fā)送下面的ARP Request包,PC1的ARP緩存表中網(wǎng)關(guān)的MAC地址被改成了PCA的MAC地址,如圖8所示。被攻擊后,PC1不能訪問外網(wǎng),PC1發(fā)往網(wǎng)關(guān)的數(shù)據(jù)包實(shí)際上發(fā)給了PCA。
Ether (dst=54:89:98:F5:18:FF,src=00:50:56:c0:00:01)/ARP(psrc=192.168.24.254,pdst=192.168.24.3,op=1)。
3.3偽造ARP Reply報(bào)文欺騙網(wǎng)關(guān)
PCA通過發(fā)送偽造的ARP Reply報(bào)文可更改網(wǎng)關(guān)的ARP緩存表,從而達(dá)到欺騙網(wǎng)關(guān)的目的。構(gòu)建ARP數(shù)據(jù)包:=Ether(dst=54:89:98:03:27:7B,src=00:50:56:c0:00:01)/ARP (psrc=192. 168.24.3,pdst=192.168.24.254, op=2)。
psrc設(shè)為PC1的IP, pdst為網(wǎng)關(guān)IP, dst為網(wǎng)關(guān)MAC地址,src為PCA的MAC地址,op設(shè)為2表示ARP回復(fù)報(bào)文。發(fā)送該數(shù)據(jù)包,R2的G0/0/0口(即網(wǎng)關(guān))收到ARP Reply報(bào)文后會(huì)更改其ARP緩存表,如圖9所示。
網(wǎng)關(guān)被欺騙后,使用Wireshark軟件抓包分析可知,PC1發(fā)送出去的數(shù)據(jù)包是正常的,但外網(wǎng)經(jīng)網(wǎng)關(guān)發(fā)給PC1的數(shù)據(jù)的MAC地址被改為了PCA的MAC地址,也就是說PC1請(qǐng)求的數(shù)據(jù)均被發(fā)給了PCA,如圖10和圖11所示。
3.4 ARP泛洪攻擊
通過向網(wǎng)關(guān)發(fā)送大量ARP報(bào)文,會(huì)導(dǎo)致主機(jī)和網(wǎng)關(guān)的ARP緩存中正常表項(xiàng)被覆蓋或緩存表被寫滿,導(dǎo)致用戶無法上網(wǎng)、網(wǎng)關(guān)也無法正常響應(yīng)。持續(xù)發(fā)送大量虛假的ARP Request報(bào)文,會(huì)覆蓋用戶主機(jī)正常的ARP表項(xiàng),在主機(jī)查看ARP緩存表如圖12所示。
持續(xù)發(fā)送ARP Reply報(bào)文,會(huì)覆蓋住R2的ARP緩存表,如圖13所示。導(dǎo)致網(wǎng)關(guān)ARP表項(xiàng)被占滿,合法用戶的ARP表項(xiàng)無法正常學(xué)習(xí),導(dǎo)致合法用戶無法正常訪問外網(wǎng)。
在ARP攻擊前,R2的CPU使用率為6%,在ARP攻擊期間,CPU使用率急劇上升,LSW1的CPU使用率變?yōu)?3%,R2的CPU使用率變?yōu)?6%,顯然ARP泛洪攻擊給網(wǎng)絡(luò)設(shè)備造成了沉重負(fù)擔(dān),如圖14和圖15所示。
4 ARP攻擊的防范措施
4.1設(shè)置靜態(tài)ARP地址綁定
在每個(gè)用戶主機(jī)上采用IP地址和物理地址靜態(tài)綁定的方法,可固定IP地址和MAC地址的對(duì)應(yīng)關(guān)系。在PC1上運(yùn)行命令“ARPs 192.168.24.3 54-89-98-F5-18-FF”[5],IP地址和MAC地址的對(duì)應(yīng)關(guān)系會(huì)固定寫入ARP緩存中,系統(tǒng)不會(huì)自動(dòng)清空。使用Scapy再發(fā)送偽造的ARP包時(shí),PC1中靜態(tài)ARP緩存表不會(huì)被覆蓋或改寫,可有效保護(hù)主機(jī)抵御ARP欺騙攻擊。
4.2交換機(jī)上設(shè)置端口綁定
在交換機(jī)中的配置命令:[Huawei]user-bind static ip-address 192.168.24.3 mac-address 5489-98f5-18FF interface G0/0/1,允許PC1通過交換機(jī)的G0/0/1口發(fā)出數(shù)據(jù),若PCA的地址和端口在交換機(jī)中沒有綁定,PCA發(fā)出的數(shù)據(jù)會(huì)被交換機(jī)丟棄,使得PCA發(fā)出的偽造的ARP數(shù)據(jù)不能影響局域網(wǎng)。在交換機(jī)上設(shè)定地址、端口綁定,可防止非法用戶接入網(wǎng),因其IP與MAC地址與綁定不符而被丟棄,即使冒用了合法用戶的IP和MAC地址,發(fā)到交換機(jī)的數(shù)據(jù)也會(huì)因接口不匹配不被轉(zhuǎn)發(fā)。交換機(jī)上設(shè)定地址、端口綁定,在安全性要求較高的部門有廣泛的應(yīng)用。但該方法的缺點(diǎn)也十分明顯,會(huì)使網(wǎng)絡(luò)靈活性較差,新增主機(jī)及主機(jī)更換位置、更改IP地址都需要重新配置交換機(jī),會(huì)給網(wǎng)絡(luò)維護(hù)人員帶來較重的負(fù)擔(dān)。
4.3使用ARP防護(hù)工具
使用ARP防火墻也可以保護(hù)主機(jī)免受ARP攻擊。當(dāng)主機(jī)中出現(xiàn)ARP病毒或遭受ARP攻擊時(shí)會(huì)提示用戶,并能顯示攻擊者的MAC地址。使用ARP防火墻,可有效阻止ARP攻擊,對(duì)外來ARP攻擊提供有效保護(hù)的同時(shí),還能阻止局域網(wǎng)內(nèi)的ARP攻擊對(duì)外造成威脅[6]。
5結(jié)束語
由于IPv4網(wǎng)絡(luò)中ARP協(xié)議存在漏洞,使得ARP攻擊成為常見的網(wǎng)絡(luò)安全事件,ARP欺騙攻擊和泛洪攻擊都是局域網(wǎng)內(nèi)常見的攻擊方式,ARP欺騙攻擊可造成用戶數(shù)據(jù)的泄露,ARP泛洪攻擊容易引起網(wǎng)絡(luò)故障。作為網(wǎng)絡(luò)運(yùn)維人員需熟練掌握ARP工作機(jī)制、對(duì)常見的ARP攻擊方式要有深刻的認(rèn)識(shí),在出現(xiàn)ARP攻擊事件時(shí)能夠快速找到攻擊源并阻斷攻擊,盡量降低ARP攻擊對(duì)網(wǎng)絡(luò)的影響。網(wǎng)絡(luò)維護(hù)人員還需通過合理的防范措施,預(yù)防ARP攻擊事件的發(fā)生。
參考文獻(xiàn)
[1]邊浩江.ARP欺騙的偵測(cè)及防御方法的研究與實(shí)現(xiàn)[D].昆明:昆明理工大學(xué),2015.
[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò):第6版[M].北京:電子工業(yè)出版社, 2013.
[3]郭會(huì)茹,楊斌,牛立全.ARP攻擊原理分析及其安全防范措施[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(6):5-6.
[4]李兆斌,茅方毅,王瑤君,等.Scapy在網(wǎng)絡(luò)設(shè)備安全性測(cè)試中的應(yīng)用[J].北京電子科技學(xué)院學(xué)報(bào),2016,24(4):73-77.
[5]黃學(xué)毛.論局域網(wǎng)中ARP攻擊及防范措施[J].電腦知識(shí)與技術(shù),2016(2),31-32.
[6]崔婷.局域網(wǎng)中ARP的攻擊及防范措施[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(5):26-27.