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