ARP病毒的分析與防治思路

  先來看看ARP病毒是怎麼回事。 
簡單的說就是:這種病毒自身能夠僞造一些ARP迴應包。這些包的源IP地址通常是重要設備的IP地址,而那個源MAC地址多是本身的MAC,也多是一個無用的MAC地址。而目的IP地址和目的MAC地址都是廣播地址,這樣的話,這個新的ARP條目就會發送到網絡中的任何一個設備中。而後,這些設備就會更新本身的ARP緩存,這樣一來呢,就達到欺騙的效果了。之後咱們的機器在往重要的設備上發送數據的時候,就會先檢查本身的ARP緩存啊,確實存在這麼一個ARP條目,卻不知已是被掉包的了。因此呢,咱們發送的數據就不會按照咱們原來的意願,到達真正的目的地。 
從上面的這些話當中,咱們能夠提煉出:中毒後的機器會頻繁的自動產生一些假的ARP包,來達到讓別的設備更新本身的ARP緩存的目的,以達到欺騙的目的。 
咱們能夠分下實現這個ARP病毒須要分幾個步驟: 
1.機器得本身產生ARP報文。 
2.而且必定要頻繁,更新設備ARP緩存的間隔必定要比正常狀況下的小,且小的多。 
3.別的設備得接受,而且認可這種頻繁來更新的ARP條目。 
知道了它的工做過程,那麼咱們就從各個步驟進行分析,下對策。 
首先說呢,ARP這個協議自己就不怎麼地,自己就是不安全的。就是在沒有ARP請求包的狀況下,機器也能夠發送ARP迴應包。這樣看來的話,就好像是UDP對應起TCP同樣,是屬於那種「無鏈接狀態」的。也正是這種協議自己的安全缺陷,才讓欺騙這麼容易的進行。沒事的狀況下,設備還具有發送這樣的ARP包的能力呢,別說中毒了,那就發送的更狂了,而且發送的還都是一些通過特定修改的。修改ARP迴應包的源Ip地址,修改爲重要設備的地址。修改了這個IP地址,才能夠對這個對應的IP地址的設備進行阻礙,之後發送往這個設備發送的數據都會發送到這個中毒的機器來。也許你會說,中毒的能夠發,人家那個正常的設備也能夠發啊。是啊,因此爲不讓其餘的設備認可真正的設備發送的ARP包,這個中毒的機器才使得本身拼命的發,一個勁的發,拼命的發。這樣的話,讓那個真正的設備發送的ARP包沒有機會更新其餘設備的ARP緩存。若是咱們不應找個ARP包的源MAC地址的話,也就是說這個MAC地址是這個中毒的機器的MAC地址,那麼之後發送到那個源IP地址的設備的數據都會發送到這個中毒的機器來。若是這個MAC地址是網關的地址的話,那麼其餘的機器上網的數據不是發送到真正的網關了,而是發送到這個中毒的機器來。若是在這個機器上再安裝個分析軟件的話,就徹底能夠知曉網絡中的一切信息交流。若是這個MAC地址是個無效的。那麼之後發送到那個源IP地址的數據流就會被無奈的丟棄啦。由於在LAN中傳輸數據用的是MAC啊,。如今每一個機器都是知道了那個IP地址的是那個MAC地址,卻不知這個MAC是靜心策劃的無效MAC。這樣一來的話,就會致使發送到那個IP地址的數據所有被丟棄。形成的後果如何就看這個ARP包的源Ip地址是什麼設備的IP地址 了。若是是網關的話,那麼全網的機器就都上不去網了。若是是一個普通機器的Ip地址呢,那麼這個機器就上不去了。咱們說的,這種ARP病毒包會頻繁的發送,雖然正常的ARP包被接受的概率很小很小了,可是也會有被接受的可能啊,因此,ARP病毒會致使網絡中的機器上網斷斷續續的。厲害了,就徹底出現網絡斷開的現象咯。不知不覺,一個「首先」就分析了1和2兩個步驟。那麼咱們對於上述的這些過程,該如何阻撓呢?細看,這些都是病毒的實質的工做方式。咱們不可能更改他們啊。那麼咱們就想一想是否能夠阻止這樣的數據包進入網絡。若是進入不了網絡,那就徹底麼事咯。這個問題就須要咱們在機器聯網的地方作手腳了。那就是接入層交換機上的端口咯。也就說得讓交換機的端口只容許一個MAC地址的數據包經過,而且這個數據包仍是的MAC地址仍是下面鏈接的機器的真正的MAC地址。這樣一來呢,若是再找個端口上進出其餘MAC地址的數據包,這個端口就會採起相應的措施:關閉端口(永久性關閉或者將端口週期性的進入到err-disable狀態)、限制(將非匹配MAC地址的數據包所有丟棄掉)、保護(當端口學習的MAC地址數到達了設置在這個端口上能夠學習的MAC的最大數量的時候,丟棄後面來的任何不一樣於先前這些MAC地址的數據包。)
最近,我單位碰到一個很是奇怪的問題,一臺P4品牌電腦,內置英特爾網卡,一直以來用得挺好,瀏覽互聯網,內網的通訊都很正常。忽然有一天,發現這臺計算機在瀏覽互聯網時時通時斷,ping互聯網上的地址時,也是通一下,斷一下,但ping內網時什麼問題也沒有,和內網的通訊也很是正常,就是和互聯網通訊時有這種現象,很是使人費解。這臺電腦的IP地址爲192.168.24.55,防火牆的 IP地址爲192.168.24.7。 

