圖解ARP協議(二)ARP攻擊原理與實踐


一、ARP攻擊概述

在上篇文章里,我給大家普及了ARP協議的基本原理,包括ARP請求應答、數據包結構以及協議分層標准,今天我們繼續討論大家最感興趣的話題:ARP攻擊原理是什么?通過ARP攻擊可以做什么,賬號是否可以被竊取?有哪些常見的ARP滲透(攻擊)工具可以用來練手?ARP掃描和攻擊有什么區別,底層數據包特征是怎樣的?

接下來,我們通過圖解的方式來深入了解ARP攻擊是如何實現的。

 

二、ARP攻擊原理

但凡局域網存在ARP攻擊,都說明網絡存在"中間人",我們可以用下圖來解釋。

wKioL1mjxjXALRekAAHAb60btmw056.png

 

在這個局域網里面,PC1、PC2、PC3三台主機共同連接到交換機SW1上面,對應3個接口port1/2/3。假設PC3這台主機安裝了ARP攻擊軟件或遭受ARP病毒,成為這個網絡的攻擊者(hacker),接下來,PC3是如何攻擊的?先不急,先來回顧下PC1和PC2是如何通信的。

wKiom1mjxmCRxykuAANc1MaKivU828.png

 

①PC1需要跟PC2通信,通過ARP請求包詢問PC2的MAC地址,由於采用廣播形式,所以交換機將ARP請求包從接口P1廣播到P2和PC3。(注:交換機收到廣播/組播/未知幀都會其他接口泛洪)

 

②PC2根據詢問信息,返回ARP單播回應包;此時PC3作為攻擊者,沒有返回ARP包,但是處於"監聽"狀態,為后續攻擊做准備。

 

③PC1和PC2根據ARP問答,將各自的ARP映射信息(IP-MAC)存儲在本地ARP緩存表。

 

④交換機根據其學習機制,記錄MAC地址對應的接口信息,存儲在CAM緩存表(也稱為MAC地址表)。交換機收到數據包時,會解封裝數據包,根據目標MAC字段進行轉發。

 

關於上面的圖解,我們要記住這些關鍵知識(敲黑板!):

①主機通信需要查找ARP表,而交換機通信需要查找CAM表(路由器則查找Route表)。

注:ARP表:ip<->mac    CAM表:mac<->port  (Route表:route<->port)

②交換機基於源MAC地址學習,基於目的MAC地址轉發。

③同一局域網內,攻擊者可以根據主機的ARP廣播請求監聽其IP和MAC信息。

注:這里是"被動監聽",跟后面要談到的"主動掃描",原理上有區分,這里先埋個坑)

 

接下來是重點,我們來看看PC3(Hacker)是如何發起ARP攻擊的=>

wKioL1mjxgSTHNvXAAN7p6X0xtE711.png

正常情況下,若收到的ARP請求不是給自己的,則直接丟棄;而這里PC3(Hacker)在監聽之后,發起了ARP回應包:我就是PC2(IP2-MAC3)。

 

從拓撲可以出現,PC3明明是IP3對應MAC3,很顯然這就是一個ARP欺騙行為。於此同時,PC2正常的ARP回應包也交到了PC1手中,我們來看PC1接下來如何處理的:

wKioL1mjxmDQDqbVAAGIj72l66Y921.png

 

PC1收到兩個ARP回應包,內容分別如下:

③我是PC2,我的IP地址是IP2,我的MAC地址是MAC2;

③我是PC2,我的IP地址是IP2,我的MAC地址是MAC3;

PC1一臉懵:咋回事?還有這操作?不管了,我選最新的!(后到優先)

這里給大家順便普及下網絡協議里各種表在處理緩存信息的方式:

要么"先到先得",要么"后到優先"。上面提到的ARP和CAM表,就是遵循"后到優先"原則,而后面章節我們會講到的DHCP表,則遵循"先到先得"原則。

 

那么問題來了,上面兩個ARP回應包到底哪個先到哪個后到呢?

作為初學者,可能還在糾結前后這種naive的問題;而作為hacker,只要持續不停發出ARP欺騙包,就一定能夠覆蓋掉正常的ARP回應包。穩健的ARP嗅探/滲透工具,能在短時間內高並發做網絡掃描(例如1秒鍾成千上百的數據包),能夠持續對外發送欺騙包。

 

