1 引言
對“IP地址盜用”的解決方案絕大多數(shù)都是采取MAC與IP地址綁定策略,這種做法是十分危險的,本文將就這個問題進行探討。在這里需要聲明的是,本文是處于對對MAC與IP地址綁定策略安全的憂慮,不帶有任何黑客性質(zhì)。
1.1 為什么要綁定MAC與IP 地址
影響網(wǎng)絡(luò)安全的因素很多,IP地址盜用或地址欺騙就是其中一個常見且危害極大的因素。現(xiàn)實中,許多網(wǎng)絡(luò)應(yīng)用是基于IP的,比如流量統(tǒng)計、賬號控制等都將IP地址作為標志用戶的一個重要的參數(shù)。如果有人盜用了合法地址并偽裝成合法用戶,網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)就可能被破壞、竊聽,甚至盜用,造成無法彌補的損失。
盜用外部網(wǎng)絡(luò)的IP地址比較困難,因為路由器等網(wǎng)絡(luò)互連設(shè)備一般都會設(shè)置通過各個端口的IP地址范圍,不屬于該IP地址范圍的報文將無法通過這些互連設(shè)備。但如果盜用的是Ethernet內(nèi)部合法用戶的IP地址,這種網(wǎng)絡(luò)互連設(shè)備顯然無能為力了。“道高一尺,魔高一丈”,對于Ethernet內(nèi)部的IP地址被盜用,當然也有相應(yīng)的解決辦法。綁定MAC地址與IP地址就是防止內(nèi)部IP盜用的一個常用的、簡單的、有效的措施。
1.2 MAC與IP 地址綁定原理
IP地址的修改非常容易,而MAC地址存儲在網(wǎng)卡的EEPROM中,而且網(wǎng)卡的MAC地址是唯一確定的。因此,為了防止內(nèi)部人員進行非法IP盜用(例如盜用權(quán)限更高人員的IP地址,以獲得權(quán)限外的信息),可以將內(nèi)部網(wǎng)絡(luò)的IP地址與MAC地址綁定,盜用者即使修改了IP地址,也因MAC地址不匹配而盜用失敗:而且由于網(wǎng)卡MAC地址的唯一確定性,可以根據(jù)MAC地址查出使用該MAC地址的網(wǎng)卡,進而查出非法盜用者。
目前,很多單位的內(nèi)部網(wǎng)絡(luò),尤其是學校校園網(wǎng)都采用了MAC地址與IP地址的綁定技術(shù)。許多防火墻(硬件防火墻和軟件防火墻)為了防止網(wǎng)絡(luò)內(nèi)部的IP地址被盜用,也都內(nèi)置了MAC地址與IP地址的綁定功能。
從表面上看來,綁定MAC地址和IP地址可以防止內(nèi)部IP地址被盜用,但實際上由于各層協(xié)議以及網(wǎng)卡驅(qū)動等實現(xiàn)技術(shù),MAC地址與IP地址的綁定存在很大的缺陷,并不能真正防止內(nèi)部IP地址被盜用。
2 破解MAC與IP地址綁定策略
2.1 IP地址和MAC地址簡介
現(xiàn)行的TCP/IP網(wǎng)絡(luò)是一個四層協(xié)議結(jié)構(gòu),從下往上依次為鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
Ethernet協(xié)議是鏈路層協(xié)議,使用的地址是MAC地址。MAC地址是Ethernet網(wǎng)卡在Ethernet中的硬件標志,網(wǎng)卡生產(chǎn)時將其存于網(wǎng)卡的EEPROM中。網(wǎng)卡的MAC地址各不相同,MAC地址可以唯一標志一塊網(wǎng)卡。在Ethernet上傳輸?shù)拿總€報文都含有發(fā)送該報文的網(wǎng)卡的MAC地址。
Ethernet根據(jù)Ethernet報文頭中的源MAC地址和目的MAC來識別報文的發(fā)送端和接收端。IP協(xié)議應(yīng)用于網(wǎng)絡(luò)層,使用的地址為IP地址。使用IP協(xié)議進行通訊,每個IP報文頭中必須含有源IP和目的IP地址,用以標志該IP報文的發(fā)送端和接收端。在Ethernet上使用IP協(xié)議傳輸報文時,IP報文作為Ethernet報文的數(shù)據(jù)。IP地址對于Ethernet交換機或處理器是透明的。用戶可以根據(jù)實際網(wǎng)絡(luò)的需要為網(wǎng)卡配置一個或多個IP地址。MAC地址和IP地址之間并不存在一一對應(yīng)的關(guān)系。
MAC地址存儲在網(wǎng)卡的EEPROM中并且唯一確定,但網(wǎng)卡驅(qū)動在發(fā)送Ethernet報文時,并不從EEPROM中讀取MAC地址,而是在內(nèi)存中來建立一塊緩存區(qū),Ethernet報文從中讀取源MAC地址。而且,用戶可以通過操作系統(tǒng)修改實際發(fā)送的Ethernet報文中的源MAC地址。既然MAC地址可以修改,那么MAC地址與IP地址的綁定也就失去了它原有的意義。
2.2 破解方案
下圖是破解試驗的結(jié)構(gòu)示意圖。其內(nèi)部服務(wù)器和外部服務(wù)器都提供Web服務(wù),防火墻中實現(xiàn)了MAC地址和IP地址的綁定。報文中的源MAC地址與1P地址對如果無法與防火墻中設(shè)置的MAC地址與1P地址對匹配,將無法通過防火墻。主機2和內(nèi)部服務(wù)器都是內(nèi)部網(wǎng)絡(luò)中的合法機器;主機1是為了做實驗而新加入的機器。安裝的操作系統(tǒng)是W2000企業(yè)版,網(wǎng)卡是3Com的。

