◆趙菁
基于Arp欺騙的中間人攻擊及防范對策研究
◆趙菁
(北京信息職業技術學院 北京 100018)
本文以某單位多個用戶反映自己的密碼被盜為案例背景,在討論ARP欺騙原理的基礎上,搭建了仿真實驗環境,再現了基于ARP欺騙的中間人攻擊情景,使用Kali Linux中提供的典型arpspoof工具實現ARP攻擊,在攻擊過程中,利用Wireshark捕獲用戶賬號信息,并使用Wireshark的專家系統分析數據包,發現攻擊行為。最后本文給出針對該攻擊的防御方法。
ARP協議;ARP欺騙原理;中間人攻擊;arpspoof;Wireshark;防范對策
中間人攻擊是一個危險的攻擊,它可以劫持一段會話,即會話劫持,以竊取憑證和其他機密信息,即使使用了SSL加密。本文討論了中間人攻擊的相關理論,通過演示該攻擊的實現過程,說明該攻擊的危險性,并使用Wireshark分析判斷是否受到了ARP欺騙,并給出了針對該攻擊的防范對策,以幫助用戶的計算機免受基于ARP的中間人攻擊。
地址解析協議,即 ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。在每一臺計算機中都存在一個ARP緩存表,這個表動態地保存了一些IP地址和MAC地址的對應關系。當計算機接收到一個數據包后,就會通過ARP程序在這個表中查找包中IP地址所對應的表項,然后根據這個表項在數據包中再添加MAC地址。如果沒有在緩存表中查找到對應的表項,ARP程序就會在局域網中進行廣播,詢問網絡中是否存在這樣一個IP地址。如果局域網中有計算機使用了這個IP地址,那么它就會回應一個包含自己MAC地址的信息,這樣計算機就可以將這個信息添加到自己的ARP緩存中,并將這個數據包填寫好目的MAC地址發送輸出,這就是ARP協議的工作過程。
ARP協議簡單高效,但是這個協議存在一個重大的缺陷,即在ARP協議的工作過程中并沒有任何的認證機制,也就是說如果一臺主機收到ARP請求數據包,并沒有對這個數據包進行任何真偽的判斷,都會將其添加到ARP表中。因此黑客就可能會利用這個漏洞來冒充網關等主機,導致目標計算機與網關通信失敗,更會導致通信重定向,所有的數據都會通過攻擊者的機器,因此存在極大的安全隱患。這樣就可以實現中間人攻擊。
案例背景為某單位多個用戶反映自己的密碼被盜,這些被盜的密碼屬于多種不同的應用,其中既包括購物網站,也有電子郵箱,甚至還有該單位用于上傳下載文件的FTP。考慮到受害的用戶數量眾多,而且這些密碼又都分屬于不同的應用,所以被釣魚網站欺騙的可能性較小。初步認為是網絡內部遭到了中間人攻擊造成的。
為了演示基于ARP欺騙的中間人攻擊,搭建的網絡拓撲包括3臺主機,其中包括攻擊機、目標機和網關。攻擊機為Kali Linux主機,其網絡配置是IP地址:192.168.1.2,硬件地址:00:0c:29:e6:37:94。目標主機為Win7主機,其網絡配置是IP地址:192.168.1.3,硬件地址:00-0C-29-72-05-D6。服務器為Windows Server 2003主機,在其上搭建了ftp服務器,賬戶為:test,密碼為123456。其網絡配置是IP地址:192.168.1.4,硬件地址:00-0C-29-62-52-CC。本次欺騙中實現了對目標主機與FTP服務器通信的監聽。
在正常情況下,目標主機的ARP表示正確的,如果目標主機最近曾訪問過FTP服務器,查看其ARP緩存表將看到FTP服務器的IP地址與其物理地址的映射條目信息。現在只需要將目標主機的ARP表中的FTP服務器地址表項修改了即可。修改的方法很簡單,在Kali Linux中提供了很多可以實現網絡欺騙的工具,其中最為典型的arpspoof就可以實現arp欺騙。這個工具的使用格式是:arpspoof [-i指定使用的網卡] [-t要欺騙的目標主機] [-r]要偽裝成的主機,現在使用該工具完成一次網絡欺騙:arpspoof -ieth0 –t 192.168.1.3 –r 192.168.1.2。現在arpspoof完成了對目標主機的欺騙任務,可以截獲到目標主機發往FTP服務器的數據包。這時arpspoof只是截獲數據包,不能查看數據包,現在需要使用Kali Linux中的Wireshark來查看由目標機發送的數據包。從圖1中可以看到捕獲到的登錄FTP服務器的用戶名和密碼分別為test和123456。
Wireshark的專家系統是Wireshark在捕獲文件中發現的異常的一種日志。利用專家系統可以更好地顯示“罕見”或僅是值得注意的網絡行為。與“手動”掃描數據包列表相比,新手和專家用戶都能更快地找到可能的網絡問題。這里給出一個專家信息條目的示例如圖所示。其中,Severity表示專家信息的嚴重性級別,如Chat、Note、Warn和Error,每種級別代表不同的嚴重程度,例如Warn(黃色)表示警告信息,當應用程序返回“異常”錯誤代碼,或連接問題時會出現相應的提示信息;Group表示一些常見的專家信息組,如Checksum,Sequence,Response Code等,圖2中所示的Sequence提示協議序列可疑,例如序列不連續或檢測到重傳或其他問題;Protocol表示引起專家信息的協議;Summary是每個專家信息給出的一個簡短的附加文本,其中包含一些進一步的說明。