檢查物理鏈路 
我單位全部訪問互聯網的電腦都是經過Netscreen NS25防火牆來鏈接的,若是說是防火牆的問題,而其餘的電腦訪問互聯網都挺正常,沒有時通時斷的現象。根據這臺電腦ping的現象來看,問題彷佛應該在下三層,而時通時斷的現象好像是典型的物理層的問題,那麼首先開始檢查鏈路。 
這臺電腦是接在一臺Cisco三層交換機的某一個端口上,防火牆也是接在這臺三層交換機上,在三層交換機上啓用了路由,配置上確定沒有問題。先檢查電腦到交換機的網線,若是說這根網線有問題,那麼這臺電腦與內網的通訊也應該有問題,經過對這根網線的測試證明沒有問題。防火牆到交換機的跳線就更應該沒有問題了,由於其餘的電腦都沒有問題。由此能夠判斷鏈路是沒有問題的,網卡會有問題嗎?確定也不會,由於它跟內網的通訊是正常的,因此網卡確定也沒有問題。那麼就能夠排除物理層的問題了。 

模擬數據通訊 
再看網絡層,這臺電腦可以訪問互聯網,但並非徹底不行,只不過有丟包而已,彷佛網絡層也不該該有問題,那麼全部問題彷佛就集中在數據鏈路層了。數據鏈路層的問題會是哪裏呢?思考了幾天,毫無頭緒,最後只好仔細的想想網絡通訊的過程,看能不能找到問題。 
假設這臺電腦有一個數據包須要發送到互聯網,那麼首先它會檢查目的地址與本機地址是不是在一個網絡中,若是不在一個網絡中,就會將數據包發送給默認網關,本案例中目的IP爲互聯網地址,因此確定不在一個網絡中,因此數據包會發送給默認網關。在這裏默認網關爲那臺Cisco三層交換機,IP地址爲192.168.24.10。這時192.168.24.55這臺電腦會檢查本機的ARP表,查找192.168.24.10所對應的MAC地址,若是在ARP表中沒有發現相應的ARP表項,它就會發送一個ARP請求包,將它發送給網絡中的全部設備來得到192.168.24.10的MAC地址。因爲ARP請求包是以廣播方式發送的,網絡中的全部設備都會接收到這個包,而後傳送給網絡層檢驗。 
當Cisco三層交換機接收到這個ARP請求時,就會檢查本機的IP地址和ARP請求包中的目的IP地址是否相同,若是相同,交換機就會作出ARP應答,將它的MAC地址發送給源,也就是192.168.24.55這臺電腦。這臺電腦收到ARP應答包後,就會將交換機的IP地址192.168.24.10和MAC地址寫入ARP表,而後將交換機的MAC地址做爲目的MAC地址封裝到數據包中,並將數據包發送到交換機。交換機在收到數據包後,就會檢查目的IP是否在本網段中,發現不在本網段中,就會查找路由表,看看有沒有到目的IP的路由條目,若是沒有,就會將數據包發送給默認路由,在本案例中這臺交換機的默認路由是那臺IP爲192.168.24.7的防火牆。因此交換機就會發送一個ARP廣播,以得到防火牆的MAC地址。防火牆作出ARP應答後,交換機就會將防火牆的MAC地址做爲目的MAC地址封裝到數據包中,數據包就會發送到防火牆,而後防火牆就會又重複上述過程,將數據包發送給互聯網上的目的地址。這一切過程都是正常的,沒有什麼問題。在電腦和交換機的ARP表中都能找到相應的ARP記錄,用tracert命令跟蹤路由也是正常的,那問題究竟在什麼地方呢?看來還得繼續分析。 

