查看單個文章
舊 2006-09-13, 06:22 AM   #1
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 金幣
預設 MAC卡位址與IP位址綁定策略的破解

對「IP位址盜用」的解決方案絕大多數都是採取MAC與IP位址綁定策略,這種做法是十分危險的,本文將就這個問題進行探討。在這裡需要聲明的是,本文是處於對對MAC與IP位址綁定策略安全的憂慮,不帶有任何黑客性質。


1.1 為什麼要綁定MAC與IP 位址

  影響網路安全的因素很多,IP位址盜用或位址欺騙就是其中一個常見且危害極大的因素。現實中,許多網路應用是基於IP的,比如流量統計、賬號控制等都將IP位址作為標誌用戶的一個重要的參數。如果有人盜用了合法位址並偽裝成合法用戶,網路上傳輸的資料就可能被破壞、竊聽,甚至盜用,造成無法彌補的損失。

  盜用外部網路的IP位址比較困難,因為路由器等網路互連設備一般都會設置通過各個連接阜的IP位址範圍,不屬於該IP位址範圍的報文將無法通過這些互連設備。但如果盜用的是Ethernet內部合法用戶的IP位址,這種網路互連設備顯然無能為力了。「道高一尺,魔高一丈」,對於Ethernet內部的IP位址被盜用,當然也有相應的解決辦法。綁定MAC卡位址與IP位址就是防止內部IP盜用的一個常用的、簡單的、有效的措施。


1.2 MAC與IP 位址綁定原理

  IP位址的修改非常容易,而MAC卡位址存儲在網卡的EEPROM中,而且網卡的MAC卡位址是唯一確定的。因此,為了防止內部人員進行非法IP盜用(例如盜用權限更高人員的IP位址,以獲得權限外的訊息),可以將內部網路的IP位址與MAC卡位址綁定,盜用者即使修改了IP位址,也因MAC卡位址不匹配而盜用失敗:而且由於網卡MAC卡位址的唯一確定性,可以根據MAC卡位址查出使用該MAC卡位址的網卡,進而查出非法盜用者。

  目前,很多單位的內部網路,尤其是學校校園網都採用了MAC卡位址與IP位址的綁定技術。許多防火牆(硬體防火牆和軟件防火牆)為了防止網路內部的IP位址被盜用,也都內置了MAC卡位址與IP位址的綁定功能。

  從表面上看來,綁定MAC卡位址和IP位址可以防止內部IP位址被盜用,但實際上由於各層協議以及網卡驅動等實現技術,MAC卡位址與IP位址的綁定存在很大的缺陷,並不能真正防止內部IP位址被盜用。


2 破解MAC與IP位址綁定策略

2.1 IP位址和MAC卡位址簡介

  現行的TCP/IP網路是一個四層協議結構,從下往上依次為鏈路層、網路層、傳輸層和應用層。

  Ethernet協議是鏈路層協議,使用的位址是MAC卡位址。MAC卡位址是Ethernet網卡在Ethernet中的硬體標誌,網卡生產時將其存於網卡的EEPROM中。網卡的MAC卡位址各不相同,MAC卡位址可以唯一標誌一塊網卡。在Ethernet上傳輸的每個報文都含有發送該報文的網卡的MAC卡位址。

  Ethernet根據Ethernet報文頭中的源MAC卡位址和目的MAC來識別報文的發送端和接收端。IP協議應用於網路層,使用的位址為IP位址。使用IP協議進行通訊,每個IP報文頭中必須含有源IP和目的IP位址,用以標誌該IP報文的發送端和接收端。在Ethernet上使用IP協議傳輸報文時,IP報文作為Ethernet報文的資料。IP位址對於Ethernet交換機或處理器是透明的。用戶可以根據實際網路的需要為網卡配置一個或多個IP位址。MAC卡位址和IP位址之間並不存在一一對應的關係。

  MAC卡位址存儲在網卡的EEPROM中並且唯一確定,但網卡驅動在發送Ethernet報文時,並不從EEPROM中讀取MAC卡位址,而是在記憶體中來建立一塊快取記憶體區,Ethernet報文從中讀取源MAC卡位址。而且,用戶可以通過操作系統修改實際發送的Ethernet報文中的源MAC卡位址。既然MAC卡位址可以修改,那麼MAC卡位址與IP位址的綁定也就失去了它原有的意義。

