电竞比分网-中国电竞赛事及体育赛事平台

分享

ARP原理和ARP攻擊

 AndyCloud 2020-04-11

ARP--在TCP/IP協(xié)議棧中,最不安全的協(xié)議莫過于ARP了,我們經(jīng)常聽到的網(wǎng)絡掃描,內(nèi)網(wǎng)滲透,流量欺騙等等,他們基本上都與ARP有關系,甚至可以說,他們的底層都是基于ARP實現(xiàn)的。但是ARP的是實現(xiàn)僅需一問一答的兩個包即可,實現(xiàn)上很簡單。



目錄

  • ARP協(xié)議

  • ARP數(shù)據(jù)包信息

  • ARP攻擊


一、ARP協(xié)議

ARP(Address Resolution Protocol)地址解析協(xié)議,目的是實現(xiàn)IP地址到MAC地址的轉(zhuǎn)換。

在計算機間通信的時候,計算機要知道目的計算機是誰(就像我們?nèi)私涣饕粯?,要知道對方是誰),這中間需要涉及到MAC地址,而MAC是真正的電腦的唯一標識符。

為什么需要ARP協(xié)議呢?因為在OSI七層模型中,對數(shù)據(jù)從上到下進行封裝發(fā)送出去,然后對數(shù)據(jù)從下到上解包接收,但是上層(網(wǎng)絡層)關心的IP地址,下層關心的是MAC地址,這個時候就需要映射IP和MAC。

ARP之簡單請求應答

    當兩臺計算機在同一個局域網(wǎng)通信,我們以ping命令為例,該命令使用的ICMP協(xié)議

新建 Microsoft Visio 繪圖.png

PC1依據(jù)OSI模型①依次從上至下對數(shù)據(jù)進行封裝,包括對ICMP Date加IP包頭的封裝,但是到了封裝MAC地址的時候,②PC1首先查詢自己的ARP緩存表,發(fā)現(xiàn)沒有IP2和他的MAC地址的映射,這個時候MAC數(shù)據(jù)幀封裝失敗。我們使用ping命令的時候,是指定PC2的IP2的,計算機是知道目的主機的IP地址,能夠完成網(wǎng)絡層的數(shù)據(jù)封裝,因為設備通信還需要對方的MAC地址,但是PC1的緩存表里沒有,所以在MAC封裝的時候填入不了目的MAC地址。

那么PC1為了獲取PC2的MAC地址,③PC1要發(fā)送詢問信息,詢問PC2的MAC地址,詢問信息包括PC1的IP和MAC地址、PC2的IP地址,這里我們想到一個問題,即使是詢問信息,也是需要進行MAC數(shù)據(jù)幀的封裝,那這個詢問信息的目的MAC地址填什么呢,規(guī)定當目的MAC地址為ff-ff-ff-ff-ff-ff時,就代表這是一個詢問信息,也即使后面我要說的廣播。

PC2收到這個詢問信息后,將這里面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP緩存表中,然后④PC2發(fā)送應答信息,對數(shù)據(jù)進行IP和MAC的封裝,發(fā)送給PC1,因為緩存表里已經(jīng)有PC1的IP和MAC的映射了呢。這個應答信息包含PC2的IP2和MAC2。PC1收到這個應答信息,理所應當?shù)木瞳@取了PC2的MAC地址,并添加到自己的緩存表中。

經(jīng)過這樣交互式的一問一答,PC1和PC2都獲得了對方的MAC地址,值得注意的是,目的主機先完成ARP緩存,然后才是源主機完成ARP緩存。之后PC1和PC2就可以真正交流了。

ARP之廣播請求單播回應

    上圖面的圖解是不完全的ARP協(xié)議,因為在局域網(wǎng)里邊不會只有兩臺主機,這里就要考慮如何在局域網(wǎng)眾多主機里獲得目的主機的MAC。

blob.png

和上面的一樣,剛開始PC1并不知道PC2的MAC地址,同樣需要發(fā)送ARP請求,但是這個局域網(wǎng)里主機很多,怎么唯獨獲取PC2的MAC呢,①我們想到和一群陌生人交流一樣,可以挨著詢問一遍,這就是我們要說的廣播,首先PC1廣播發(fā)送詢問信息(信息和上一張圖介紹的一樣),在這個普通交換機上連接的設備都會受到這個PC1發(fā)送的詢問信息。

