ARP原理和欺騙

ARP--在TCP/IP協議棧中,最不安全的協議莫過於ARP了,咱們常常聽到的網絡掃描,內網***,流量欺騙等等,他們基本上都與ARP有關係,甚至能夠說,他們的底層都是基於ARP實現的。可是ARP的是實現僅需一問一答的兩個包便可,實現上很簡單。緩存



目錄安全

  • ARP協議網絡

  • ARP數據包信息spa

  • ARP***3d


1、ARP協議code

ARP(Address Resolution Protocol)地址解析協議,目的是實現IP地址到MAC地址的轉換。blog

在計算機間通訊的時候,計算機要知道目的計算機是誰(就像咱們人交流同樣,要知道對方是誰),這中間須要涉及到MAC地址,而MAC是真正的電腦的惟一標識符。
接口

爲何須要ARP協議呢?由於在OSI七層模型中,對數據從上到下進行封裝發送出去,而後對數據從下到上解包接收,可是上層(網絡層)關心的IP地址,下層關心的是MAC地址,這個時候就須要映射IP和MAC。get


ARP之簡單請求應答it

    當兩臺計算機在同一個局域網通訊,咱們以ping命令爲例,該命令使用的ICMP協議


新建 Microsoft Visio 繪圖.png


PC1依據OSI模型依次從上至下對數據進行封裝,包括對ICMP Date加IP包頭的封裝,可是到了封裝MAC地址的時候,PC1首先查詢本身的ARP緩存表,發現沒有IP2和他的MAC地址的映射,這個時候MAC數據幀封裝失敗。咱們使用ping命令的時候,是指定PC2的IP2的,計算機是知道目的主機的IP地址,可以完成網絡層的數據封裝,由於設備通訊還須要對方的MAC地址,可是PC1的緩存表裏沒有,因此在MAC封裝的時候填入不了目的MAC地址。


那麼PC1爲了獲取PC2的MAC地址,PC1要發送詢問信息,詢問PC2的MAC地址,詢問信息包括PC1的IP和MAC地址、PC2的IP地址,這裏咱們想到一個問題,即便是詢問信息,也是須要進行MAC數據幀的封裝,那這個詢問信息的目的MAC地址填什麼呢,規定當目的MAC地址爲ff-ff-ff-ff-ff-ff時,就表明這是一個詢問信息,也即便後面我要說的廣播。


PC2收到這個詢問信息後,將這裏面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP緩存表中,而後PC2發送應答信息,對數據進行IP和MAC的封裝,發送給PC1,由於緩存表裏已經有PC1的IP和MAC的映射了呢。這個應答信息包含PC2的IP2和MAC2。PC1收到這個應答信息,理所應當的就獲取了PC2的MAC地址,並添加到本身的緩存表中。


通過這樣交互式的一問一答,PC1和PC2都得到了對方的MAC地址,值得注意的是,目的主機先完成ARP緩存,而後纔是源主機完成ARP緩存。以後PC1和PC2就能夠真正交流了。


ARP之廣播請求單播迴應

    上圖面的圖解是不徹底的ARP協議,由於在局域網裏邊不會只有兩臺主機,這裏就要考慮如何在局域網衆多主機裏得到目的主機的MAC。


blob.png

和上面的同樣,剛開始PC1並不知道PC2的MAC地址,一樣須要發送ARP請求,可是這個局域網裏主機不少,怎麼惟獨獲取PC2的MAC呢,咱們想到和一羣陌生人交流同樣,能夠挨着詢問一遍,這就是咱們要說的廣播,首先PC1廣播發送詢問信息(信息和上一張圖介紹的同樣),在這個普通交換機上鍊接的設備都會受到這個PC1發送的詢問信息。


接下來須要作的是,全部在這個交換機上的設備須要判斷此詢問信息,若是各自的IP和要詢問的IP不一致,則丟棄,如圖PC三、Route均丟棄該詢問信息,而對於PC2判斷該詢問信息發現知足一致的要求,則接受,一樣的寫入PC1的IP和MAC到本身的ARP映射表中。


最後,PC2單播發送應答信息給PC1,告訴PC1本身的IP和MAC地址。


2、ARP數據包信息


ARP數據的詳細信息列表以下


 

     Hardware type  硬件類型,標識鏈路層協議
     Protocol type  協議類型,標識網絡層協議
     Hardware size   硬件地址大小,標識MAC地址長度,這裏是6個字節(48bit
     Protocol size  協議地址大小,標識IP地址長度,這裏是4個字節(32bit)
        Opcode  操做代碼,標識ARP數據包類型,1表示請求,2表示迴應
   Sender MAC address   發送者MAC
    Sender IP address  發送者IP
   Target MAC address  目標MAC,此處全0表示在請求
    Target IP address  目標IP


ARP請求包


blob.png


ARP應答包


內容格式和上圖類似,不過會有目的地址對應的MAC地址,ARP數據包類型字段爲2。


3、ARP***


新建 Microsoft Visio 繪圖 (3).png


咱們知道,當PC1對PC2正常通訊的時候(先別管***者PC3),PC二、PC1會前後創建對方的IP和MAC地址的映射(即創建ARP緩存表),同時對於交換機而言,它也具備記憶功能,會基於源MAC地址創建一個CAM緩存表(記錄MAC對應接口的信息),理解爲當PC1發送消息至交換機的Port1時,交換機會把源MAC(也就是MAC1)記錄下來,添加一條MAC1和Port1的映射,以後交換機能夠根據MAC幀的目的MAC進行端口轉發,這個時候PC3只是處於監聽狀態,會把PC1的廣播丟棄。


正常的PC3會把廣播包丟棄,一樣的PC3能夠抓住這一環節的漏洞,把不屬於本身的廣播包接收,同時迴應一個虛假的迴應包,告訴PC1我就是PC2

(IP2-MAC3),這樣PC1會收到兩個迴應包(一個正確的IP2-MAC2,一個虛假的IP2-MAC3),可是PC1並不知道到底哪一個是真的,因此PC1會作出判斷,而且判斷後到達的爲真,那麼怎麼讓虛假的迴應包後到達呢,PC3能夠接二連三的發送這樣的迴應包,總會把哪一個正確的迴應包覆蓋掉。


然後PC1會創建IP2-MAC3這樣一條ARP緩存條目,之後當PC1給PC2發送信息的時候,PC1依據OSI模型從上至下在網絡層給數據封裝目的IP爲IP2的包頭,在鏈路層經過查詢ARP緩存表封裝目的MAC爲MAC3的數據幀,送至交換機,根據查詢CAM表,發現MAC3對應的接口爲Port3,就這樣把信息交付到了PC3,完成了一次ARP***。



新建 Microsoft Visio 繪圖 (4).png


若是ARP***嚴重話,會致使同一個局域網(也是同一個廣播域)的全部主機的ARP緩存表中都存放着錯誤的IP和MAC的映射,如上圖,每臺主機的ARP緩存表中,不論哪一個IP,都會映射到***者的MAC地址MAC1上,這樣該局域網內的全部主機的消息都發送到Hacker的主機上。

相關文章
相關標籤/搜索