無論如何,當PC1和PC2這種"小白"用戶遇到PC3(hacker)時,最終的結果一定是這樣的:

wKiom1mjxobhZH9oAAH978PBlz4307.png

 

小白 vs 黑客,很明顯的較量,PC1最終記錄的是虛假的ARP映射:IP2<->MAC3,得到錯誤信息的PC1,接下來會發生什么情況呢?(我們以PC1 ping PC2為例)

wKiom1mjxpjCZWkBAALUA3_Bc78886.png

 

根據數據封裝規則,當PC1要跟PC2進行通信時,無論是發生PING包還是發送其他數據,首先要查找ARP表,然后在網絡層打上源目IP,在鏈路層打上源目MAC,然后將數據包發送給交換機。交換機收到之后對數據進行解封裝,並且查看CAM表(基於目的MAC轉發),由於目標MAC3對應Port3,所以交換機自然而然將其轉發給PC3。

 

就這樣,PC1本來要發給PC2的數據包,落到了PC3(Hacker)手里,這就完成了一次完整的ARP攻擊。反過來,如果PC2要將數據包發送給PC1,PC3仍然可以以同樣的ARP欺騙實現攻擊,這就有了下面這張圖(PC3既欺騙了PC1,也欺騙了PC2)。

wKioL1mjxpmzK8PmAAJ0MAKDznQ139.png

此時,PC1和PC2的通信數據流被PC3攔截,形成了典型的"中間人攻擊"。那么,一旦被攻擊並攔截,攻擊者能做什么,普通用戶又會遭受什么損失?這里給大家舉幾個常見的例子=>

 

①攻擊者既然操控了數據流,那么直接斷開通信是輕而易舉的,即"斷網攻擊",例如,PC1發給PC2的數據在PC3這里可以直接丟棄,而如果這里的PC2是一台出口路由器(無線路由器),那就意味着PC1直接無法連上互聯網。

 

②"斷網攻擊"顯然容易被發現,而且比較"殘忍",所以就有了更加常見的應用-"限速"。例如,在宿舍上網突然很慢,在網吧上網突然打不開網頁,如果這個網絡沒有安全防御,那么很有可能有"內鬼"。

 

③其實無論是"斷網攻擊"還是"限速",整體還是比較"善良",因為這里流量里面的核心數據還沒有被"提取"出來。如果攻擊者是一名真正的黑客,他的目的一定不會這么無聊,因為內網流量對於黑客是沒有太大價值的,而只有"用戶隱私",例如常見網站的登錄賬號密碼,這些才是最有價值的。

 

問:遭受ARP攻擊之后,哪些賬號可能被竊取?

答:任何基於明文傳輸的應用,都可以被竊取。例如,如果一個網站不是HTTPS協議,而是基於HTTP明文傳輸,那么當你登錄這個網站時,你的密碼就會被竊取。除了http(web應用),常見的還有telnet、ftp、pop3/smtp/imap(郵箱)等應用,都很容易泄露密碼。

 

三、常見ARP滲透工具與底層原理分析

基於ARP欺騙原理設計出來的滲透/攻擊工具非常多,而最終能實現什么功能則各有差異,簡單舉幾個例子:

 

①無毒無害型的僅具備ARP掃描功能,用來發現內網主機;例如Metasploit里面的arping/arpscan相關模塊;

 

②ARP掃描+流量控制(限速或限制能上哪些網站和應用);例如Windows下的P2P終結者;

 

③ARP掃描+賬號竊取(網站、郵箱、各種);最強的莫過於Windows下的Cain,當然還有跨平台的Ettercap(需配合其他工具);

 

當然,如果攻擊者足夠強悍,也可以基於協議底層原理,編寫自己的ARP工具。這里我通過wirehshark給大家還原真實網絡中常見的ARP掃描和欺騙攻擊(具體的軟件使用這里暫時不出現,大家重點關注底層實現)。

wKioL1mjxrDwB5v6AAH2jAzXTvg495.png

 