過濾ARP表 
在數據包到達了互聯網上的目的地址以後,響應的數據包要返回到這臺電腦,那麼它也應該重複前面的過程。返回數據包先到達防火牆,在防火牆的ARP表中尋找目的IP地址所對應的MAC地址,若是沒有,就會發送ARP請求,獲得目的電腦的MAC地址,將電腦的IP地址和MAC地址寫入防火牆的ARP表,封裝後發送給這臺電腦。這一切看起來都是正常的,但爲何會出現時通時斷的現象呢?由這臺電腦在內網都是正常的現象來判斷,在三層交換機上應該是沒有問題的,只是在訪問互聯網時纔出現問題,最後決定從防火牆上開始檢查。 
Telnet上防火牆,檢查防火牆配置,一切正常;檢查端口,一切正常;檢查路由表,也是一切正常。疑惑中,彷佛不知該從哪裏下手了。忽然間,想起來爲了防止內網用戶盜用IP地址上網,在防火牆上作了IP地址和MAC地址的綁定的!對,檢查檢查ARP表。因而輸入命令:get arp,顯示一大串ARP表的信息,居然所有是IP地址和MAC地址的靜態綁定的信息,僅僅只有一條動態的,那是防火牆的下一跳的IP地址和下一跳的MAC地址的信息,就是沒有192.168.24.55的ARP表項,難道是……ARP表的問題?彷佛看到了一絲但願! 
因而決定先清除幾個靜態綁定的ARP表項試試,先用unset arp命令一連清除了6條靜態綁定的ARP表項,而後在那臺電腦上ping互聯網的地址,竟然不丟包了!?困擾我幾天的問題難道就這樣解決了嗎?我簡直有點不敢相信,又讓個人同事在這臺電腦上面測試一下,登陸QQ,瀏覽網頁,收發郵件……,竟然一切正常,再也沒有原來時通時斷的現象了!再Telnet到防火牆上,get arp一看,192.168.24.55那臺電腦的ARP表項赫然在目。看來問題真的解決了!高興之餘坐下來再好好的想想緣由吧。 

故障溯源 
這臺Netscreen NS 25的防火牆最多支持128個ARP表項,若是不進行靜態綁定,ARP表項會不斷地進行更新,超時的自動會刪掉,因此不會出現ARP表項被佔滿的狀況。而若是是靜態綁定,那麼它永遠就不會被清除,永遠會佔據一個ARP表項,留給動態使用的ARP表項空間就會愈來愈少,直到所有佔滿,致使我所碰到的狀況。那麼既然如此,有朋友會問了,既然都佔滿了,其餘的電腦就會徹底不通,爲何會出現時通時斷的現象呢?因而我將ARP表項數了一下,靜態綁定的恰好達到127個,剩下一個給防火牆的下一跳的地址佔用了,注意這個是動態的,當它的更新時間到了以後,就被刪掉了,那臺電腦就佔用了這個表項,因而網絡就通了,由於還有其它的電腦在不斷地訪問互聯網,因此192.168.24.55的ARP表項一到達更新時間立刻就會被防火牆的下一跳的地址所佔用,這時網絡就不通了。其實在這時,我單位的全部機器在訪問互聯網時都會出現時通時斷的現象,只不過防火牆的下一跳的地址佔用ARP表項的時間長,互聯網中斷的時間在你們可以忍受的範圍內,都沒有發覺罷了。由於防火牆的下一跳的地址佔用ARP表項的時間長,192.168.24.55的ARP表項寫不進ARP表,產生超時,因此它不通的時間就長一些,就出現時通時斷的現象了。

