圖解ARP協議(二)ARP攻擊篇
一、ARP攻擊概述
在上篇文章里,我給大家普及了ARP協議的基本原理,包括ARP請求應答、數據包結構以及協議分層標準,今天我們繼續討論大家最感興趣的話題:ARP攻擊原理是什麼?通過ARP攻擊可以做什麼,賬號是否可以被竊取?有哪些常見的ARP滲透(攻擊)工具可以用來練手?ARP掃描和攻擊有什麼區別,底層數據包特徵是怎樣的?
接下來,我們通過圖解的方式來深入了解ARP攻擊是如何實現的。
二、ARP攻擊原理
但凡區域網存在ARP攻擊,都說明網路存在"中間人",我們可以用下圖來解釋。
在這個區域網裡面,PC1、PC2、PC3三台主機共同連接到交換機SW1上面,對應3個介面port1/2/3。假設PC3這台主機安裝了ARP攻擊軟體或遭受ARP病毒,成為這個網路的攻擊者(hacker),接下來,PC3是如何攻擊的?先不急,先來回顧下PC1和PC2是如何通信的。
①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攻擊的=>
正常情況下,若收到的ARP請求不是給自己的,則直接丟棄;而這裡PC3(Hacker)在監聽之後,發起了ARP回應包:我就是PC2(IP2-MAC3)。
從拓撲可以出現,PC3明明是IP3對應MAC3,很顯然這就是一個ARP欺騙行為。於此同時,PC2正常的ARP回應包也交到了PC1手中,我們來看PC1接下來如何處理的:
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)時,最終的結果一定是這樣的:
小白 vs 黑客,很明顯的較量,PC1最終記錄的是虛假的ARP映射:IP2<->MAC3,得到錯誤信息的PC1,接下來會發生什麼情況呢?(我們以PC1 ping PC2為例)
根據數據封裝規則,當PC1要跟PC2進行通信時,無論是發生PING包還是發送其他數據,首先要查找ARP表,然後在網路層打上源目IP,在鏈路層打上源目MAC,然後將數據包發送給交換機。交換機收到之後對數據進行解封裝,並且查看CAM表(基於目的MAC轉發),由於目標MAC3對應Port3,所以交換機自然而然將其轉發給PC3。
就這樣,PC1本來要發給PC2的數據包,落到了PC3(Hacker)手裡,這就完成了一次完整的ARP攻擊。反過來,如果PC2要將數據包發送給PC1,PC3仍然可以以同樣的ARP欺騙實現攻擊,這就有了下面這張圖(PC3既欺騙了PC1,也欺騙了PC2)。
此時,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掃描和欺騙攻擊(具體的軟體使用這裡暫時不出現,大家重點關注底層實現)。
在這張圖裡面,Hacker(就是我...)接入了一個WiFi網路,這個10.1.20.0/24便是所在的網段。剛進來一個陌生網路,Hacker只知道自己的IP信息,例如IP地址是10.1.20.253,網關地址是10.1.20.254,而這個區域網的其他設備是什麼?有多少台?地址分布是多少?Hacker都不知道,接下來怎麼辦呢?是不是要直接發動ARP攻擊了?
不用這麼著急,咋們至少要先了解下這個網路,進行基本的掃描和踩點。這個時候通過ARP工具對這個WiFi網路進行掃描,具體的數據包截圖如下:
上面的ARP掃描過程,大概的情況是這樣的=>
其實,這就是典型的"盲掃"或者"暴力掃描":反正我不知道網路到底有多少主機,那我就嘗試一下把整個網段全部問一遍得了。好比老師上課點名,把每個學生的桌位號念一遍,誰舉手就到勤,沒舉手就算逃課。
那麼,這個實際網路裡面,到底誰"舉手"了呢?我們來看Wireshark抓包情況。
在ARP應答信息裡面,除了IP地址和MAC信息,我們還能看到相關的設備廠商信息,例如cisco、meizu、apple、xiaomi等,這其實就是依靠MAC地址前面24位的OUI(機構唯一標識符)來識別的。
Wireshark或掃描器能夠幫我們將OUI轉為對應的廠商(還有一些掃描器基於Netbios協議,還能找到電腦的主機名),所以,掃描之後可以得到下面這張圖片=>
通過掃描,我們已經知道了整個網路的主機信息,例如20.254對應cisco,應該是路由器,20.248對應apple,是蘋果手機,20.249對應xiaomi,是小米手機,以此類推.....
接下來,如何進行ARP欺騙攻擊呢?這裡將最重點的數據包截取出來=>
根據之前的信息,我們知道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)
Hacker欺騙主機Apple,告訴它:我就是網關(10.1.1.254)
依此類推,Hacker會告訴區域網所有主機:自己就是網關,並且後續可以把數據都丟給我,我來轉發到互聯網。
四、ARP攻擊總結
①ARP緩存表基於"後到優先"原則,IP與MAC的映射信息能被覆蓋;
②ARP攻擊基於偽造的ARP回應包,黑客通過構造"錯位"的IP和MAC映射,覆蓋主機的ARP表(也被稱為"ARP毒化"),最終截取用戶的數據流;
③一旦遭受ARP攻擊,賬號密碼都可能被竊取(如果通信協議不是加密的);
④通過Wireshark數據包分析,我們掌握了真實網路中ARP底層攻擊原理及數據包組成。
預告:ARP防禦篇
如何防禦ARP攻擊?
有哪些ARP防禦軟體?
如果被ARP攻擊了,如何揪出"內鬼",應該如何"還手"?
企業網/家庭網的防禦方法有什麼區別?
【相關推薦】
圖解ARP協議(一)
《TCP/IP協議棧視頻教程》
新浪微博:@拼客學院陳鑫傑
微信公眾號:拼客院長陳鑫傑
拼客學院:http://www.pinginglab.net
推薦閱讀:
※維基解密公布CIA蜂巢(Hive)後門武器源碼(含下載)
※【安全報告】隔離網路高級威脅攻擊預警分析報告
※嗅探、中間人sql注入、反編譯--例說桌面軟體安全性問題
※Windows堆棧溢出利用的七種方式
※俄羅斯互聯網巨頭2500萬用戶數據泄露