萬盛學電腦網

 萬盛學電腦網 >> 安全資訊防護 >> MAC地址與IP地址綁定策略的破解

MAC地址與IP地址綁定策略的破解


  1 引言
  對“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的。
  

MAC地址與IP地址綁定策略的破解

.


  試驗需要修改主機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來說則是一覽無遺了。
  
  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位,每個應用程序發送的第一個報文的序列號是嚴格按照隨機的原則產
copyright © 萬盛學電腦網 all rights reserved