在這張圖里面,Hacker(就是我...)接入了一個WiFi網絡,這個10.1.20.0/24便是所在的網段。剛進來一個陌生網絡,Hacker只知道自己的IP信息,例如IP地址是10.1.20.253,網關地址是10.1.20.254,而這個局域網的其他設備是什么?有多少台?地址分布是多少?Hacker都不知道,接下來怎么辦呢?是不是要直接發動ARP攻擊了?

 

不用這么着急,咋們至少要先了解下這個網絡,進行基本的掃描和踩點。這個時候通過ARP工具對這個WiFi網絡進行掃描,具體的數據包截圖如下:

wKioL1mjxsuidvoXAA6PfuDo6wQ620.png

 

上面的ARP掃描過程,大概的情況是這樣的=>

wKioL1mjxuSiFIK8AAIwZFLgJb8705.png

其實,這就是典型的"盲掃"或者"暴力掃描":反正我不知道網絡到底有多少主機,那我就嘗試一下把整個網段全部問一遍得了。好比老師上課點名,把每個學生的桌位號念一遍,誰舉手就到勤,沒舉手就算逃課。

 

那么,這個實際網絡里面,到底誰"舉手"了呢?我們來看Wireshark抓包情況。

 

wKioL1mjxvfzRrO7AAxPLdyJ1nc295.png

 

在ARP應答信息里面,除了IP地址和MAC信息,我們還能看到相關的設備廠商信息,例如cisco、meizu、apple、xiaomi等,這其實就是依靠MAC地址前面24位的OUI(機構唯一標識符)來識別的。

 

Wireshark或掃描器能夠幫我們將OUI轉為對應的廠商(還有一些掃描器基於Netbios協議,還能找到電腦的主機名),所以,掃描之后可以得到下面這張圖片=>

wKiom1mjx0CQ3x4rAAKJ8mzC2yg089.png

通過掃描,我們已經知道了整個網絡的主機信息,例如20.254對應cisco,應該是路由器,20.248對應apple,是蘋果手機,20.249對應xiaomi,是小米手機,以此類推.....

 

接下來,如何進行ARP欺騙攻擊呢?這里將最重點的數據包截取出來=>

wKiom1mjx1iRkEwDAAvahTCTBdE716.png

 

根據之前的信息,我們知道00:08:ca:86:f8:0f其實就是hacker的mac地址,並且對應的真正的IP地址應該是10.1.20.253。而這里很明顯是hacker在欺騙局域網其他主機,它對外聲稱:自己就是"所有人"。尤其是上面標紅的主機,我們已經知道是小米、思科、蘋果等設備,但是hacker都聲明是自己!這樣做的意義在於覆蓋掉其他主機的ARP緩存表信息,並生成錯誤的ARP映射,最終將通信流量交給hacker。

 

當然,還有另外一種ARP欺騙的做法:hacker告訴所有人,自己就是網關。因為其他主機訪問互聯網必經之路便是網關(出口路由器/無線路由器),通過這種方式,同樣可以截取到用戶數據流,這里給出另外一個網絡的實現過程=>

 

Hacker欺騙主機Honhai,告訴它:我就是網關(10.1.1.254)

wKioL1mjx2Pjtt72AAkMk9Im_q4062.png

 

Hacker欺騙主機Apple,告訴它:我就是網關(10.1.1.254)

wKiom1mjx4jQ1Q2eAAmiX8IEMc8900.png

 

依此類推,Hacker會告訴局域網所有主機:自己就是網關,並且后續可以把數據都丟給我,我來轉發到互聯網。

 

四、ARP攻擊總結

①ARP緩存表基於"后到優先"原則,IP與MAC的映射信息能被覆蓋;

②ARP攻擊基於偽造的ARP回應包,黑客通過構造"錯位"的IP和MAC映射,覆蓋主機的ARP表(也被稱為"ARP毒化"),最終截取用戶的數據流;

③一旦遭受ARP攻擊,賬號密碼都可能被竊取(如果通信協議不是加密的);

④通過Wireshark數據包分析,我們掌握了真實網絡中ARP底層攻擊原理及數據包組成。

 

預告:ARP防御篇

如何防御ARP攻擊?

有哪些ARP防御軟件?

如果被ARP攻擊了,如何揪出"內鬼",應該如何"還手"?

企業網/家庭網的防御方法有什么區別?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM