查看單個文章
舊 2006-07-14, 03:29 AM   #4 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

網路安全中的ARP協議和欺騙技術及其對策
Author:Phoenix
Homepage:http://www.safechina.net
E-mail:Phoenix@safechina.net
Time:24/06/2002

ARP協議的概念和工作原理對學習網路安全知識的初學者來說是首先遇到的幾個重要的知識點之一,其中ARP欺騙技術和及其對策更是學習網路安全中的重點與難點,往往難以一下子掌握這些抽像複雜的機理。因此很有必要用詳細介始一下網路安全中的ARP協議和欺騙技術相應的對策。

一,TCP/IP協議之ARP協議的定義

ARP協議即地址解析協議Address Resolution Protocol,ARP協議是將IP位址與網路物理位址一一對應的協議。負責IP位址和網卡實體地址(MAC)之間的轉換。也就是將網路層(IP層,也就是相當於ISO OSI 的第三層)地址解析為資料連接層(MAC層,也就是相當於ISO OSI的第二層)的MAC卡位址。如果您對網路七層協定有比較清晰的理解的話應該知道各個層級之間都使用其各自的協定。一張ARP的表,用來支持在MAC卡位址和IP位址之間的一一對應關係。它提供兩者的相互轉換。

二,ARP協議的工作原理
在乙太網(Ethernet)中,一個網路設備要和另一個網路設備進行直接通信,除了知道目標設備的網路層邏輯地址(如IP位址)外,還要知道目標設備的第二層物理位址(MAC卡位址)。ARP協議的基本功能就是通過目標設備的IP位址,查詢目標設備的MAC卡位址,以保證通信的順利進行。

  當一個網路設備需要和另一個網路設備通信時,它首先把目標設備的IP位址與自己的子網掩碼進行"與"操作,以判斷目標設備與自己是否位於同一網段內。如果目標設備在同一網段內,並且源設備沒有獲得與目標IP位址相對應的MAC卡位址訊息,則源設備以第二層廣播的形式(目標MAC卡位址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備與目標設備的IP位址。同一網段中的所有其他設備都可以收到並分析這個ARP請求報文,如果某設備發現報文中的目標IP位址與自己的IP位址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC卡位址訊息。

  如果目標設備與源設備不在同一網段,則源設備首先把IP分組發向自己的預設網路閘道器(Default Gateway),由預設網路閘道器對該分組進行轉發。如果源設備沒有關於預設網路閘道器的MAC訊息,則它同樣通過ARP協議獲取預設網路閘道器的MAC卡位址訊息。為了減少廣播量,網路設備通過ARP表在快取記憶體中儲存IP與MAC卡位址的映射訊息。在一次ARP的請求與響應過程中,通信雙方都把對方的MAC卡位址與IP位址的對應關係儲存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC卡位址的映射關係。

還有當傳送過來的包要傳向一個LAN的主機時,當它到達網路閘道器時,網路閘道器要求ARP程式找到物理主機或與IP位址相對應的MAC卡位址。ARP程式在快取記憶體中尋找,如果找到地址,就提供此地址,以便讓此包轉換成相應的長度和格式,以傳送到此主機。如果未找到,ARP程式就在網上廣播一個特殊格式的消息,看哪個機器知道與這個IP位址相關的MAC卡位址。如果一台機器發現那是自己的IP位址,它就發送回應,這樣就指出了相應的地址。ARP程式就更新自己的快取記憶體然後發送此包到回應的MAC卡位址。因為不同協議的相應處理方法不同,所以有不同網路的地址解析請求。也有反向位址解析協議(RARP)供不知道IP位址的主機從ARP快取記憶體中獲得IP位址。

我們還是來通過實驗更加深入直觀地瞭解ARP協議的工作原理吧。我們假設有兩台主機:A機的IP位址是192.168.0.1,MAC卡位址是52-54-ab-27-82-83 。
B機的IP位址是192.168.0.2,MAC卡位址是52-54-ab-27-82-84 。
當主機A想與主機B進行通訊時,A機只知道B機的IP位址是192.168.0.2,當資料包封裝到MAC層時他如何知道B
的MAC卡位址呢,一般的OS中是這樣做的,在OS的內核中儲存一分MAC卡位址表,就是我們一中介始到的。用arp -a就可以看見這個表的內容了,例如:
C:/>arp -a

Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic


其中表內有IP和MAC卡位址的對應關係,當要過進行通訊時,系統先檢視這個表中是否有相關的表項,如果有就直接使用,如果沒有系統就會發出一個ARP請求包,這個包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網內IP位址為192.168.0.2的主機的MAC卡位址,就像是A在局域網中發訊息找一個IP位址為192.168
.0.2的主機MAC卡位址,同樣A機把自已的MAC卡位址告訴出去是52-54-ab-27-82-83 ,隨後所有主機都會接收到這個包,但只有IP為192.168.0.2的B才會響應一個ARP應答包給主機A,B機會回訊息給A機說他的MAC卡位址是52-54-ab-27-82-84
,好這下主機A就知道B的MAC卡位址了,於時他就可以封包發送了,同時主機A將B的MAC卡位址放入ARPBuffers中,隔一定時間就將其刪除,確保不斷更新。

注意,在這個過程中,如果主機A在發送ARP請求時,假如該局域網內有一台主機C的IP和A相同,C就會得知有一台主機的IP位址同自已的IP位址相同,於時就蹦出一個IP衝突的對話筐。與ARP相對應的還有一個協議RARP:Reverse
Address Resolution Protocol,
反向位址解析協議,該協議主要用於工作站模型動態獲取IP的過程中,作用是由MAC卡位址向服務器取回IP位址。

三,如何實現ARP協議的欺騙技術和相應的對策

1,ARP協議欺騙技術

當我們設定一個目標進行ARP欺騙時,也就是把MAC卡位址通過一主機A發送到主機B上的資料包都變成發送給主機C的了,如果C能夠接收到A發送的資料包後,第一步屬於嗅探成功了,而對於主機A來目前是不可能意識到這一點,主機C接收到主機A發送給主機B的資料包可沒有轉交給B。當進行ARP重定向。打開主機C的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由器一樣。但是這就是ARP協議欺騙真正的一步,假如主機C進行發送ICMP重定向的話就麻煩了,因為他可以直接進行整個包的修改轉發,捕獲到主機A發送給的資料包,全部進行修改後再轉發給主機B,而主機B接收到的資料包完全認為是從主機A發送來的。這樣就是主機C進行ARP協議欺騙技術,對於網路安全來是很重要的。當然還可以通過MAC卡位址進行欺騙的。

2,ARP協議欺騙技術相應對策

各種網路安全的對策都是相對的,主要要看網管平時對網路安全的重視性了。下面介始一些相應的對策:

1) 在系統中建立靜態ARP表 ,建立後對本身自已系統影響不大的,對網路影響較大,破壞了動態ARP解析過程。靜態ARP協議表不會過期的,我們用「arp -d」命令清除ARP表,即手動刪除。但是有的系統的靜態ARP表項可以被動態重新整理,如Solaris系統,那樣的話依靠靜態ARP表項並不能對抗ARP欺騙攻擊,相反縱容了ARP欺騙攻擊,因為虛假的靜態ARP表項不會自動超時消失。當然, 可以考慮利用cron機制補救之。(增加一個crontab) 為了對抗ARP欺騙攻擊,對於Solaris系統來說,應該結合"禁止相應網路接頭做ARP解 析"和"使用靜態ARP表"的設置

2)在相對系統中禁止某個網路接頭做ARP解析(對抗ARP欺騙攻擊),可以做靜態ARP協議設置(因為對方不會響應ARP請求報文) 如:arp -s XXX.XXX.XX.X 08-00-20-a8-2e-ac
在絕大多數操作系統如:Unix,BSD,NT等,都可以結合"禁止相應網路 接頭做ARP解析"和"使用靜態ARP表"的設置來對抗ARP欺騙攻擊。而Linux系統,其靜態ARP表項不會被動態重新整理,所以不需要"禁止相應網路接頭做ARP解析"即可對抗ARP欺騙攻擊。


結尾:本文還較深入和直觀地介紹了ARP協議的基本原理與基本工作過程及ARP欺騙技術。以及其對策,如果你有什麼更好的ARP欺騙技術的對策,歡迎交流。謝謝。

此帖於 2006-07-14 03:56 AM 被 psac 編輯.
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次