一、清空ARP緩存:你們可能都曾經有過使用ARP的指令法解決過ARP欺騙問題,該方法是針對ARP欺騙原理進行解決的。通常來講ARP欺騙都是經過發送虛假的MAC地址與IP地址的對應ARP數據包來迷惑網絡設備,用虛假的或錯誤的MAC地址與IP地址對應關係取代正確的對應關係。如果一些初級的ARP欺騙,能夠經過ARP的指令來清空本機的ARP緩存對應關係,讓網絡設備從網絡中從新得到正確的對應關係,具體解決過程以下: 
第一步:經過點擊桌面上任務欄的「開始」->「運行」,而後輸入cmd後回車,進入cmd(黑色背景)命令行模式; 
第二步:在命令行模式下輸入arp -a命令來查看當前本機儲存在本地系統ARP緩存中IP和MAC對應關係的信息; 
第三步:使用arp -d命令,將儲存在本機系統中的ARP緩存信息清空,這樣錯誤的ARP緩存信息就被刪除了,本機將從新從網絡中得到正確的ARP信息,達到局域網機器間互訪和正常上網的目的。若是是遇到使用ARP欺騙工具來進行***的狀況,使用上述的方法徹底能夠解決。但若是是感染ARP欺騙病毒,病毒每隔一段時間自動發送ARP欺騙數據包,這時使用清空ARP緩存的方法將無能爲力了。下面將接收另一種,能夠解決感染ARP欺騙病毒的方法。 
二、指定ARP對應關係:其實該方法就是強制指定ARP對應關係。因爲絕大部分ARP欺騙病毒都是針對網關MAC地址進行***的,使本機上ARP緩存中存儲的網關設備的信息出現紊亂,這樣當機器要上網發送數據包給網關時就會由於地址錯誤而失敗,形成計算機沒法上網。 
第一步:咱們假設網關地址的MAC信息爲00-14-78-a7-77-5c,對應的IP地址爲192.168.2.1。指定ARP對應關係就是指這些地址。在感染了病毒的機器上,點擊桌面->任務欄的「開始」->「運行」,輸入cmd後回車,進入cmd命令行模式; 
第二步:使用arp -s命令來添加一條ARP地址對應關係, 例如arp -s 192.168.2.1 00-14-78-a7-77-5c命令。這樣就將網關地址的IP與正確的MAC地址綁定好了,本機網絡鏈接將恢復正常了; 
第三步:由於每次從新啓動計算機的時候,ARP緩存信息都會被所有清除。因此咱們應該把這個ARP靜態地址添加指令寫到一個批處理文件(例如:bat)中,而後將這個文件放到系統的啓動項中。當程序隨系統的啓動而加載的話,就能夠免除由於ARP靜態映射信息丟失的困擾了。 
三、添加路由信息應對ARP欺騙: 
通常的ARP欺騙都是針對網關的,那麼咱們是否能夠經過給本機添加路由來解決此問題呢。只要添加了路由,那麼上網時都經過此路由出去便可,天然也不會被ARP欺騙數據包乾擾了。第一步:先經過點擊桌面上任務欄的「開始」->「運行」,而後輸入cmd後回車,進入cmd(黑色背景)命令行模式; 
第二步:手動添加路由,詳細的命令以下:刪除默認的路由: route delete 0.0.0.0;添加路由: 
route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1;確認修改: 
route change此方法對網關固定的狀況比較適合,若是未來更改了網關,那麼就須要更改全部的客戶端的路由配置了。 
四、安裝殺毒軟件: 
安裝殺毒軟件並及時升級,另外建議有條件的企業可使用網絡版的防病毒軟件。
如何可以快速檢測定位出局域網中的ARP病毒電腦? 
面對着局域網中成百臺電腦,一個一個地檢測顯然不是好辦法。其實咱們只要利用ARP病毒的基本原理:發送僞造的ARP欺騙廣播,中毒電腦自身假裝成網關的特性,就能夠快速鎖定中毒電腦。能夠設想用程序來實現如下功能:在網絡正常的時候,緊緊記住正確網關的IP地址和MAC地址,而且實時監控着來自全網的ARP數據包,當發現有某個ARP數據包廣播,其IP地址是正確網關的IP地址,可是其MAC地址居然是其它電腦的MAC地址的時候,這時,無疑是發生了ARP欺騙。對此可疑MAC地址報警,在根據網絡正常時候的IP-MAC地址對照表查詢該電腦,定位出其IP地址,這樣就定位出中毒電腦了。下面詳細說一下如何利用命令行方式檢測ARP中毒電腦的方法。 
命令行法 
這種方法比較簡便,不利用第三方工具,利用系統自帶的ARP命令便可完成。當局域網中發生ARP欺騙的時候,ARP病毒電腦會向全網不停地發送ARP欺騙廣播,這時局域網中的其它電腦就會動態更新自身的ARP緩存表,將網關的MAC地址記錄成ARP病毒電腦的MAC地址,這時候咱們只要在其它受影響的電腦中查詢一下當前網關的MAC地址,就知道中毒電腦的MAC地址了,查詢命令爲 ARP -a,須要在cmd命令提示行下輸入。輸入後的返回信息以下: 
Internet Address Physical Address Type 
192.168.0.1 00-50-56-e6-49-56 dynamic 

這時,因爲這個電腦的ARP表是錯誤的記錄,所以,該MAC地址不是真正網關的MAC地址,而是中毒電腦的MAC地址!這時,再根據網絡正常時,全網的IP—MAC地址對照表,查找中毒電腦的IP地址就能夠了。因而可知,在網絡正常的時候,保存一個全網電腦的IP—MAC地址對照表是多麼的重要。可使用nbtscan工具掃描全網段的IP地址。緩存

相關文章
相關標籤/搜索