◆趙菁
基于Arp欺騙的中間人攻擊及防范對策研究
◆趙菁
(北京信息職業(yè)技術(shù)學(xué)院 北京 100018)
本文以某單位多個(gè)用戶反映自己的密碼被盜為案例背景,在討論ARP欺騙原理的基礎(chǔ)上,搭建了仿真實(shí)驗(yàn)環(huán)境,再現(xiàn)了基于ARP欺騙的中間人攻擊情景,使用Kali Linux中提供的典型arpspoof工具實(shí)現(xiàn)ARP攻擊,在攻擊過程中,利用Wireshark捕獲用戶賬號信息,并使用Wireshark的專家系統(tǒng)分析數(shù)據(jù)包,發(fā)現(xiàn)攻擊行為。最后本文給出針對該攻擊的防御方法。
ARP協(xié)議;ARP欺騙原理;中間人攻擊;arpspoof;Wireshark;防范對策
中間人攻擊是一個(gè)危險(xiǎn)的攻擊,它可以劫持一段會(huì)話,即會(huì)話劫持,以竊取憑證和其他機(jī)密信息,即使使用了SSL加密。本文討論了中間人攻擊的相關(guān)理論,通過演示該攻擊的實(shí)現(xiàn)過程,說明該攻擊的危險(xiǎn)性,并使用Wireshark分析判斷是否受到了ARP欺騙,并給出了針對該攻擊的防范對策,以幫助用戶的計(jì)算機(jī)免受基于ARP的中間人攻擊。
地址解析協(xié)議,即 ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個(gè)TCP/IP協(xié)議。在每一臺計(jì)算機(jī)中都存在一個(gè)ARP緩存表,這個(gè)表動(dòng)態(tài)地保存了一些IP地址和MAC地址的對應(yīng)關(guān)系。當(dāng)計(jì)算機(jī)接收到一個(gè)數(shù)據(jù)包后,就會(huì)通過ARP程序在這個(gè)表中查找包中IP地址所對應(yīng)的表項(xiàng),然后根據(jù)這個(gè)表項(xiàng)在數(shù)據(jù)包中再添加MAC地址。如果沒有在緩存表中查找到對應(yīng)的表項(xiàng),ARP程序就會(huì)在局域網(wǎng)中進(jìn)行廣播,詢問網(wǎng)絡(luò)中是否存在這樣一個(gè)IP地址。如果局域網(wǎng)中有計(jì)算機(jī)使用了這個(gè)IP地址,那么它就會(huì)回應(yīng)一個(gè)包含自己MAC地址的信息,這樣計(jì)算機(jī)就可以將這個(gè)信息添加到自己的ARP緩存中,并將這個(gè)數(shù)據(jù)包填寫好目的MAC地址發(fā)送輸出,這就是ARP協(xié)議的工作過程。
ARP協(xié)議簡單高效,但是這個(gè)協(xié)議存在一個(gè)重大的缺陷,即在ARP協(xié)議的工作過程中并沒有任何的認(rèn)證機(jī)制,也就是說如果一臺主機(jī)收到ARP請求數(shù)據(jù)包,并沒有對這個(gè)數(shù)據(jù)包進(jìn)行任何真?zhèn)蔚呐袛?,都?huì)將其添加到ARP表中。因此黑客就可能會(huì)利用這個(gè)漏洞來冒充網(wǎng)關(guān)等主機(jī),導(dǎo)致目標(biāo)計(jì)算機(jī)與網(wǎng)關(guān)通信失敗,更會(huì)導(dǎo)致通信重定向,所有的數(shù)據(jù)都會(huì)通過攻擊者的機(jī)器,因此存在極大的安全隱患。這樣就可以實(shí)現(xiàn)中間人攻擊。
案例背景為某單位多個(gè)用戶反映自己的密碼被盜,這些被盜的密碼屬于多種不同的應(yīng)用,其中既包括購物網(wǎng)站,也有電子郵箱,甚至還有該單位用于上傳下載文件的FTP??紤]到受害的用戶數(shù)量眾多,而且這些密碼又都分屬于不同的應(yīng)用,所以被釣魚網(wǎng)站欺騙的可能性較小。初步認(rèn)為是網(wǎng)絡(luò)內(nèi)部遭到了中間人攻擊造成的。
為了演示基于ARP欺騙的中間人攻擊,搭建的網(wǎng)絡(luò)拓?fù)浒?臺主機(jī),其中包括攻擊機(jī)、目標(biāo)機(jī)和網(wǎng)關(guān)。攻擊機(jī)為Kali Linux主機(jī),其網(wǎng)絡(luò)配置是IP地址:192.168.1.2,硬件地址:00:0c:29:e6:37:94。目標(biāo)主機(jī)為Win7主機(jī),其網(wǎng)絡(luò)配置是IP地址:192.168.1.3,硬件地址:00-0C-29-72-05-D6。服務(wù)器為Windows Server 2003主機(jī),在其上搭建了ftp服務(wù)器,賬戶為:test,密碼為123456。其網(wǎng)絡(luò)配置是IP地址:192.168.1.4,硬件地址:00-0C-29-62-52-CC。本次欺騙中實(shí)現(xiàn)了對目標(biāo)主機(jī)與FTP服務(wù)器通信的監(jiān)聽。
在正常情況下,目標(biāo)主機(jī)的ARP表示正確的,如果目標(biāo)主機(jī)最近曾訪問過FTP服務(wù)器,查看其ARP緩存表將看到FTP服務(wù)器的IP地址與其物理地址的映射條目信息。現(xiàn)在只需要將目標(biāo)主機(jī)的ARP表中的FTP服務(wù)器地址表項(xiàng)修改了即可。修改的方法很簡單,在Kali Linux中提供了很多可以實(shí)現(xiàn)網(wǎng)絡(luò)欺騙的工具,其中最為典型的arpspoof就可以實(shí)現(xiàn)arp欺騙。這個(gè)工具的使用格式是:arpspoof [-i指定使用的網(wǎng)卡] [-t要欺騙的目標(biāo)主機(jī)] [-r]要偽裝成的主機(jī),現(xiàn)在使用該工具完成一次網(wǎng)絡(luò)欺騙:arpspoof -ieth0 –t 192.168.1.3 –r 192.168.1.2?,F(xiàn)在arpspoof完成了對目標(biāo)主機(jī)的欺騙任務(wù),可以截獲到目標(biāo)主機(jī)發(fā)往FTP服務(wù)器的數(shù)據(jù)包。這時(shí)arpspoof只是截獲數(shù)據(jù)包,不能查看數(shù)據(jù)包,現(xiàn)在需要使用Kali Linux中的Wireshark來查看由目標(biāo)機(jī)發(fā)送的數(shù)據(jù)包。從圖1中可以看到捕獲到的登錄FTP服務(wù)器的用戶名和密碼分別為test和123456。
Wireshark的專家系統(tǒng)是Wireshark在捕獲文件中發(fā)現(xiàn)的異常的一種日志。利用專家系統(tǒng)可以更好地顯示“罕見”或僅是值得注意的網(wǎng)絡(luò)行為。與“手動(dòng)”掃描數(shù)據(jù)包列表相比,新手和專家用戶都能更快地找到可能的網(wǎng)絡(luò)問題。這里給出一個(gè)專家信息條目的示例如圖所示。其中,Severity表示專家信息的嚴(yán)重性級別,如Chat、Note、Warn和Error,每種級別代表不同的嚴(yán)重程度,例如Warn(黃色)表示警告信息,當(dāng)應(yīng)用程序返回“異?!卞e(cuò)誤代碼,或連接問題時(shí)會(huì)出現(xiàn)相應(yīng)的提示信息;Group表示一些常見的專家信息組,如Checksum,Sequence,Response Code等,圖2中所示的Sequence提示協(xié)議序列可疑,例如序列不連續(xù)或檢測到重傳或其他問題;Protocol表示引起專家信息的協(xié)議;Summary是每個(gè)專家信息給出的一個(gè)簡短的附加文本,其中包含一些進(jìn)一步的說明。
圖1 Wireshark捕獲到的用戶名和密碼
圖2 專家信息示例
專家信息目前主要用來解決TCP的通信故障問題,在今后的版本中,Wireshark可能會(huì)擴(kuò)展專家系統(tǒng)的功能。雖然專家系統(tǒng)十分有用,但在實(shí)際工作中我們不能過度地依賴它,往往還需要進(jìn)一步驗(yàn)證,因?yàn)槿鄙賹<倚畔⒉⒉灰欢ㄒ馕吨磺姓!?/p>
下面使用專家系統(tǒng)分析上面的中間人攻擊。從捕獲的數(shù)據(jù)包可以發(fā)現(xiàn)大量的ARP數(shù)據(jù)包,而在ARP的工作流程中,通常一個(gè)主機(jī)在建立一個(gè)連接時(shí),只需要發(fā)送一個(gè)ARP請求,收到一個(gè)ARP應(yīng)答。即表示只需要兩個(gè)ARP 數(shù)據(jù)包就可以完成。如果同時(shí)出現(xiàn)了大量的ARP數(shù)據(jù)包,通常是由以下3種情況造成的。一是有攻擊者在利用ARP請求對網(wǎng)絡(luò)主機(jī)進(jìn)行掃描;二是有計(jì)算機(jī)感染了ARP病毒并在破壞網(wǎng)絡(luò)的通信;最后是有攻擊者在利用ARP欺騙發(fā)動(dòng)中間人攻擊。從案例背景中用戶反映看,顯然是有攻擊者在利用ARP欺騙在發(fā)動(dòng)中間人攻擊的可能性最大。圖3是Wireshark專家系統(tǒng)窗口警告的數(shù)據(jù)包。專家系統(tǒng)提示現(xiàn)在192.168.1.3和192.168.1.4所對應(yīng)的硬件地址是相同的,都是00:0c:29:e6:37:94。在數(shù)據(jù)包列表面板處也可以看到同樣的情形。
防御ARP欺騙的方法很多,本文介紹3種比較典型的方法。
(1)靜態(tài)綁定ARP表項(xiàng)
由于中間人攻擊時(shí)通常通過篡改網(wǎng)關(guān)的地址發(fā)起的,所以將其IP地址和MAC地址進(jìn)行綁定。綁定的命令是:arp –s 網(wǎng)關(guān)的IP地址網(wǎng)關(guān)的mac地址。
圖3 專家系統(tǒng)窗口警告的數(shù)據(jù)包
另外,交換機(jī)上也提供了端口安全機(jī)制,可以將端口和設(shè)備的MAC地址進(jìn)行綁定。不過這個(gè)方法并不適合大型網(wǎng)絡(luò),因?yàn)榕渲玫墓ぷ髁窟^大。
(2)使用DHCP Snooping功能
DHCP 監(jiān)聽(DHCP Snooping)是一種DHCP安全特性。當(dāng)交換機(jī)開啟了DHCP Snooping后,會(huì)對DHCP報(bào)文進(jìn)行偵聽,并可以從接收到的DHCP Request或DHCP Ack報(bào)文中提取并記錄IP地址和MAC地址信息。然后利用這些信息建立和維護(hù)一張DHCP Snooping的綁定表,這張表包含了可信任的IP和MAC地址的對應(yīng)關(guān)系。結(jié)合 DAI(Dynamic ARP Inspection)可實(shí)現(xiàn)ARP防欺騙。
(3)劃分VLAN
通過VLAN技術(shù)可以在局域網(wǎng)中建立多個(gè)子網(wǎng),這樣就限制了攻擊者的攻擊范圍。
發(fā)現(xiàn)基于ARP的中間人攻擊其實(shí)是很容易識別的,受害主機(jī)可以使用ARP命令查看ARP緩存,從而發(fā)現(xiàn)是否存在異常。還可以設(shè)置ARP緩存表為靜態(tài),即對每臺主機(jī)進(jìn)行IP和MAC地址靜態(tài)綁定,這個(gè)狀態(tài)下是不會(huì)在接收到ARP包時(shí)改變本地緩存的,從而有效地防止ARP攻擊,但不推薦。因?yàn)樵谝粋€(gè)大型的網(wǎng)絡(luò)中,它要花費(fèi)很長的時(shí)間手動(dòng)設(shè)置,這是不可能的。
除了上述方法,還有很多工具可以用來幫助用戶判斷是否受到了ARP欺騙,而且有幾種工具是可用的,它可以保護(hù)用戶的計(jì)算機(jī)免受該攻擊并且檢測出ARP緩存表的變更,一些比較出名的工具包括ARPon、ARP Wath和XARP。
ARP欺騙技術(shù)是實(shí)現(xiàn)中間人攻擊的基礎(chǔ),ARP欺騙是一種非常危險(xiǎn)的攻擊,攻擊者可以很容易探取受害者主機(jī)證書和其他機(jī)密信息。本文演示了一次基于ARP欺騙的中間人攻擊,并在Wireshark的幫助下對ARP欺騙進(jìn)行了深入的分析。最后給出了防御該攻擊的方法。
[1]張小林,羅漢云.基于KALI 2.0的Ettercap工具實(shí)現(xiàn)中間人攻擊實(shí)驗(yàn)綜述報(bào)告[J].電腦知識與技術(shù),2020.
[2]潘家富. ARP攻擊的原理分析及防范對策研究[J]. 軟件工程,2019.