季永煒
摘要:ARP是Address Resolution Protocol(地址轉(zhuǎn)換協(xié)議)的簡稱,是TCP/IP協(xié)議中網(wǎng)絡(luò)層中的協(xié)議之一。它的作用是完成IP地址和MAC(物理地址)間的地址轉(zhuǎn)換。
關(guān)鍵詞:
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)05-1019-03
1 ARP概述
ARP(Address Resolution Protocol,地址解析協(xié)議)是一個位于TCP/IP協(xié)議棧中的網(wǎng)絡(luò)層協(xié)議,對應(yīng)于ISO七層協(xié)議的數(shù)據(jù)鏈路層,負責(zé)將IP地址進行解析,轉(zhuǎn)換成對應(yīng)的MAC地址。ARP協(xié)議的主要功能就是通過目標設(shè)備的IP地址,以緩存表和廣播的形式查詢目標設(shè)備的MAC地址,以保證通信的進行。
2 ARP與ARP緩存表
在以太網(wǎng)協(xié)議中規(guī)定,局域網(wǎng)中的主機進行通信時,必須知道目標主機的以太網(wǎng)地址(MAC地址),而在TCP/IP協(xié)議中,網(wǎng)絡(luò)層和傳輸層只關(guān)心IP地址,數(shù)據(jù)鏈路層并不能識別IP地址,通過MAC地址來傳輸數(shù)據(jù)包。因此,IP數(shù)據(jù)包在局域網(wǎng)內(nèi)部傳輸時通過識別主機的MAC地址進行轉(zhuǎn)發(fā)的。這就需要一種方法,可以根據(jù)主機的IP地址來獲取其MAC地址,二者之間存在一種對應(yīng)關(guān)系,這就需要ARP協(xié)議了。
ARP協(xié)議就是所謂的地址解析協(xié)議,主要是進行目標IP地址和目標MAC地址的轉(zhuǎn)換。具體的說,當(dāng)ARP工作時,首先請求主機會發(fā)送一個以太網(wǎng)數(shù)據(jù)包,數(shù)據(jù)包中含有目標主機的IP地址,然后目標主機接收到數(shù)據(jù)包后,會進行解析,獲得數(shù)據(jù)包中的IP地址,并用包含IP地址和MAC地址對應(yīng)關(guān)系的數(shù)據(jù)包來應(yīng)答。因此,請求主機就獲得了目標主機的MAC地址,并保存在ARP緩存表中。緩存表的管理采用了高效的老化機制,增加新的內(nèi)容的同時,會刪除使用少的數(shù)據(jù),這樣可以在不增加緩存表長度的同時加快查詢速度。
2.1冒充"中間人"——ARP欺騙原理
ARP是用來將IP地址解析為MAC地址,ARP欺騙簡單來說就是冒名頂替其他計算機的MAC地址,從而捕獲發(fā)送給其他主機的數(shù)據(jù)包信息。
由上可知,以太網(wǎng)內(nèi)部是依靠MAC地址來傳輸數(shù)據(jù)包的,每臺主機(包括網(wǎng)關(guān))在傳輸數(shù)據(jù)包都會使用自己保存的ARP緩存表,此表中包含著經(jīng)常使用的IP地址和MAC地址的對應(yīng)關(guān)系。一般情況下,ARP緩存表是有效的,在以太網(wǎng)通信時,可以保證其數(shù)據(jù)的傳輸。因此,當(dāng)兩臺主機通過網(wǎng)關(guān)進行數(shù)據(jù)傳輸時,其它的主機是不能捕獲到他們的通信信息的。
但是,這并意味這ARP協(xié)議的完善,相反,ARP協(xié)議有一個很大的弊端,那就是當(dāng)主機接收到ARP的應(yīng)答包后,不能驗證這個請求是否發(fā)送過,會用接收到的應(yīng)答包中與IP地址對應(yīng)的MAC地址來替換緩存表里的舊信息。因此,這個弊端就可以使一臺主機來捕獲其他主機主機之間的數(shù)據(jù)通信。
其具體過程是,首先,主機C向主機A發(fā)送ARP應(yīng)答包,包含IP地址192.168.2.1對應(yīng)的MAC地址是xx-xx-xx-xx-xx-01。主機A接收后不會去驗證收到的數(shù)據(jù)包,而是將自己緩存表中與IP地址192.168.2.1對應(yīng)的MAC地址替換成xx-xx-xx-xx-xx-01。與此同時,C也會向網(wǎng)關(guān)1發(fā)送同樣地ARP應(yīng)答包,包含IP地址192.168.3.1的MAC地址是xx-xx-xx-xx-xx-01。同樣,網(wǎng)關(guān)1會將自己緩存表中與IP地址192.168.3.1對應(yīng)的MAC地址替換成xx-xx-xx-xx-xx-01。
這樣,主機A的ARP緩存表就發(fā)生了改變,當(dāng)主機A和主機B進行數(shù)據(jù)通信時,它把應(yīng)該發(fā)送給網(wǎng)關(guān)1(192.168.3.1)的數(shù)據(jù)包發(fā)送到主機C(xx-xx-xx-xx-xx-01)。C接收到數(shù)據(jù)包后,再轉(zhuǎn)發(fā)給網(wǎng)關(guān)1。當(dāng)B發(fā)送的數(shù)據(jù)包傳輸?shù)骄W(wǎng)關(guān)1后,網(wǎng)關(guān)1經(jīng)過ARP解析,將本該發(fā)送給192.168.3.1的數(shù)據(jù)包,發(fā)送給主機C(xx-xx-xx-xx-xx-01),C收到數(shù)據(jù)包后,經(jīng)過ARP解析,傳輸給主機A,完成了A與B的成功通信。主機C利用ARP協(xié)議的缺陷進行了ARP欺騙,捕獲了其傳輸?shù)臄?shù)據(jù)。
因此,主機B欺騙了網(wǎng)關(guān)1,讓網(wǎng)關(guān)1以為主機B是主機A,同時,主機B又欺騙了主機A,讓主機A以為主機B是網(wǎng)關(guān)1。主機B同時對主機A和網(wǎng)關(guān)1進行欺騙,充當(dāng)"中間人",捕獲了主機A與網(wǎng)關(guān)1之間的數(shù)據(jù)交換內(nèi)容。
要想實現(xiàn)有效的ARP欺騙,最終的就是必須進行雙向欺騙。欺騙者不但要欺騙網(wǎng)關(guān),也應(yīng)欺騙主機。只有兩者都被欺騙,欺騙者才能捕獲到所需要的信息,否則只是徒勞。
2.2 ARP欺騙的代碼實現(xiàn)
3 WinPcap簡述
WinPcap是基于Win32平臺,可以成功捕獲數(shù)據(jù)包,并有效進行網(wǎng)絡(luò)分析的體系結(jié)構(gòu)。WinPcap可以完成很多功能,其核心主要有幾下機電:
1)有效捕獲數(shù)據(jù)通信的原始數(shù)據(jù)包,包括主機之間和其他設(shè)備(共享媒介)上進行交換的數(shù)據(jù)包;
2)在數(shù)據(jù)包發(fā)送給某應(yīng)用程序前,根據(jù)自定義的規(guī)則過濾數(shù)據(jù)包;
3)在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)包;
4)收集網(wǎng)絡(luò)數(shù)據(jù)通信中的統(tǒng)計信息。
只有在Win32內(nèi)核中安裝網(wǎng)絡(luò)設(shè)備驅(qū)動程序,并增加需要的動態(tài)鏈接庫DLL,才能實現(xiàn)上述的功能。
WinPcap包括了一個內(nèi)核級的數(shù)據(jù)包過濾器,一個低層動態(tài)鏈接庫(packet.dll),一個高層的,依賴于系統(tǒng)的庫(wpcap.dll)。
3.1 ARP攻擊核心函數(shù)的實現(xiàn)
根據(jù)前面幾節(jié)闡述的ARP攻擊原理,我們首先需要構(gòu)建一個函數(shù)用于實現(xiàn)對ARP緩存的操作如圖1所示其中部分以太網(wǎng)和ARP等協(xié)議數(shù)據(jù)結(jié)構(gòu)形式構(gòu)建不在此闡述。
圖1
參考WinPcap例子構(gòu)建函數(shù)用于打開相應(yīng)的網(wǎng)卡句柄,然后設(shè)置網(wǎng)卡的類型為混雜模式,使網(wǎng)卡能接受以太網(wǎng)上的廣播數(shù)據(jù)包,函數(shù)代碼實現(xiàn)如圖2所示。
圖2
3.2 Sniffer定位ARP欺騙主機
ARP欺騙主機的查找
首先搭建實驗環(huán)境如圖3所示。
圖3
其中紅色標記為欺騙主機,按照ARP欺騙的基本原理,數(shù)據(jù)包應(yīng)通過紅色主機轉(zhuǎn)發(fā),所以大量數(shù)據(jù)包都集中在紅色的攻擊主機上。通過數(shù)據(jù)抓包如圖4所示(圖中單位內(nèi)部服務(wù)器地址清除)。
圖4
通過上圖分析192.168.0.144流量存在異常,同理通過MAC地址流量圖也可以發(fā)現(xiàn)00-21-98-11-33-56也存在流量異常;再次通過192.168.0.96截獲的數(shù)據(jù)包可以發(fā)現(xiàn)數(shù)據(jù)都是通過192.168.0.144和00-21-98-11-33-56轉(zhuǎn)發(fā)的,因此可以基本判斷紅色機器為ARP攻擊主機。
在局域網(wǎng)中任意兩臺計算機之間的通信,或者局域網(wǎng)中的計算機將IP數(shù)據(jù)包轉(zhuǎn)發(fā)給網(wǎng)關(guān)設(shè)備時,網(wǎng)卡先在緩存中查找目標IP地址相對應(yīng)的MAC(物理地址),以填充物理幀的目的地址。ARP欺騙和攻擊正是利用了這一點,將自身的MAC地址填入正常的ARP協(xié)議緩存表中,從而達到欺騙和攻擊的目的。通過將IP地址和MAC地址進行靜態(tài)綁定是有效防范ARP攻擊的方法之一。
參考文獻:
[1]李濤.網(wǎng)絡(luò)安全概論[M].北京:電子工業(yè)出版社,2004;
[2]郝文江,李玉霞.基于計算機技術(shù)對涉密信息的保護[J].通信技術(shù),2007(12).