作為一名校園網管理員,筆者近期接二連三地接到用戶不能正常上網的舉報,使得我們焦頭爛額。經過進一步調查,終于發現了故障的真相。
首先說明一下我校的網絡拓撲結構:在一臺三層主交換機上劃分了VLAN,VLAN1使用普通的二層交換機,連接學生宿舍的網絡。使用192.168.0.0作為網絡地址,并在主交換機上做了MAC地址與IP地址的綁定,避免學生自行修改IP地址造成地址沖突。學生的計算機全部連接到普通的二層交換機上。
故障現象
某臺計算機會突然不能連接到服務器或其他客戶機,重啟后恢復正常,短時間后,又出現該狀況。查看本地連接狀態發現只有發出的數據包而沒有返回的數據包。根據以往的經驗,該癥狀與MAC地址綁定錯誤相同,于是在交換機上查看,發現一切正常,只是該IP地址沒有數據流量。同時,在網絡中的網管軟件監聽到大量未知MAC地址的數據包出現。
故障分析
綜合考慮,我們認為有偽造MAC地址的情況出現。我們重點查找Windows系統下的嗅探軟件,并以著名的Winpcap和Libpcap為重點,最終的焦點定位在一款叫做“網絡執法官”的軟件上。
我們立即下載該軟件進行安裝,發現其基于Winpcap。因為Winpcap的資料相對較多,我們沒有試圖對該軟件進行反編譯,而只對其基本功能進行了測試,發現其工作方式有三種,并進行了基本測試:
1. 生成IP地址沖突
在該模式下,軟件產生一個虛擬的MAC地址,并利用這個MAC地址偽造和被攻擊機器的IP地址相同的數據包,從而使被攻擊機器不斷出現IP地址沖突對話框,但由于該MAC地址是偽造的,所以被攻擊機器無法發現是哪個機器進行了攻擊。
2. 斷開被攻擊機器與網關的聯系
在該模式下,軟件對被攻擊機和網關機都產生一個ARP的“欺騙”,使得兩者不能正確獲知對方的MAC地址,從而不能正常通訊。但被攻擊機器和局域網內其他主機可以進行通訊。
3. 斷開被攻擊機器與所有其他主機的聯系
在該模式下,軟件對被攻擊機器和局域網內所有主機(包括網關)都進行“ARP欺騙”,被攻擊機器不能和任何機器通訊。但本主機不能和被攻擊機斷開聯系(該軟件不會欺騙本身主機),所以如果該軟件如果安裝在網關機上,就失去了網絡管理功能。
明顯的,這是一種“ARP欺騙”的攻擊。而ARP協議位于TCP/IP協議中的網絡層,主要功能是將廣域網的IP地址尋址轉換成局域網中的MAC地址尋址。所以,如果我們破壞了IP/MAC地址的轉換,被攻擊的主機就不能在局域網中進行通訊了(因為沒有其他主機“認識”它了)。
故障解決
那么,我們能不能避免ARP“欺騙”攻擊呢?很遺憾的是:鑒于ARP協議的“自治”性,除非全部使用靜態ARP,否則是不能的。
用什么辦法對抗網絡執法官呢?我們從查、躲、殺三個角度進行了試驗。
1. 如何得知自己是否受到“ARP欺騙”的攻擊呢?
您可以檢測自己的網卡工作狀態,如果只發數據而不能接收到數據的話,很可能就受到了攻擊。您也可以在命令行狀態下使用ARP -A命令,來查看本機的ARP緩存狀態,正常情況下除了網關外不會有太多的記錄,您需要查看網關的MAC地址是否和正常的一樣。如果不同,那么或者網關換了網卡,或者您受到了“ARP欺騙”的攻擊。
同樣,如果沒有記錄或者有過多的ARP記錄,您也可能受到了攻擊(不同版本的網絡執法官的攻擊方式有所不同)。
2. 如何在局域網中查找該主機
因為該軟件是基于Winpcap驅動的,其工作起來必然需要將該主機網卡工作于“混雜”模式下,原理類似于常見的嗅探軟件,所以,反嗅探的軟件可以對其進行查找。經常使用的有Antisniffer、ARPkiller等。利用反嗅探軟件查找局域網內處于“混雜”模式的網卡,基本可以確定進行攻擊的主機的IP地址。
注:被查找到的主機也可能沒有使用“ARP欺騙”,而只進行了竊聽。但總之處于“混雜”狀態的主機肯定是不正常的。
同樣的,您還可以安裝網絡執法官的檢測版本來檢測本網中運行該軟件的主機。
3. 躲過“ARP欺騙”的攻擊
如果您的網絡里沒有在網關綁定MAC地址和IP地址的話,您可以針對被攻擊的類型不同選擇不同的方式躲避攻擊:
(1)產生IP地址沖突的攻擊
如果產生地址沖突,您可以看見類似“系統檢測到IP地址和硬件地址00-50-FC-1F-4C-9E發生沖突”的對話框。您可以將您的MAC地址設置為該硬件地址,就可以避免再次出現該對話框。
(2)斷開被攻擊機器與網關的聯系和斷開被攻擊機器與所有其他主機的聯系的攻擊
您可以自行修改MAC地址,修改后,可以在短時間內避開被攻擊,但是如果攻擊者在網絡執法官中設置了“發現用戶上網即進行管理”后,不久會再次受到攻擊。
總之,利用修改MAC地址來躲避并不是有效的辦法。況且很多局域網中還進行的MAC地址和IP地址的綁定,就算避過了網絡執法官的攻擊,也同樣不能正常上網。
4. “殺”實際上是一種“對攻”
因為ARP緩存具有一定的生命周期,所以網絡執法官會在幾秒內產生一個新的ARP數據包。首先我們可以利用靜態ARP在本機注冊網關正確的MAC地址,然后利用ARPkiller等軟件不停地向網絡中發布本機的正確IP和MAC數據,使得網關的ARP緩存中始終保持有關本機的正確數據,這樣就可以保持和網關的通訊,也就可以正常上網了。甚至,我們同樣可以發動“反擊”,使得對方“掉網”。