最近網(wǎng)絡(luò)中有主機(jī)頻繁斷線,剛剛開始還比較正常,但是一段時間后就出現(xiàn)斷線情況,有時很快恢復(fù),但是有時要長達(dá)好幾分鐘啊,這樣對工作影響太大了。最初懷疑是否是物理上的錯誤,總之從最容易下手的東西開始檢查,檢查完畢后沒有發(fā)現(xiàn)異常!突然想到目前網(wǎng)上比較流行的ARP攻擊,ARP攻擊出現(xiàn)的故障情況與此非常之相似!對于ARP攻擊,一般常規(guī)辦法是很難找出和判斷的,需要抓包分析。
2. 原理知識
在解決問題之前,我們先了解下ARP的相關(guān)原理知識。
ARP原理
首先,每臺主機(jī)都會在自己的ARP緩沖區(qū) (ARP Cache)中建立一個 ARP列表,以表示IP地址和MAC地址的對應(yīng)關(guān)系。
當(dāng)源主機(jī)需要將一個數(shù)據(jù)包要發(fā)送到目的主機(jī)時,會首先檢查自己 ARP列表中是否存在該 IP地址對應(yīng)的MAC地址,如果有﹐就直接將數(shù)據(jù)包發(fā)送到這個MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個ARP請求的廣播包,查詢此目的主機(jī)對應(yīng)的MAC地址。此ARP請求數(shù)據(jù)包里包括源主機(jī)的IP地址、硬件地址、以及目的主機(jī)的IP地址。
網(wǎng)絡(luò)中所有的主機(jī)收到這個ARP請求后,會檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機(jī)首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機(jī)發(fā)送一個 ARP響應(yīng)數(shù)據(jù)包,告訴對方自己是它需要查找的MAC地址;
源主機(jī)收到這個ARP響應(yīng)數(shù)據(jù)包后,將得到的目的主機(jī)的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示ARP查詢失敗。
ARP欺騙原理
我們先模擬一個環(huán)境:
網(wǎng)關(guān):192.168.1.1 MAC地址:00:11:22:33:44:55
欺騙主機(jī)A:192.168.1.100 MAC地址:00:11:22:33:44:66
被欺騙主機(jī)B:192.168.1.50 MAC地址:00:11:22:33:44:77
欺騙主機(jī)A不停的發(fā)送ARP應(yīng)答包給網(wǎng)關(guān),告訴網(wǎng)關(guān)他是192.168.1.50主機(jī)B,這樣網(wǎng)關(guān)就相信欺騙主機(jī),并且在網(wǎng)關(guān)的ARP緩存表里就有192.168.1.50 對應(yīng)的MAC就是欺騙主機(jī)A的MAC地址00:11:22:33:44:66,網(wǎng)關(guān)真正發(fā)給主機(jī)B的流量就轉(zhuǎn)發(fā)給主機(jī)A;另外主機(jī)A同時不停的向主機(jī)B發(fā)送ARP請求,主機(jī)B相信主機(jī)A為網(wǎng)關(guān),在主機(jī)B的緩存表里有一條記錄為192.168.1.1對應(yīng)00:11:22:33:44:66,這樣主機(jī)B真正發(fā)送給網(wǎng)關(guān)的數(shù)據(jù)流量就會轉(zhuǎn)發(fā)到主機(jī)A;等于說主機(jī)A和網(wǎng)關(guān)之間的通訊就經(jīng)過了主機(jī)A,主機(jī)A作為了一個中間人在彼此之間進(jìn)行轉(zhuǎn)發(fā),這就是ARP欺騙。
3. 解決方法
看來只有抓包了,首先,我將交換機(jī)做好端口鏡像設(shè)置,然后把安裝有科來網(wǎng)絡(luò)分析系統(tǒng)的電腦接入鏡像端口,抓取網(wǎng)絡(luò)的所有數(shù)據(jù)進(jìn)行分析。通過幾個視圖我得出了分析結(jié)果:
診斷視圖提示有太多“ARP無請求應(yīng)答”,如圖1。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標(biāo)滾輪放大或縮小';}" border=0 resized="true" pop="點擊在新窗口查看全圖
CTRL+鼠標(biāo)滾輪放大或縮小">
(圖1 診斷提示)
在診斷中,我發(fā)現(xiàn)幾乎都是00:20:ED:AA:0D:04發(fā)起的大量ARP應(yīng)答。而且在參考信息中提示說可能存在ARP欺騙。看來我的方向是走對了,但是為了進(jìn)一步確定,得結(jié)合其他內(nèi)容信息。
查看協(xié)議視圖了解ARP協(xié)議的詳細(xì)情況,如圖2所示。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標(biāo)滾輪放大或縮小';}" border=0>
(圖2 協(xié)議視圖)
從圖2中所顯示的協(xié)議分布來看,ARP Response和ARP Request相差比例太大了,很不正常啊。
接下來,再看看數(shù)據(jù)包的詳細(xì)情況,如下圖3。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標(biāo)滾輪放大或縮小';}" border=0>
(圖3 ARP數(shù)據(jù)包)
我從圖3中的數(shù)據(jù)包信息已經(jīng)看出問題了,00:20:ED:AA:0D:04在欺騙網(wǎng)絡(luò)中192.168.17.0這個網(wǎng)段的主機(jī),應(yīng)該是在告訴大家它是網(wǎng)關(guān)吧,想充當(dāng)中間人的身份吧,被欺騙主機(jī)的通訊流量都跑到他那邊“被審核”了。
4. 解決辦法
現(xiàn)在基本確定為ARP欺騙攻擊,現(xiàn)在我需要核查MAC地址的主機(jī)00:20:ED:AA:0D:04是哪臺主機(jī),幸好我在平時記錄了內(nèi)部所有主機(jī)的MAC地址和主機(jī)對應(yīng)表,終于給找出真兇主機(jī)了。可能上面中了ARP病毒,立即斷網(wǎng)殺毒。網(wǎng)絡(luò)正常了,嗚呼!整個世界又安靜了!
5. 總結(jié)(故障原理)
我們來回顧一下上面ARP攻擊過程。MAC地址為00:20:ED:AA:0D:04的主機(jī),掃描攻擊192.168.17.0這個網(wǎng)段的所有主機(jī),并告之它就是網(wǎng)關(guān),被欺騙主機(jī)的數(shù)據(jù)都發(fā)送到MAC地址為00:20:ED:AA:0D:04的主機(jī)上去了,但是從我抓取的數(shù)據(jù)包中,MAC為00:20:ED:AA:0D:04的主機(jī)并沒有欺騙真正的網(wǎng)關(guān),所以我們的網(wǎng)絡(luò)會出現(xiàn)斷網(wǎng)現(xiàn)象。
6. 補(bǔ)充內(nèi)容
對于ARP攻擊的故障,我們還是可以防范的,以下三種是常見的方法:
方法一:
平時做好每臺主機(jī)的MAC地址記錄,出現(xiàn)狀況的時候,可以利用MAC地址掃描工具掃描出當(dāng)前網(wǎng)絡(luò)中主機(jī)的MAC地址對應(yīng)情況,參照之前做好的記錄,也可以找出問題主機(jī)。
方法二:ARP –S
可在MS-DOS窗口下運(yùn)行以下命令: ARP –S手工綁定網(wǎng)關(guān)IP和網(wǎng)關(guān)MAC。靜態(tài)綁定,就可以盡可能的減少攻擊了。需要說明的是,手工綁定在計算機(jī)重起后就會失效,需要再綁定,但是我們可以做一個批處理文件,可以減少一些煩瑣的手工綁定!
方法三:使用軟件(Antiarp)
使用Anti ARP Sniffer可以防止利用ARP技術(shù)進(jìn)行數(shù)據(jù)包截取以及防止利用ARP技術(shù)發(fā)送地址沖突數(shù)據(jù)包。