俞祖宏
【摘要】本文介紹網(wǎng)絡(luò)ARP協(xié)議及ARP攻擊的原理,同時(shí)闡述如何檢測(cè)和防御ARP攻擊。
【關(guān)鍵詞】ARP;ARP協(xié)議;攻擊原理;檢測(cè)防御
工作中是否遇到過(guò)在局域網(wǎng)內(nèi)上網(wǎng)時(shí)會(huì)突然掉線,過(guò)一段時(shí)間后又會(huì)恢復(fù)正常;或者是網(wǎng)速是否時(shí)快時(shí)慢,極其不穩(wěn)定(通常所說(shuō)的“卡”),但單機(jī)進(jìn)行光纖數(shù)據(jù)測(cè)試時(shí)一切正常?或者是IE瀏覽器頻繁出錯(cuò),以及一些常用軟件出現(xiàn)故障等等。如果出現(xiàn)了上述狀況,那么就要小心了,因?yàn)楹芸赡苁艿搅薃RP攻擊。那么什么是ARP呢?如何受到攻擊的?該怎么解決呢?
一、什么是ARP?
ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)的縮寫。在局域網(wǎng)中,一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址(相當(dāng)于主機(jī)的“身份證”)。但這個(gè)目標(biāo)MAC地址是如何獲得的呢?它就是通過(guò)地址解析協(xié)議獲得的。所謂“地址解析”就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過(guò)程。ARP協(xié)議的基本功能就是通過(guò)目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
二、ARP協(xié)議的工作原理
正常情況下,每臺(tái)主機(jī)都會(huì)在自己的ARP緩沖區(qū)中建立一個(gè)ARP列表,以表示IP地址和MAC地址的對(duì)應(yīng)關(guān)系。當(dāng)源主機(jī)需要將一個(gè)數(shù)據(jù)包發(fā)送到目標(biāo)主機(jī)時(shí),會(huì)按照下列步驟:
1、首先檢查自己ARP列表中是否存在該IP地址對(duì)應(yīng)的MAC地址。如果有,就直接將數(shù)據(jù)包發(fā)送到這個(gè)MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個(gè)ARP請(qǐng)求的廣播包,查詢此目標(biāo)主機(jī)對(duì)應(yīng)的MAC地址。此ARP請(qǐng)求數(shù)據(jù)包里包括源主機(jī)的IP地址、硬件地址以及目標(biāo)主機(jī)的IP地址。
2、網(wǎng)絡(luò)中所有的主機(jī)收到這個(gè)ARP請(qǐng)求后,會(huì)檢查數(shù)據(jù)包中的目標(biāo)IP地址是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機(jī)首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機(jī)發(fā)送一個(gè)ARP響應(yīng)數(shù)據(jù)包,告訴對(duì)方自己就是它需要查找的MAC地址。
3、源主機(jī)收到這個(gè)ARP響應(yīng)數(shù)據(jù)包后,將得到目的主機(jī)的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。
如圖:
(1)源主機(jī)192.168.1.1要發(fā)送網(wǎng)絡(luò)包給192.168.1.3,但不知MAC地址?
(2)在局域網(wǎng)內(nèi)發(fā)出廣播包“192.168.
1.3的MAC地址是什么?”
(3)其他機(jī)器不回應(yīng),只有192.168.
1.3回應(yīng)“192.168.1.3的MAC地址是CC
-CC-CC-CC-CC-CC”;
(4)源主機(jī)192.168.1.1將IP地址192.
168.1.3和MAC地址CC-CC-CC-CC-CC
-CC添加到自己的ARP列表中,并將網(wǎng)絡(luò)包發(fā)送。
從上面可以看出,ARP協(xié)議的基礎(chǔ)就是信任局域網(wǎng)內(nèi)所有的人,那么就很容易在局域網(wǎng)上實(shí)現(xiàn)ARP欺騙攻擊。更何況ARP協(xié)議是工作在更低于IP協(xié)議的協(xié)議層,因此它的危害就更加隱蔽。
三、ARP攻擊的常見種類及工作原理
其實(shí),此起彼伏的瞬間掉線或大面積的斷網(wǎng)大都是ARP欺騙攻擊在作怪。常見的ARP攻擊有仿冒網(wǎng)關(guān)攻擊、欺騙網(wǎng)關(guān)攻擊(這兩種合起來(lái)也叫拒絕服務(wù)攻擊(DoS, Denial of Service))、ARP“中間人”攻擊(Man in the Middle)、ARP報(bào)文泛洪攻擊(MAC Flooding)四種,我們根據(jù)影響范圍和出現(xiàn)頻率分別介紹如下:
1、仿冒網(wǎng)關(guān)攻擊。攻擊者偽造ARP報(bào)文,報(bào)文的發(fā)送源IP地址為網(wǎng)關(guān)IP地址,但是發(fā)送源MAC地址為偽造的MAC地址,攻擊者將這樣的報(bào)文發(fā)送到被攻擊的主機(jī)上,被攻擊的主機(jī)更新了自己的ARP列表。這樣一來(lái),被攻擊的主機(jī)訪問網(wǎng)關(guān)時(shí),被重定向到一個(gè)錯(cuò)誤的MAC地址上,導(dǎo)致該用戶無(wú)法正常訪問外網(wǎng)。攻擊者還可使用第三方PC機(jī)的MAC地址作為偽造的MAC地址,這樣,形成連鎖反應(yīng),導(dǎo)致很難查找到真正的攻擊者。
2、欺騙網(wǎng)關(guān)攻擊。攻擊者偽造ARP報(bào)文,報(bào)文的發(fā)送源IP地址為同網(wǎng)段內(nèi)某一合法用戶的IP地址,但是發(fā)送源MAC地址為偽造的MAC地址,攻擊者將這樣的報(bào)文發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)更新了自己的ARP列表,將原合法用戶的IP地址重定向到偽造的MAC地址上。這樣一來(lái),網(wǎng)關(guān)發(fā)送到該合法用戶的所有數(shù)據(jù),被重定向到一個(gè)錯(cuò)誤的MAC地址上,導(dǎo)致該用戶無(wú)法正常訪問外網(wǎng)。
3、ARP“中間人”攻擊。ARP“中間人”攻擊,又稱為ARP雙向欺騙。如下圖所示,如果惡意攻擊者主機(jī)B想探聽主機(jī)A和主機(jī)C之間的通信,它可以給這兩臺(tái)主機(jī)發(fā)送偽造的ARP應(yīng)答報(bào)文,使主機(jī)A和主機(jī)C用主機(jī)B的MAC地址更新自身的ARP列表。此后,主機(jī)A和主機(jī)C之間看似“直接”的通信,實(shí)際上都是通過(guò)惡意攻擊者所在的主機(jī)B間接進(jìn)行的,也就是說(shuō),主機(jī)B擔(dān)當(dāng)了“中間人”的角色,它可以對(duì)信息進(jìn)行竊取或篡改。
4、ARP報(bào)文泛洪攻擊。攻擊者利用工具構(gòu)造大量的ARP報(bào)文發(fā)往交換機(jī)、網(wǎng)關(guān)、路由器或某臺(tái)PC機(jī)的某個(gè)端口,導(dǎo)致CPU忙于處理ARP協(xié)議,負(fù)擔(dān)過(guò)重,造成網(wǎng)絡(luò)設(shè)備其他功能不正常甚至癱瘓。
四、ARP攻擊的檢測(cè)
局域網(wǎng)內(nèi)的機(jī)器遭到ARP病毒欺騙攻擊,如果找到源頭的機(jī)器,將其病毒或木馬殺掉,局域網(wǎng)內(nèi)機(jī)器就會(huì)恢復(fù)正常,那么如何才能快速定位到攻擊的源頭機(jī)器呢?
1、用arp a命令。當(dāng)發(fā)現(xiàn)上網(wǎng)明顯變慢,或者突然掉線時(shí),我們可以用arp -a命令來(lái)檢查ARP表。如果發(fā)現(xiàn)網(wǎng)關(guān)的MAC地址發(fā)生了改變,或者發(fā)現(xiàn)有很多IP地址指向同一個(gè)MAC地址,那么肯定就是ARP攻擊所致。
2、利用彩影ARP防火墻軟件查看。如果網(wǎng)卡是處于混雜模式或者ARP請(qǐng)求包發(fā)送的速度大或者ARP請(qǐng)求包總量非常大,判斷這臺(tái)機(jī)器有可能就是“元兇”。定位好機(jī)器后,再做病毒信息收集工作。
3、通過(guò)路由器的“系統(tǒng)歷史記錄”查看。由于ARP攻擊的木馬程序發(fā)作的時(shí)候會(huì)發(fā)出大量的數(shù)據(jù)包導(dǎo)致局域網(wǎng)通訊阻塞以及其自身處理能力的限制,用戶會(huì)感覺上網(wǎng)速度越來(lái)越慢。當(dāng)ARP攻擊的木馬程序停止運(yùn)行時(shí),用戶會(huì)恢復(fù)從路由器上網(wǎng),切換過(guò)程中用戶會(huì)再斷一次線。
在路由器的“系統(tǒng)歷史記錄”中看到大量如下的信息:
MAC Chged 10.16.103.124
MAC Old 00:02:8c:36:d1:7f
MAC New 01:05:6d:60:c7:18
這個(gè)消息代表了用戶的MAC地址發(fā)生了變化,在ARP攻擊木馬開始運(yùn)行的時(shí)候,局域網(wǎng)所有主機(jī)的MAC地址更新為病毒主機(jī)的MAC地址(即所有信息的MAC New地址都一致為病毒主機(jī)的MAC地址),同時(shí)在路由器的“用戶統(tǒng)計(jì)”中看到所有用戶的MAC地址信息都一樣。
如果是在路由器的“系統(tǒng)歷史記錄”中看到大量MAC Old地址都一致,則說(shuō)明局域網(wǎng)內(nèi)曾經(jīng)出現(xiàn)過(guò)ARP攻擊(ARP攻擊的木馬程序停止運(yùn)行時(shí),主機(jī)在路由器上恢復(fù)其真實(shí)的MAC地址)。
五、 ARP攻擊的防御辦法
ARP攻擊的核心就是破壞網(wǎng)絡(luò)設(shè)備的ARP表內(nèi)容,使得設(shè)備無(wú)法查到IP對(duì)應(yīng)的正確的MAC地址,導(dǎo)致報(bào)文發(fā)送錯(cuò)誤,網(wǎng)絡(luò)通信癱瘓。由于ARP攻擊的病毒不同于其他病毒,它的攻擊是基于網(wǎng)絡(luò)協(xié)議的天然缺陷,所以ARP攻擊的防御也不同于常見病毒,單靠傳統(tǒng)的殺毒軟件和防火墻往往是頭疼醫(yī)頭、腳痛醫(yī)腳,難以根除。而且,ARP病毒不僅攻擊PC機(jī),還可攻擊路由器、核心交換機(jī)、接入交換機(jī)等網(wǎng)絡(luò)設(shè)備,傳播和危害范圍較廣。所以,僅靠單一設(shè)備、單一解決方案防御ARP病毒是不夠的。根據(jù)本人的實(shí)際操作經(jīng)驗(yàn),關(guān)于ARP病毒具體防范措施,執(zhí)行以下步驟,可有效防范ARP病毒攻擊:
1、做好IP-MAC地址的綁定工作,在交換機(jī)和客戶端都要綁定,這是可以使局域網(wǎng)免疫ARP病毒侵?jǐn)_的好辦法。一些中高端核心交換機(jī),可以采用認(rèn)證模式的靜態(tài)接入綁定或DHCP監(jiān)控模式的動(dòng)態(tài)接入綁定。
2、全網(wǎng)所有的電腦都打上MS06-014和MS07-017這兩個(gè)補(bǔ)丁,這樣可以免疫絕大多數(shù)網(wǎng)頁(yè)木馬,防止在瀏覽網(wǎng)頁(yè)的時(shí)候感染病毒、木馬。
3、在網(wǎng)絡(luò)正常時(shí)保存好全網(wǎng)的IP-MAC地址對(duì)照表,這為以后一旦網(wǎng)絡(luò)中ARP病毒,能快速、方便地查找攻擊電腦。
4、禁用系統(tǒng)的自動(dòng)播放功能,防止病毒從U盤、移動(dòng)硬盤、MP3等移動(dòng)存儲(chǔ)設(shè)備進(jìn)入到計(jì)算機(jī)。
5、指導(dǎo)好網(wǎng)絡(luò)內(nèi)使用者不要隨便點(diǎn)擊打開QQ、MSN等聊天工具上發(fā)來(lái)的鏈接信息,不要隨便打開或運(yùn)行陌生、可疑文件和程序,如郵件中的陌生附件,外掛程序等。
6、部署網(wǎng)絡(luò)流量檢測(cè)設(shè)備或軟件,時(shí)刻監(jiān)視全網(wǎng)的ARP廣播包,查看網(wǎng)絡(luò)內(nèi)設(shè)備的MAC地址是否正確。
7、部署殺毒軟件和ARP防火墻,定期升級(jí)病毒庫(kù),定期全網(wǎng)殺毒,使每臺(tái)電腦都具備最新的防護(hù)功能。
8、為防止ARP報(bào)文泛洪攻擊對(duì)局域網(wǎng)造成的阻塞,交換機(jī)或路由器還需開啟端口ARP報(bào)文限速功能。
總之,有網(wǎng)絡(luò)的地方,就有網(wǎng)絡(luò)安全的問題。在局域網(wǎng)中,ARP攻擊是我們無(wú)法預(yù)料和絕對(duì)防止的,但我們能夠通過(guò)了解其原理,做到提前檢測(cè),提前防范,將其可能造成的損失降到最低。
參考文獻(xiàn)
①李海鷹、程灝,《針對(duì)ARP攻擊的網(wǎng)絡(luò)防御模式設(shè)計(jì)與實(shí)現(xiàn)》,《計(jì)算機(jī)工程》,2005(5)
②唐正軍、李建華:《入侵檢測(cè)技術(shù)》[M].北京:清華大學(xué)出版社,2012
(作者單位:蕪湖日?qǐng)?bào)報(bào)業(yè)集團(tuán)技術(shù)保障部)
責(zé)編:劉冰石