試驗需要修改主機1中網(wǎng)卡的MAC和IP地址為被盜用設(shè)備的MAC和IP地址。首先,在控制面板中選擇“網(wǎng)絡(luò)和撥號連接”,選中對應(yīng)的網(wǎng)卡并點擊鼠標右鍵,選擇屬性,在屬性頁的“常規(guī)”頁中點擊“配置”按鈕。在配置屬性頁中選擇“高級”,再在“屬性”欄中選擇“Network Address”,在“值”欄中選中輸人框,然后在輸人框中輸人被盜用設(shè)備的MAC地址,MAC地址就修改成功了。
然后再將IP地址配置成被盜用設(shè)備的IP地址。盜用內(nèi)部客戶機IP地址:將主機1的MAC地址和IP地址分別修改為主機2的MAC地址和IP地址。主機1可以訪問外部服務(wù)器,能夠順利地通過防火墻,訪問權(quán)限與主機2沒有分別。而且,與此同時主機2也可以正常地訪問外部服務(wù)器,完全不受主機1的影響。無論是主機2還是防火墻都察覺不到主機1的存在。主機1
如果訪問內(nèi)部服務(wù)器,根本無需通過防火墻,更是暢通無阻了。
盜用內(nèi)部服務(wù)器IP地址:將主機1的MAC地址和U地址修改為內(nèi)部服務(wù)器的MAC地址和IP地址。主機1也提供Web服務(wù)。為了使效果更明顯,主機1上提供的Web服務(wù)內(nèi)容與內(nèi)部服務(wù)器提供的內(nèi)容不同。
因為在實際的實驗中主機1與主機2連在同一個HUB上,主機2的訪問請求總是先被主機1響應(yīng),主機2期望訪問的是內(nèi)部服務(wù)器,得到的卻總是主機1提供的內(nèi)容。更一般地,主機2如果試圖訪問內(nèi)部服務(wù)器,獲得的到底是主機1提供的內(nèi)容還是內(nèi)部服務(wù)器提供的內(nèi)容具有隨機性,要看它的訪問請求首先被誰響應(yīng),在后面的分析中我們將進一步對此進行闡述。
盜用服務(wù)器的MAC和IP危害可能更大,如果主機1提供的Web內(nèi)容和內(nèi)部服務(wù)器中的內(nèi)容一樣,那么主機2將無法識別它訪問的到底是哪個機器;如果Web內(nèi)容中要求輸人賬號、密碼等信息,那么這些信息對于主機1來說則是一覽無遺了。
3 破解成功的原因
上面的實驗驗證了綁定MAC地址與IP地址的確存在很大的缺陷,無法有效地防止內(nèi)部IP地址被盜用。接下來,將從理論上對該缺陷進行詳細的分析。
缺陷存在的前提是網(wǎng)卡的混雜接收模式,所謂混雜接收模式是指網(wǎng)卡可以接收網(wǎng)絡(luò)上傳輸?shù)乃袌笪模瑹o論其目的MAC地址是否為該網(wǎng)卡的MAC地址。正是由于網(wǎng)卡支持混雜模式,才使網(wǎng)卡驅(qū)動程序支持MAC地址的修改成為可能;否則,就算修改了MAC地址,但是網(wǎng)卡根本無法接收相應(yīng)地址的報文,該網(wǎng)卡就變得只能發(fā)送,無法接收,通信也就無法正常進行了。
MAC地址可以被盜用的直接原因是網(wǎng)卡驅(qū)動程序發(fā)送Ethernet報文的實現(xiàn)機制。Ethernet報文中的源MAC地址是驅(qū)動程序負責填寫的,但驅(qū)動程序并不從網(wǎng)卡的EEPROM中讀取MAC,而是在內(nèi)存中建立一個MAC地址緩存區(qū)。網(wǎng)卡初始化的時候?qū)EPROM中的內(nèi)容讀入到該緩存區(qū)。如果將該緩存區(qū)中的內(nèi)容修改為用戶設(shè)置的MAC地址,以后發(fā)出去的Ethernet報文的源地址就是修改后的MAC地址了。
如果僅僅是修改MAC地址,地址盜用并不見得能夠得逞。Ethernet是基于廣播的,Ethernet網(wǎng)卡都能監(jiān)聽到局域網(wǎng)中傳輸?shù)乃袌笪模蔷W(wǎng)卡只接收那些目的地址與自己的MAC地址相匹配的Ethernet報文。如果有兩臺具有相同MAC地址的主機分別發(fā)出訪問請求,而這兩個訪問請求的響應(yīng)報文對于這兩臺主機都是匹配的,那么這兩臺主機就不只接收到自己需要的內(nèi)容,而且還會接收到目的為另外一臺同MAC主機的內(nèi)容。
按理說,兩臺主機因為接收了多余的報文后,都應(yīng)該無法正常工作,盜用馬上就會被察覺,盜用也就無法繼續(xù)了;但是,在實驗中地址被盜用之后,各臺實驗設(shè)備都可以互不干擾的正常工作。這又是什么原因呢?答案應(yīng)該歸結(jié)于上層使用的協(xié)議。
目前,網(wǎng)絡(luò)中最常用的協(xié)議是TCP/IP協(xié)議,網(wǎng)絡(luò)應(yīng)用程序一般都是運行在TCP或者UDP之上。例如,實驗中Web服務(wù)器采用的HTTP協(xié)議就是基于TCP的。在TCP或者UDP中,標志通信雙方的不僅僅是IP地址,還包括端口號。在一般的應(yīng)用中,用戶端的端口號并不是預(yù)先設(shè)置的,而是協(xié)議根據(jù)一定的規(guī)則生成的,具有隨機性。像上面利用IE來訪問Web服務(wù)器就是這樣。UDP或者TCP的端口號為16位二進制數(shù),兩個16位的隨機數(shù)字相等的幾率非常小,恰好相等又談何容易?兩臺主機雖然MAC地址和IP地址相同,但是應(yīng)用端口號不同,接收到的多余數(shù)據(jù)由于在TCP/UDP層找不到匹配的端口號,被當成無用的數(shù)據(jù)簡單地丟棄了,而TCP/UDP層的處理對于用戶層來說是透明的;所以用戶可以“正確無誤”地正常使用相應(yīng)的服務(wù),而不受地址盜用的干擾。
當然,某些應(yīng)用程序的用戶端口號可能是用戶或者應(yīng)用程序自己設(shè)置的,而不是交給協(xié)議來隨機的生成。那么,結(jié)果又會如何呢?例如,在兩臺MAC地址和IP地址都相同的主機上,啟動了兩個端口相同的應(yīng)用程序,這兩個應(yīng)用是不是就無法正常工作了呢?其實不盡然。
如果下層使用的是UDP協(xié)議,兩個應(yīng)用將互相干擾無法正常工作。如果使用的是TCP協(xié)議,結(jié)果就不一樣了。因為TCP是面向連接的,為了實現(xiàn)重發(fā)機制,保證數(shù)據(jù)的正確傳輸,TCP引入了報文序列號和接收窗口的概念。在上述的端口號匹配的報文中,只有那些序列號的偏差屬于接收窗口之內(nèi)的報文才會被接收,否則,會被認為是過期報文而丟棄。TCP協(xié)議中的報文的序列號有32位,每個應(yīng)用程序發(fā)送的第一個報文的序列號是嚴格按照隨機的原則產(chǎn)生的,以后每個報文的序列號依次加1。
窗口的大小有16位,也就是說窗口最大可以是216,而序列號的范圍是232,主機期望接收的TCP數(shù)據(jù)的序列號正好也處于對方的接收范圍之內(nèi)的概率為1/216,可謂小之又小。 TCP的序列號本來是為了實現(xiàn)報文的正確傳輸,現(xiàn)在卻成了地址盜用的幫兇。
4 解決MAC與IP地址綁定被破解的方法
解決MAC與IP地址綁定被破解的方法很多,,主要以下幾種。
交換機端口、MAC地址和IP地址三者綁定的方法;代理服務(wù)與防火墻相結(jié)合的方法;用PPPoE協(xié)議進行用戶認證的方法;基于目錄服務(wù)策略的方法;統(tǒng)一身份認證與計費軟件相結(jié)合的方法等。在這里筆者尤其推薦最后一種方法,這種方法是將校園網(wǎng)辦公自動化系統(tǒng)和網(wǎng)絡(luò)計費軟件結(jié)合在一起而實現(xiàn)的,這在校園網(wǎng)信息化建設(shè)的今天具有很強的實踐性。