◆殷松瑜
(江蘇商貿職業學院電子信息學院 江蘇 226011)
在研究網絡協議時發現TCP/ⅠP 協議棧中,很多網絡協議標準都有安全缺陷,網絡攻擊比如網絡掃描,內網滲透,流量欺騙等都和ARP 協議有關。本文為了進一步學習理解網絡協議的原理過程,首先搭建網絡實驗模擬環境,利用Python 的scapy 模塊構造ARP 數據包發送給攻擊目標機實施ARP 欺騙,模擬中間人攻擊,然后嗅探局域網內部網絡流量截取HTTP 協議數據包進行解析,在被攻擊者瀏覽網頁點擊圖片時,實現了實時抓取這些點擊圖片的系統功能目標。
本文實驗環境包括一個路由器,一臺聯網的64 位Windows 7 版本的計算機作為攻擊機,要對該計算機啟用ⅠP 轉發,在注冊表定位以下注冊表項:HKEY_LOCAL_MACHⅠNESYSTEM CurrentContro lSet ServicesTcpip Parameters 選擇下面的項目ⅠPEnableRouter。
請指定值為1。Python 出于兼容性考慮安裝是32 位Python 3.7版本,另外還有一臺VMWARE 虛擬機作為被攻擊目標機,操作系統是64 位的Windows 7 版本,網絡連接方式是Host Only。Python 第三方庫一定要選擇開發環境操作系統Python 版本相對應的庫文件安裝,使用pip 安裝時,如果外國網站網速太慢,可以訪問國內的pip y 源時,命令為:pip install 庫名==XXX.XX -i https://pypi.tuna.t singhua.edu.cn/simple。下面是本文要用到的各種模塊比如Scapy,H TTP 等所依賴的Python 第三方庫文件:

ARP 協議稱為地址解析協議,是工作在網絡層的協議,基本任務就是將ⅠP 地址轉換為MAC 地址(物理地址)。由于網絡層ⅠP 數據報是根據ⅠP 地址確定傳送目標,而以局域網交換設備傳送的是數據幀,它們是依靠48 位以太網地址(MAC 地址)確定傳送目標,以太網數據幀的并不能識別32 位的ⅠP 地址,所以在局域網內部的機器要和其他機器進行通信,首先就要獲取對方的物理地址,這就需要ARP 協議來實現ⅠP 地址轉換為物理地址這種對應關系。
ARP 數據包的詳細信息列表如下(圖1)[1]。

圖1 ARP 數據報文格式
ARP 協議是一個不安全的協議,只要你發送ARP 數據包就能修改目標的MAC 緩存表,基于這種不安全性,便能實現ARP 欺騙。ARP 的攻擊原理:攻擊者冒充網關的身份MAC 地址,被攻擊者發給網關的流量會全部經過攻擊者機:攻擊者冒充被攻擊者的身份MAC地址,賣家發給被攻擊者的流量也會經過攻擊者機的手上。被攻擊者無法與網關聯系,導致流量無法到達被攻擊者機上,而攻擊者卻能拿到網段所有流量(圖2)。

圖2 ARP 欺騙的攻擊示意圖
使用Python 編寫ARP 欺騙工具思路:不斷發送修改對方MAC緩存表的ARP 數據包[2]。
(1)欺騙目標機:以太網報頭:本機MAC·目標機MAC 數據(ARP 數據包):目標機MAC·目標機ⅠP·操作類型請求或回復都行·本機MAC·網關ⅠP。
(2)欺騙路由器:以太網報頭:網關MAC·本機MAC 數據(ARP數據包):網關MAC·網關ⅠP·操作類型請求或回復都行·本機MAC·目標機ⅠP。
在scapy 模塊中,ARP 是構建ARP 數據包的類,Ether 用來構建以太網數據包,構造ARP 數據包并加上以太網報頭實現ARP 欺騙目的[3]。

瀏覽網頁中的圖片一般都是向服務器發送一次請求圖片的HTTP 請求,所以我們只需從經過網卡的流量中過濾出TCP 協議80端口的HTTP 協議數據包,將數據包的頭部層層去掉,最后能得到應用層的HTTP 數據包,再利用正則表達式將http://*.jpg 篩選出來即可知道用戶到底點擊請求了哪些圖[4]。
下面是截取到的HTTP 協議數據包片段:

本文的模擬網絡攻擊環境:路由器網關gateway:192.168.1.1;受害者機器target:192.168.1.15;本地機器local:192.168.1.9。
下面是系統功能的主程序代碼:


ARP 欺騙攻擊之后,從圖3 可以看出路由器網關gateway:192.168.1.1 MAC 地址變成和本地攻擊機local:192.168.1.9 的MAC地址一模一樣,本地攻擊機欺騙被攻擊機冒充自己是網關成功。

圖3 實施ARP 欺騙攻擊的效果圖
本地機192.168.1.9 實施ARP 欺騙攻擊之后,在被攻擊機192.168.1.15 上打開網頁點擊圖片,在本地機上運行的抓圖效果如圖4,可以看到被攻擊機發往網關的HTTP 協議報被本地攻擊機截取,相關圖片的HTTP 請求被解析而后在本地機打開相對應的圖片,基本實現了抓取第三方屏幕網頁圖片的功能。

圖4 ARP 攻擊后實施抓圖的效果圖
本文使用Python 初步實現了ARP 攻擊和抓取第三方機器屏幕的效果,由于實驗環境和程序代碼編寫的限制,系統性能還需要進一步優化,以解決能夠快速高效抓取和解析網絡流量數據包這個系統運行效率問題,還有很多功能有待完成。通過這次實驗作者對ARP 欺騙攻擊有了更深的理解,后面繼續改進完善系統,增添更多的網絡滲透安全防護功能。