圖1 Wireshark捕獲到的用戶名和密碼

圖2 專家信息示例
專家信息目前主要用來解決TCP的通信故障問題,在今后的版本中,Wireshark可能會擴展專家系統的功能。雖然專家系統十分有用,但在實際工作中我們不能過度地依賴它,往往還需要進一步驗證,因為缺少專家信息并不一定意味著一切正常。
下面使用專家系統分析上面的中間人攻擊。從捕獲的數據包可以發現大量的ARP數據包,而在ARP的工作流程中,通常一個主機在建立一個連接時,只需要發送一個ARP請求,收到一個ARP應答。即表示只需要兩個ARP 數據包就可以完成。如果同時出現了大量的ARP數據包,通常是由以下3種情況造成的。一是有攻擊者在利用ARP請求對網絡主機進行掃描;二是有計算機感染了ARP病毒并在破壞網絡的通信;最后是有攻擊者在利用ARP欺騙發動中間人攻擊。從案例背景中用戶反映看,顯然是有攻擊者在利用ARP欺騙在發動中間人攻擊的可能性最大。圖3是Wireshark專家系統窗口警告的數據包。專家系統提示現在192.168.1.3和192.168.1.4所對應的硬件地址是相同的,都是00:0c:29:e6:37:94。在數據包列表面板處也可以看到同樣的情形。
防御ARP欺騙的方法很多,本文介紹3種比較典型的方法。
(1)靜態綁定ARP表項
由于中間人攻擊時通常通過篡改網關的地址發起的,所以將其IP地址和MAC地址進行綁定。綁定的命令是:arp –s 網關的IP地址網關的mac地址。

圖3 專家系統窗口警告的數據包
另外,交換機上也提供了端口安全機制,可以將端口和設備的MAC地址進行綁定。不過這個方法并不適合大型網絡,因為配置的工作量過大。
(2)使用DHCP Snooping功能
DHCP 監聽(DHCP Snooping)是一種DHCP安全特性。當交換機開啟了DHCP Snooping后,會對DHCP報文進行偵聽,并可以從接收到的DHCP Request或DHCP Ack報文中提取并記錄IP地址和MAC地址信息。然后利用這些信息建立和維護一張DHCP Snooping的綁定表,這張表包含了可信任的IP和MAC地址的對應關系。結合 DAI(Dynamic ARP Inspection)可實現ARP防欺騙。
(3)劃分VLAN
通過VLAN技術可以在局域網中建立多個子網,這樣就限制了攻擊者的攻擊范圍。
發現基于ARP的中間人攻擊其實是很容易識別的,受害主機可以使用ARP命令查看ARP緩存,從而發現是否存在異常。還可以設置ARP緩存表為靜態,即對每臺主機進行IP和MAC地址靜態綁定,這個狀態下是不會在接收到ARP包時改變本地緩存的,從而有效地防止ARP攻擊,但不推薦。因為在一個大型的網絡中,它要花費很長的時間手動設置,這是不可能的。
除了上述方法,還有很多工具可以用來幫助用戶判斷是否受到了ARP欺騙,而且有幾種工具是可用的,它可以保護用戶的計算機免受該攻擊并且檢測出ARP緩存表的變更,一些比較出名的工具包括ARPon、ARP Wath和XARP。
ARP欺騙技術是實現中間人攻擊的基礎,ARP欺騙是一種非常危險的攻擊,攻擊者可以很容易探取受害者主機證書和其他機密信息。本文演示了一次基于ARP欺騙的中間人攻擊,并在Wireshark的幫助下對ARP欺騙進行了深入的分析。最后給出了防御該攻擊的方法。
[1]張小林,羅漢云.基于KALI 2.0的Ettercap工具實現中間人攻擊實驗綜述報告[J].電腦知識與技術,2020.
[2]潘家富. ARP攻擊的原理分析及防范對策研究[J]. 軟件工程,2019.