阮清強
(重慶郵電大學 通信與信息工程學院, 重慶 400065)
隨著互聯(lián)網(wǎng)的廣泛應用,內(nèi)部網(wǎng)絡的安全問題逐漸成為人們關注的焦點。目前,ARP攻擊是局域網(wǎng)的主要攻擊手段之一,可以用來監(jiān)聽特定主機的通信數(shù)據(jù),甚至可以惡意破壞指定主機與外部的通信,并且具有隱蔽性、隨機性的特點,給網(wǎng)絡安全運行帶來巨大隱患,是局域網(wǎng)安全的首要威脅[1]。因此,如何準確、高效、快速地檢測出網(wǎng)絡中是否存在ARP攻擊,并對攻擊主機進行精確的定位,是每個網(wǎng)絡管理者都必須要解決的一個難題。本文提出了一種檢測和定位的方法,利用該方法可以檢測到網(wǎng)絡中存在的絕大多數(shù)ARP攻擊包并對發(fā)送攻擊包的主機進行定位。
ARP(Address Resolution Protocol,地址解析協(xié)議)是TCP/IP協(xié)議族中的一個重要協(xié)議,它負責將網(wǎng)絡層(IP層,OSI的第三層)地址轉(zhuǎn)換為數(shù)據(jù)鏈路層(MAC層,OSI的第二層)地址。在網(wǎng)絡交換機中維護的ARP表支持IP地址和MAC地址的一一對應關系。提供2者的相互解析。在目前廣泛使用的以太網(wǎng)中,ARP的功能是提供從32位的IP地址到48位的硬件地址(MAC地址)的轉(zhuǎn)換。
在基于以太網(wǎng)技術的局域網(wǎng)中,ARP協(xié)議是建立在各主機之間相互信任的基礎上的,根據(jù)ARP協(xié)議的實現(xiàn)機制,存在以下可以利用的缺陷:(1)ARP高速緩存根據(jù)所接收到的ARP協(xié)議包隨時進行動態(tài)更新;(2)ARP協(xié)議沒有連接的概念,任意主機即使在沒有ARP請求的時候也可以作出應答;(3)ARP協(xié)議沒有認證機制,只要接收到的協(xié)議包格式是正確的,主機就無條件地根據(jù)協(xié)議包的內(nèi)容刷新本機ARP緩存,并不檢查該協(xié)議包的合法性[2]。
ARP欺騙攻擊的核心思想就是向目標主機發(fā)送偽造ARP請求包或應答包,并使目標主機接收該數(shù)據(jù)包中偽造的IP地址與MAC地址之間的映射對,以此來更新目標主機的ARP緩存,從而達到欺騙的目的。
ARP攻擊檢測與定位的步驟如圖1所示。
首先利用WinPcap獲取局域網(wǎng)中的所有ARP數(shù)據(jù)包。鑒于目前絕大多數(shù)局域網(wǎng)都采用交換機進行組網(wǎng),因此,為了捕捉到所有的ARP數(shù)據(jù)包,必須將檢測軟件部署在交換機的鏡像端口,并將主機網(wǎng)卡設置成為混雜模式。
圖1 ARP攻擊檢測與定位流程圖
在ARP數(shù)據(jù)包中,其以太頭部和ARP分組中都包含了本機的MAC地址,對于正常的ARP數(shù)據(jù)包,二者應該是一致的。而許多攻擊者為了隱藏攻擊主機,往往會在數(shù)據(jù)包中插入虛假的地址,這就造成了許多ARP攻擊包中二者不一致的情況。因此,如果發(fā)現(xiàn)一個ARP數(shù)據(jù)包中的以太頭部和ARP分組中的MAC地址不一致,則可以認定這是一個ARP攻擊包。
在實際網(wǎng)絡中,一些主機的IP地址和MAC地址通常是固定的,將這些
流程如圖2所示。在系統(tǒng)中動態(tài)地維護2個隊列,一個請求隊列和一個應答隊列。當接收到的ARP數(shù)據(jù)包為請求包時,將其加入到請求隊列。當接收到的數(shù)據(jù)包為應答包時,首先在請求隊列中查看是否存在相應的請求包,如果不存在,說明該包是沒有請求的應答包,是一個偽造包。如果存在相應的請求包,則在應答隊列中查看是否存在相應的應答包,如果存在,說明在該包之前已經(jīng)接收到相應的應答包,則其中一個應答包必定為偽造包。如果在應答隊列中不存在相應的應答包,則將請求隊列中相應的項刪除,添加到應答隊列中。
圖2 偽造包分析流程圖
首先讀取交換機的Cache,從中查找攻擊主機的IP地址、MAC地址和對應的交換機端口,將該信息提交給網(wǎng)絡管理員并保存到系統(tǒng)日志,進行下一步的處理。
在Windows系統(tǒng)中,利用WinPcap開發(fā)包實現(xiàn)了這種檢測和定位方法。利用ArpSpoof工具和自己編寫ARP偽造包發(fā)送程序,在2種不同的網(wǎng)絡環(huán)境下對軟件進行了測試:
在單個交換機的小型局域網(wǎng)中,該軟件運行良好,能夠檢測到絕大多數(shù)ARP攻擊包,并能向系統(tǒng)報告發(fā)送攻擊數(shù)據(jù)包的主機的詳細信息,包括MAC地址、IP地址和交換機端口,根據(jù)這些信息,網(wǎng)絡管理員能夠很方便地查找到攻擊主機的具體位置并進行處理。
在多個交換機級聯(lián)組成的局域網(wǎng)中,將裝有該軟件的主機接到最上一級的交換機鏡像端口上,測試結果表明,當前交換機下的某臺主機攻擊當前交換機下的其它主機時,軟件能夠檢測到攻擊并能準確定位;當前交換機下的主機攻擊其它交換機下的主機時,軟件能檢測到一些種類的攻擊,也能夠進行定位;其它交換機下的主機對當前交換機下的主機進行攻擊時,軟件能檢測到大多數(shù)形式的攻擊,但只能提供該攻擊主機的IP地址和MAC地址以及來源于哪臺交換機,但不能判斷該攻擊主機位于該交換機的哪個端口;非當前交換機下的2臺主機之間存在ARP攻擊時,軟件不能檢測出攻擊的存在。
針對ARP攻擊數(shù)據(jù)包的特征和目前大多數(shù)局域網(wǎng)都采用交換機組網(wǎng)的這一特點,提出了一種將檢測軟件部署在交換機鏡像端口的檢測和定位方法。該方法在實際網(wǎng)絡環(huán)境中運行良好,能夠有效地檢測出網(wǎng)絡中存在的ARP攻擊并對攻擊主機進行準確的定位。但正如在測試結果中發(fā)現(xiàn)的一樣,該方法有一定的局限性,因此,下一步的工作是進一步完善該方法,使其適用于絕大多數(shù)的網(wǎng)絡環(huán)境。
[1]秦豐林,段海新,郭汝廷. ARP欺騙的監(jiān)測與防范技術綜述[J]. 計算機應用研究, 2009(1):30-33.
[2]郭衛(wèi)興,劉旭,吳灝. 基于ARP緩存超時的中間人攻擊檢測方法[J].計算機工程, 2008(7):133-135.
[3]林宏剛,陳麟,王標,吳彥偉. 一種主動檢測和防范ARP攻擊的算法研究[J]. 四川大學學報,2008(5):143-149.
[4]Tripunitara, MV. Dutta P. A middleware approach to asynchronous and backward compatible detection and prevention of ARP cache poisoning[C]. Proceedings of 15th Annual Computer Security Applications Conference. 1999:303-309.
[5]Chomsiri T. Sniffing Packets on LAN without ARP spoofing[C]. Convergence and Hybrid Information Technology,Third International Conference. 2008:472-477.
[6]王燕, 張新剛.基于ARP協(xié)議的攻擊及其防御方法分析[J].微計算機信息, 2007, 23(12):72-74.
[7]張潔, 武裝, 陸倜. 一種改進的ARP協(xié)議欺騙檢測方法[J].計算機科學, 2008, 35(3):53-54.
[8]范俊俊, 魯云萍. 基于交換機的ARP安全機制研究[J].計算機工程與設計,2008,29(16):4162-4164.