ARP及ARP防範欺騙

首先說一下什麼是ARP。如果你在UNIX Shell下輸入 arp -a (9x下也是),你的輸出看起來應該是這樣的:

  Interface: xxx.xxx.xxx.xxx

  Internet Address Physical Address Type

xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic

  xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic

  ...... ......... ....

    這裏第一列顯示的是ip地址,第二列顯示的是和ip地址對應的網絡接口卡的硬件地址(MAC),第三列是該ip和mac的對應關係類型。

    可見,arp是一種將ip轉化成以ip對應的網卡的物理地址的一種協議,或者說ARP協議是一種將ip地址轉化成MAC地址的一種協議。它靠維持在內存中保存的一張表來使ip得以在網絡上被目標機器應答。

    爲什麼要將ip轉化成mac呢?簡單的說,這是因爲在tcp網絡環境下,一個ip包走到哪裏,要怎麼走是靠路由表定義。但是,當ip包到達該網絡後,哪臺機器響應這個ip包卻是靠該ip包中所包含的mac地址來識別。也就是說,只有機器的mac地址和該ip包中的mac地址相同的機器纔會應答這個ip包。因爲在網絡中,每一臺主機都會有發送ip包的時候。所以,在每臺主機的內存中,都有一個 arp--> mac 的轉換表。通常是動態的轉換表(注意在路由中,該arp表可以被設置成靜態)。也就是說,該對應表會被主機在需要的時候刷新。這是由於以太網在子網層上的傳輸是靠48位的mac地址而決定的。

    通常主機在發送一個ip包之前,它要到該轉換表中尋找和ip包對應的mac地址。如果沒有找到,該主機就發送一個ARP廣播包,看起來象這樣子:

  "我是主機xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip爲xxx.xxx.xxx.xx1的主機請告之你的mac來"

  ip爲xxx.xxx.xxx.xx1的主機響應這個廣播,應答ARP廣播爲:

  "我是xxx.xxx.xxx.xx1,我的mac爲xxxxxxxxxx2"

    於是,主機刷新自己的ARP緩存,然後發出該ip包。

    瞭解這些常識後,現在就可以談在網絡中如何實現ARP欺騙了,可以看看這樣一個例子:

    一個入侵者想非法進入某臺主機,他知道這臺主機的防火牆只對192.0.0.3(假設)這個ip開放23口(telnet),而他必須要使用telnet來進入這臺主機,所以他要這麼做:

    1、他先研究192.0.0.3這臺主機,發現這臺95的機器使用一個oob就可以讓他死掉。

    2、於是,他送一個洪水包給192.0.0.3的139口,於是,該機器應包而死。

    3、這時,主機發到192.0.0.3的ip包將無法被機器應答,系統開始更新自己的arp對應表。將192.0.0.3的項目搽去。

    4、這段時間裏,入侵者把自己的ip改成192.0.0.3

    5、他發一個ping(icmp 0)給主機,要求主機更新主機的arp轉換表。

    6、主機找到該ip,然後在arp表中加入新的ip-->mac對應關係。

    7、防火牆失效了,入侵的ip變成合法的mac地址,可以telnet了。 

 
發佈了34 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章