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