1. 程式人生 > >圖解ARP協議(二)ARP攻擊原理與實踐

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

tcp/ip 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攻擊了,如何揪出"內鬼",應該如何"還手"?

企業網/家庭網的防禦方法有什麽區別?



推薦課程:《TCP/IP協議棧精講》

本文出自 “陳鑫傑講網絡與安全” 博客,請務必保留此出處http://chenxinjie.blog.51cto.com/7749507/1959652

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