接下來②需要做的是,所有在這個交換機上的設備需要判斷此詢問信息,如果各自的IP和要詢問的IP不一致,則丟棄,如圖PC3、Route均丟棄該詢問信息,而對于PC2判斷該詢問信息發(fā)現(xiàn)滿足一致的要求,則接受,同樣的寫入PC1的IP和MAC到自己的ARP映射表中。

最后,③PC2單播發(fā)送應答信息給PC1,告訴PC1自己的IP和MAC地址。


二、ARP數(shù)據(jù)包信息

ARP數(shù)據(jù)的詳細信息列表如下

     Hardware type 硬件類型,標識鏈路層協(xié)議
     Protocol type 協(xié)議類型,標識網(wǎng)絡層協(xié)議
     Hardware size  硬件地址大小,標識MAC地址長度,這里是6個字節(jié)(48bit)
     Protocol size 協(xié)議地址大小,標識IP地址長度,這里是4個字節(jié)(32bit)
        Opcode 操作代碼,標識ARP數(shù)據(jù)包類型,1表示請求,2表示回應
   Sender MAC address  發(fā)送者MAC
    Sender IP address 發(fā)送者IP
   Target MAC address 目標MAC,此處全0表示在請求
    Target IP address 目標IP

ARP請求包

blob.png

ARP應答包

內(nèi)容格式和上圖相似,不過會有目的地址對應的MAC地址,ARP數(shù)據(jù)包類型字段為2。


三、ARP攻擊

新建 Microsoft Visio 繪圖 (3).png

我們知道,當PC1對PC2正常通信的時候(先別管攻擊者PC3),PC2、PC1會先后建立對方的IP和MAC地址的映射(即建立ARP緩存表),同時對于交換機而言,它也具有記憶功能,會基于源MAC地址建立一個CAM緩存表(記錄MAC對應接口的信息),理解為當PC1發(fā)送消息至交換機的Port1時,交換機會把源MAC(也就是MAC1)記錄下來,添加一條MAC1和Port1的映射,之后交換機可以根據(jù)MAC幀的目的MAC進行端口轉(zhuǎn)發(fā),這個時候PC3只是處于監(jiān)聽狀態(tài),會把PC1的廣播丟棄。

正常的PC3會把廣播包丟棄,同樣的PC3可以抓住這一環(huán)節(jié)的漏洞,把不屬于自己的廣播包接收,同時回應一個虛假的回應包,告訴PC1我就是PC2

(IP2-MAC3),這樣PC1會收到兩個回應包(一個正確的IP2-MAC2,一個虛假的IP2-MAC3),但是PC1并不知道到底哪個是真的,所以PC1會做出判斷,并且判斷后到達的為真,那么怎么讓虛假的回應包后到達呢,PC3可以連續(xù)不斷的發(fā)送這樣的回應包,總會把哪個正確的回應包覆蓋掉。

而后PC1會建立IP2-MAC3這樣一條ARP緩存條目,以后當PC1給PC2發(fā)送信息的時候,PC1依據(jù)OSI模型從上至下在網(wǎng)絡層給數(shù)據(jù)封裝目的IP為IP2的包頭,在鏈路層通過查詢ARP緩存表封裝目的MAC為MAC3的數(shù)據(jù)幀,送至交換機,根據(jù)查詢CAM表,發(fā)現(xiàn)MAC3對應的接口為Port3,就這樣把信息交付到了PC3,完成了一次ARP攻擊。

新建 Microsoft Visio 繪圖 (4).png

如果ARP攻擊嚴重話,會導致同一個局域網(wǎng)(也是同一個廣播域)的所有主機的ARP緩存表中都存放著錯誤的IP和MAC的映射,如上圖,每臺主機的ARP緩存表中,不論哪個IP,都會映射到攻擊者的MAC地址MAC1上,這樣該局域網(wǎng)內(nèi)的所有主機的消息都發(fā)送到Hacker的主機上。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多