最近在論壇上經(jīng)常看到關(guān)于ARP病毒的問題,于是在Google上搜索ARP關(guān)鍵字,啊哦!結(jié)果出來N多關(guān)于這類問題的討論。呵呵,俺的求知欲很強(qiáng):),想再學(xué)習(xí)ARP下相關(guān)知識,所以對目前網(wǎng)絡(luò)中常見的ARP問題進(jìn)行了一個(gè)總結(jié)?,F(xiàn)在將其貼出來,希望和大家一起討論!
1. ARP概念
咱們談ARP之前,還是先要知道ARP的概念和工作原理,理解了原理知識,才能更好去面對和分析處理問題。
1.1 ARP概念知識
ARP,全稱Address Resolution Protocol,中文名為地址解析協(xié)議,它工作在數(shù)據(jù)鏈路層,在本層和硬件接口聯(lián)系,同時(shí)對上層提供服務(wù)。
IP數(shù)據(jù)包常通過以太網(wǎng)發(fā)送,以太網(wǎng)設(shè)備并不識別32位IP地址,它們是以48位以太網(wǎng)地址傳輸以太網(wǎng)數(shù)據(jù)包。因此,必須把IP目的地址轉(zhuǎn)換成以太網(wǎng)目的地址。在以太網(wǎng)中,一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址。但這個(gè)目標(biāo)MAC地址是如何獲得的呢?它就是通過地址解析協(xié)議獲得的。ARP協(xié)議用于將網(wǎng)絡(luò)中的IP地址解析為的硬件地址(MAC地址),以保證通信的順利進(jìn)行。
1.2 ARP工作原理
首先,每臺主機(jī)都會在自己的ARP緩沖區(qū)中建立一個(gè) ARP列表,以表示IP地址和MAC地址的對應(yīng)關(guān)系。當(dāng)源主機(jī)需要將一個(gè)數(shù)據(jù)包要發(fā)送到目的主機(jī)時(shí),會首先檢查自己 ARP列表中是否存在該 IP地址對應(yīng)的MAC地址,如果有﹐就直接將數(shù)據(jù)包發(fā)送到這個(gè)MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個(gè)ARP請求的廣播包,查詢此目的主機(jī)對應(yīng)的MAC地址。此ARP請求數(shù)據(jù)包里包括源主機(jī)的IP地址、硬件地址、以及目的主機(jī)的IP地址。網(wǎng)絡(luò)中所有的主機(jī)收到這個(gè)ARP請求后,會檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機(jī)首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機(jī)發(fā)送一個(gè) ARP響應(yīng)數(shù)據(jù)包,告訴對方自己是它需要查找的MAC地址;源主機(jī)收到這個(gè)ARP響應(yīng)數(shù)據(jù)包后,將得到的目的主機(jī)的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示ARP查詢失敗。
例如:
A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
根據(jù)上面的所講的原理,我們簡單說明這個(gè)過程:A要和B通訊,A就需要知道B的以太網(wǎng)地址,于是A發(fā)送一個(gè)ARP請求廣播(誰是192.168.10.2 ,請告訴192.168.10.1),當(dāng)B收到該廣播,就檢查自己,結(jié)果發(fā)現(xiàn)和自己的一致,然后就向A發(fā)送一個(gè)ARP單播應(yīng)答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。
1.3 ARP通訊模式
通訊模式(Pattern Analysis):在網(wǎng)絡(luò)分析中,通訊模式的分析是很重要的,不同的協(xié)議和不同的應(yīng)用都會有不同的通訊模式。更有些時(shí)候,相同的協(xié)議在不同的企業(yè)應(yīng)用中也會出現(xiàn)不同的通訊模式。ARP在正常情況下的通訊模式應(yīng)該是:請求 -> 應(yīng)答 -> 請求 -> 應(yīng)答,也就是應(yīng)該一問一答。
2. 常見ARP攻擊類型
個(gè)人認(rèn)為常見的ARP攻擊為兩種類型:ARP掃描和ARP欺騙。
2.1 ARP掃描(ARP請求風(fēng)暴)
通訊模式(可能):
請求 -> 請求 -> 請求 -> 請求 -> 請求 -> 請求 -> 應(yīng)答 -> 請求 -> 請求 -> 請求...
描述:
網(wǎng)絡(luò)中出現(xiàn)大量ARP請求廣播包,幾乎都是對網(wǎng)段內(nèi)的所有主機(jī)進(jìn)行掃描。大量的ARP請求廣播可能會占用網(wǎng)絡(luò)帶寬資源;ARP掃描一般為ARP攻擊的前奏。
出現(xiàn)原因(可能):
*病毒程序,偵聽程序,掃描程序。
*如果網(wǎng)絡(luò)分析軟件部署正確,可能是我們只鏡像了交換機(jī)上的部分端口,所以大量ARP請求是來自與非鏡像口連接的其它主機(jī)發(fā)出的。
*如果部署不正確,這些ARP請求廣播包是來自和交換機(jī)相連的其它主機(jī)。
2.2 ARP欺騙
ARP協(xié)議并不只在發(fā)送了ARP請求才接收ARP應(yīng)答。當(dāng)計(jì)算機(jī)接收到ARP應(yīng)答數(shù)據(jù)包的時(shí)候,就會對本地的ARP緩存進(jìn)行更新,將應(yīng)答中的IP和MAC地址存儲在ARP緩存中。所以在網(wǎng)絡(luò)中,有人發(fā)送一個(gè)自己偽造的ARP應(yīng)答,網(wǎng)絡(luò)可能就會出現(xiàn)問題。這可能就是協(xié)議設(shè)計(jì)者當(dāng)初沒考慮到的!
2.2.1 欺騙原理
假設(shè)一個(gè)網(wǎng)絡(luò)環(huán)境中,網(wǎng)內(nèi)有三臺主機(jī),分別為主機(jī)A、B、C。主機(jī)詳細(xì)信息如下描述:
A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
C的地址為:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC
正常情況下A和C之間進(jìn)行通訊,但是此時(shí)B向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答,而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.10.3(C的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(C的MAC地址本來應(yīng)該是CC-CC-CC-CC-CC-CC,這里被偽造了)。當(dāng)A接收到B偽造的ARP應(yīng)答,就會更新本地的ARP緩存(A被欺騙了),這時(shí)B就偽裝成C了。同時(shí),B同樣向C發(fā)送一個(gè)ARP應(yīng)答,應(yīng)答包中發(fā)送方IP地址四192.168.10.1(A的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本來應(yīng)該是AA-AA-AA-AA-AA-AA),當(dāng)C收到B偽造的ARP應(yīng)答,也會更新本地ARP緩存(C也被欺騙了),這時(shí)B就偽裝成了A。這樣主機(jī)A和C都被主機(jī)B欺騙,A和C之間通訊的數(shù)據(jù)都經(jīng)過了B。主機(jī)B完全可以知道他們之間說的什么:)。這就是典型的ARP欺騙過程。
注意:一般情況下,ARP欺騙的某一方應(yīng)該是網(wǎng)關(guān)。
2.2.2 兩種情況
ARP欺騙存在兩種情況:一種是欺騙主機(jī)作為“中間人”,被欺騙主機(jī)的數(shù)據(jù)都經(jīng)過它中轉(zhuǎn)一次,這樣欺騙主機(jī)可以竊取到被它欺騙的主機(jī)之間的通訊數(shù)據(jù);另一種讓被欺騙主機(jī)直接斷網(wǎng)。
第一種:竊取數(shù)據(jù)(嗅探)
通訊模式:
應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 請求 -> 應(yīng)答 -> 應(yīng)答 ->請求->應(yīng)答...
描述:
這種情況就屬于我們上面所說的典型的ARP欺騙,欺騙主機(jī)向被欺騙主機(jī)發(fā)送大量偽造的ARP應(yīng)答包進(jìn)行欺騙,當(dāng)通訊雙方被欺騙成功后,自己作為了一個(gè)“中間人“的身份。此時(shí)被欺騙的主機(jī)雙方還能正常通訊,只不過在通訊過程中被欺騙者“竊聽”了。
出現(xiàn)原因(可能):
*木馬病毒
*嗅探
*人為欺騙
第二種:導(dǎo)致斷網(wǎng)
通訊模式:
應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 應(yīng)答 -> 請求…
描述:
這類情況就是在ARP欺騙過程中,欺騙者只欺騙了其中一方,如B欺騙了A,但是同時(shí)B沒有對C進(jìn)行欺騙,這樣A實(shí)質(zhì)上是在和B通訊,所以A就不能和C通訊了,另外一種情況還可能就是欺騙者偽造一個(gè)不存在地址進(jìn)行欺騙。
對于偽造地址進(jìn)行的欺騙,在排查上比較有難度,這里最好是借用TAP設(shè)備(呵呵,這個(gè)東東好像有點(diǎn)貴勒),分別捕獲單向數(shù)據(jù)流進(jìn)行分析!
出現(xiàn)原因(可能):
* 木馬病毒
*人為破壞
*一些網(wǎng)管軟件的控制功能
3. 常用的防護(hù)方法
搜索網(wǎng)上,目前對于ARP攻擊防護(hù)問題出現(xiàn)最多是綁定IP和MAC和使用ARP防護(hù)軟件,也出現(xiàn)了具有ARP防護(hù)功能的路由器。呵呵,我們來了解下這三種方法。
3.1 靜態(tài)綁定
最常用的方法就是做IP和MAC靜態(tài)綁定,在網(wǎng)內(nèi)把主機(jī)和網(wǎng)關(guān)都做IP和MAC綁定。
欺騙是通過ARP的動態(tài)實(shí)時(shí)的規(guī)則欺騙內(nèi)網(wǎng)機(jī)器,所以我們把ARP全部設(shè)置為靜態(tài)可以解決對內(nèi)網(wǎng)PC的欺騙,同時(shí)在網(wǎng)關(guān)也要進(jìn)行IP和MAC的靜態(tài)綁定,這樣雙向綁定才比較保險(xiǎn)。
方法:
對每臺主機(jī)進(jìn)行IP和MAC地址靜態(tài)綁定。
通過命令,arp -s可以實(shí)現(xiàn) “arp –s IP MAC地址 ”。
例如:“arp –s 192.168.10.1 AA-AA-AA-AA-AA-AA”。
如果設(shè)置成功會在PC上面通過執(zhí)行 arp -a 可以看到相關(guān)的提示:
Internet Address Physical Address Type
192.168.10.1 AA-AA-AA-AA-AA-AA static(靜態(tài))
一般不綁定,在動態(tài)的情況下:
Internet Address Physical Address Type
192.168.10.1 AA-AA-AA-AA-AA-AA dynamic(動態(tài))
說明:對于網(wǎng)絡(luò)中有很多主機(jī),500臺,1000臺...,如果我們這樣每一臺都去做靜態(tài)綁定,工作量是非常大的。。。。,這種靜態(tài)綁定,在電腦每次重起后,都必須重新在綁定,雖然也可以做一個(gè)批處理文件,但是還是比較麻煩的!
3.2 使用ARP防護(hù)軟件
目前關(guān)于ARP類的防護(hù)軟件出的比較多了,大家使用比較常用的ARP工具主要是欣向ARP工具,Antiarp等。它們除了本身來檢測出ARP攻擊外,防護(hù)的工作原理是一定頻率向網(wǎng)絡(luò)廣播正確的ARP信息。我們還是來簡單說下這兩個(gè)小工具。
3.2.1 欣向ARP工具
俺使用了該工具,它有5個(gè)功能:
A. IP/MAC清單
選擇網(wǎng)卡。如果是單網(wǎng)卡不需要設(shè)置。如果是多網(wǎng)卡需要設(shè)置連接內(nèi)網(wǎng)的那塊網(wǎng)卡。
IP/MAC掃描。這里會掃描目前網(wǎng)絡(luò)中所有的機(jī)器的IP與MAC地址。請?jiān)趦?nèi)網(wǎng)運(yùn)行正常時(shí)掃描,因?yàn)檫@個(gè)表格將作為對之后ARP的參照。
之后的功能都需要這個(gè)表格的支持,如果出現(xiàn)提示無法獲取IP或MAC時(shí),就說明這里的表格里面沒有相應(yīng)的數(shù)據(jù)。
B. ARP欺騙檢測
這個(gè)功能會一直檢測內(nèi)網(wǎng)是否有PC冒充表格內(nèi)的IP。你可以把主要的IP設(shè)到檢測表格里面,例如,路由器,電影服務(wù)器,等需要內(nèi)網(wǎng)機(jī)器訪問的機(jī)器IP。
(補(bǔ)充)“ARP欺騙記錄”表如何理解:
“Time”:發(fā)現(xiàn)問題時(shí)的時(shí)間;
“sender”:發(fā)送欺騙信息的IP或MAC;
“Repeat”:欺詐信息發(fā)送的次數(shù);
“ARP info”:是指發(fā)送欺騙信息的具體內(nèi)容.如下面例子:
time sender Repeat ARP info 22:22:22 192.168.1.22 1433 192.168.1.1 is at 00:0e:03:22:02:e8
這條信息的意思是:在22:22:22的時(shí)間,檢測到由192.168.1.22發(fā)出的欺騙信息,已經(jīng)發(fā)送了1433次,他發(fā)送的欺騙信息的內(nèi)容是:192.168.1.1的MAC地址是00:0e:03:22:02:e8。
打開檢測功能,如果出現(xiàn)針對表內(nèi)IP的欺騙,會出現(xiàn)提示??梢园凑仗崾静榈絻?nèi)網(wǎng)的ARP欺騙的根源。提示一句,任何機(jī)器都可以冒充其他機(jī)器發(fā)送IP與MAC,所以即使提示出某個(gè)IP或MAC在發(fā)送欺騙信息,也未必是100%的準(zhǔn)確。所有請不要以暴力解決某些問題。
C. 主動維護(hù)
這個(gè)功能可以直接解決ARP欺騙的掉線問題,但是并不是理想方法。他的原理就在網(wǎng)絡(luò)內(nèi)不停的廣播制定的IP的正確的MAC地址。
“制定維護(hù)對象”的表格里面就是設(shè)置需要保護(hù)的IP。發(fā)包頻率就是每秒發(fā)送多少個(gè)正確的包給網(wǎng)絡(luò)內(nèi)所有機(jī)器。強(qiáng)烈建議盡量少的廣播IP,盡量少的廣播頻率。一般設(shè)置1次就可以,如果沒有綁定IP的情況下,出現(xiàn)ARP欺騙,可以設(shè)置到50-100次,如果還有掉線可以設(shè)置更高,即可以實(shí)現(xiàn)快速解決ARP欺騙的問題。但是想真正解決ARP問題,還是請參照上面綁定方法。
D. 欣向路由器日志
收集欣向路由器的系統(tǒng)日志,等功能。
E. 抓包
類似于網(wǎng)絡(luò)分析軟件的抓包,保存格式是.cap。
3.2.1 Antiarp
這個(gè)軟件界面比較簡單,以下為我收集該軟件的使用方法。
A. 填入網(wǎng)關(guān)IP地址,點(diǎn)擊[獲取網(wǎng)關(guān)地址]將會顯示出網(wǎng)關(guān)的MAC地址。點(diǎn)擊[自動防護(hù)]即可保護(hù)當(dāng)前網(wǎng)卡與該網(wǎng)關(guān)的通信不會被第三方監(jiān)聽。注意:如出現(xiàn)ARP欺騙提示,這說明攻擊者發(fā)送了ARP欺騙數(shù)據(jù)包來獲取網(wǎng)卡的數(shù)據(jù)包,如果您想追蹤攻擊來源請記住攻擊者的MAC地址,利用MAC地址掃描器可以找出IP 對應(yīng)的MAC地址.
B. IP地址沖突
如頻繁的出現(xiàn)IP地址沖突,這說明攻擊者頻繁發(fā)送ARP欺騙數(shù)據(jù)包,才會出現(xiàn)IP沖突的警告,利用Anti ARP Sniffer可以防止此類攻擊。
C. 您需要知道沖突的MAC地址,Windows會記錄這些錯(cuò)誤。查看具體方法如下:
右擊[我的電腦]--[管理]--點(diǎn)擊[事件查看器]--點(diǎn)擊[系統(tǒng)]--查看來源為[TcpIP]---雙擊事件可以看到顯示地址發(fā)生沖突,并記錄了該MAC地址,請復(fù)制該MAC地址并填入Anti ARP Sniffer的本地MAC地址輸入框中(請注意將:轉(zhuǎn)換為-),輸入完成之后點(diǎn)擊[防護(hù)地址沖突],為了使MAC地址生效請禁用本地網(wǎng)卡然后再啟用網(wǎng)卡,在CMD命令行中輸入Ipconfig /all,查看當(dāng)前MAC地址是否與本地MAC地址輸入框中的MAC地址相符,如果更改失敗請與我聯(lián)系。如果成功將不再會顯示地址沖突。
注意:如果您想恢復(fù)默認(rèn)MAC地址,請點(diǎn)擊[恢復(fù)默認(rèn)],為了使MAC地址生效請禁用本地網(wǎng)卡然后再啟用網(wǎng)卡。
3.3 具有ARP防護(hù)功能的路由器
這類路由器以前聽說的很少,對于這類路由器中提到的ARP防護(hù)功能,其實(shí)它的原理就是定期的發(fā)送自己正確的ARP信息。但是路由器的這種功能對于真正意義上的攻擊,是不能解決的。
ARP的最常見的特征就是掉線,一般情況下不需要處理一定時(shí)間內(nèi)可以回復(fù)正常上網(wǎng),因?yàn)锳RP欺騙是有老化時(shí)間的,過了老化時(shí)間就會自動的回復(fù)正常?,F(xiàn)在大多數(shù)路由器都會在很短時(shí)間內(nèi)不停廣播自己的正確ARP信息,使受騙的主機(jī)回復(fù)正常。但是如果出現(xiàn)攻擊性ARP欺騙(其實(shí)就是時(shí)間很短的量很大的欺騙ARP,1秒有個(gè)幾百上千的),它是不斷的發(fā)起ARP欺騙包來阻止內(nèi)網(wǎng)機(jī)器上網(wǎng),即使路由器不斷廣播正確的包也會被他大量的錯(cuò)誤信息給淹沒。
可能你會有疑問:我們也可以發(fā)送比欺騙者更多更快正確的ARP信息?。咳绻粽呙棵氚l(fā)送1000個(gè)ARP欺騙包,那我們就每秒發(fā)送1500個(gè)正確的ARP信息!
面對上面的疑問,我們仔細(xì)想想,如果網(wǎng)絡(luò)拓?fù)浜艽?,網(wǎng)絡(luò)中接了很多網(wǎng)絡(luò)設(shè)備和主機(jī),大量的設(shè)備都去處理這些廣播信息,那網(wǎng)絡(luò)使用起來好不爽,再說了會影響到我們工作和學(xué)習(xí)。ARP廣播會造成網(wǎng)絡(luò)資源的浪費(fèi)和占用。如果該網(wǎng)絡(luò)出了問題,我們抓包分析,數(shù)據(jù)包中也會出現(xiàn)很多這類ARP廣播包,對分析也會造成一定的影響。