2.2 破解方案

  下圖是破解試驗的結構示意圖。其內部服務器和外部服務器都提供Web服務,防火牆中實現了MAC卡位址和IP位址的綁定。報文中的源MAC卡位址與1P位址對如果無法與防火牆中設置的MAC卡位址與1P位址對匹配,將無法通過防火牆。主機2和內部服務器都是內部網路中的合法機器;主機1是為了做實驗而新加入的機器。安裝的操作系統是W2000企業版,網卡是3Com的。

  試驗需要修改主機1中網卡的MAC和IP位址為被盜用設備的MAC和IP位址。首先,在控制台中選擇「網路和撥號連接」,選中對應的網卡並點擊滑鼠右鍵,選擇內容,在內容頁的「一般」頁中點擊「配置」按鍵。在配置內容頁中選擇「高階」,再在「內容」欄中選擇「Network Address」,在「值」欄中選中輸人框,然後在輸人框中輸人被盜用設備的MAC卡位址,MAC卡位址就修改成功了。

  然後再將IP位址配置成被盜用設備的IP位址。盜用內部客戶機IP位址:將主機1的MAC卡位址和IP位址分別修改為主機2的MAC卡位址和IP位址。主機1可以訪問外部服務器,能夠順利地通過防火牆,訪問權限與主機2沒有分別。而且,與此同時主機2也可以正常地訪問外部服務器,完全不受主機1的影響。無論是主機2還是防火牆都察覺不到主機1的存在。主機1如果訪問內部服務器,根本無需通過防火牆,更是暢通無阻了。

  盜用內部服務器IP位址:將主機1的MAC卡位址和U位址修改為內部服務器的MAC卡位址和IP位址。主機1也提供Web服務。為了使效果更明顯,主機1上提供的Web服務內容與內部服務器提供的內容不同。

  因為在實際的實驗中主機1與主機2連在同一個HUB上,主機2的訪問請求總是先被主機1響應,主機2期望訪問的是內部服務器,得到的卻總是主機1提供的內容。更一般地,主機2如果試圖訪問內部服務器,獲得的到底是主機1提供的內容還是內部服務器提供的內容具有隨機性,要看它的訪問請求首先被誰響應,在後面的分析中我們將進一步對此進行闡述。

  盜用服務器的MAC和IP危害可能更大,如果主機1提供的Web內容和內部服務器中的內容一樣,那麼主機2將無法識別它訪問的到底是哪個機器;如果Web內容中要求輸人賬號、密碼等訊息,那麼這些訊息對於主機1來說則是一覽無遺了。

http://www.itlearner.com/article/UploadFiles/2005/07180951734.jpg
3 破解成功的原因

  上面的實驗驗證了綁定MAC卡位址與IP位址的確存在很大的缺陷,無法有效地防止內部IP位址被盜用。接下來,將從理論上對該缺陷進行詳細的分析。

  缺陷存在的前提是網卡的混雜接收模式,所謂混雜接收模式是指網卡可以接收網路上傳輸的所有報文,無論其目的MAC卡位址是否為該網卡的MAC卡位址。正是由於網卡支持混雜模式,才使網卡驅動程式支持MAC卡位址的修改成為可能;否則,就算修改了MAC卡位址,但是網卡根本無法接收相應位址的報文,該網卡就變得只能發送,無法接收,通信也就無法正常進行了。

  MAC卡位址可以被盜用的直接原因是網卡驅動程式發送Ethernet報文的實現機制。Ethernet報文中的源MAC卡位址是驅動程式負責填寫的,但驅動程式並不從網卡的EEPROM中讀取MAC,而是在記憶體中建立一個MAC卡位址快取記憶體區。網卡初始化的時候將EEPROM中的內容讀入到該快取記憶體區。如果將該快取記憶體區中的內容修改為用戶設置的MAC卡位址,以後發出去的Ethernet報文的源位址就是修改後的MAC卡位址了。

  如果僅僅是修改MAC卡位址,位址盜用並不見得能夠得逞。Ethernet是基於廣播的,Ethernet網卡都能監聽到局域網中傳輸的所有報文,但是網卡只接收那些目的位址與自己的MAC卡位址相匹配的Ethernet報文。如果有兩台具有相同MAC卡位址的主機分別發出訪問請求,而這兩個訪問請求的響應報文對於這兩台主機都是匹配的,那麼這兩台主機就不只接收到自己需要的內容,而且還會接收到目的為另外一台同MAC主機的內容。

  按理說,兩台主機因為接收了多餘的報文後,都應該無法正常工作,盜用馬上就會被察覺,盜用也就無法繼續了;但是,在實驗中位址被盜用之後,各台實驗設備都可以互不干擾的正常工作。這又是什麼原因呢?答案應該歸結於上層使用的協議。

目前,網路中最常用的協議是TCP/IP協議,網路應用程式一般都是執行在TCP或者UDP之上。例如,實驗中Web服務器採用的HTTP協議就是基於TCP的。在TCP或者UDP中,標誌通信雙方的不僅僅是IP位址,還包括連接阜號。在一般的應用中,用戶端的連接阜號並不是預先設置的,而是協議根據一定的規則產生的,具有隨機性。像上面利用IE來訪問Web服務器就是這樣。UDP或者TCP的連接阜號為16位二進制數,兩個16位的隨機數位相等的幾率非常小,恰好相等又談何容易?兩台主機雖然MAC卡位址和IP位址相同,但是應用連接阜號不同,接收到的多餘資料由於在TCP/UDP層找不到匹配的連接阜號,被當成無用的資料簡單地丟棄了,而TCP/UDP層的處理對於用戶層來說是透明的;所以用戶可以「正確無誤」地正常使用相應的服務,而不受位址盜用的干擾。

  當然,某些應用程式的用戶連接阜號可能是用戶或者應用程式自己設置的,而不是交給協議來隨機的產生。那麼,結果又會如何呢?例如,在兩台MAC卡位址和IP位址都相同的主機上,啟動了兩個連接阜相同的應用程式,這兩個應用是不是就無法正常工作了呢?其實不盡然。

  如果下層使用的是UDP協議,兩個應用將互相干擾無法正常工作。如果使用的是TCP協議,結果就不一樣了。因為TCP是面向連接的,為了實現重發機制,保證資料的正確傳輸,TCP引入了報文序列號和接收視窗的概念。在上述的連接阜號匹配的報文中,只有那些序列號的偏差屬於接收視窗之內的報文才會被接收,否則,會被認為是過期報文而丟棄。TCP協議中的報文的序列號有32位,每個應用程式發送的第一個報文的序列號是嚴格按照隨機的原則產生的,以後每個報文的序列號依次加1。

  視窗的大小有16位,也就是說視窗最大可以是216,而序列號的範圍是232,主機期望接收的TCP資料的序列號正好也處於對方的接收範圍之內的概率為1/216,可謂小之又小。 TCP的序列號本來是為了實現報文的正確傳輸,現在卻成了位址盜用的幫兇。


4 解決MAC與IP位址綁定被破解的方法

  解決MAC與IP位址綁定被破解的方法很多,主要以下幾種。

  交換機連接阜、MAC卡位址和IP位址三者綁定的方法;代理服務與防火牆相結合的方法;用PPPoE協議進行用戶認證的方法;基於目錄服務策略的方法;統一身份認證與計費軟件相結合的方法等(這些方法的實現原理和過程可以參考拙作《校園網IP位址盜用解決方案》)。在這裡筆者尤其推薦最後一種方法,這種方法是將校園網辦公自動化系統和網路計費軟件結合在一起而實現的,這在校園網訊息化建設的今天具有很強的實踐性。

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