經(jīng)分析,這大部分是由于病毒進(jìn)行ARP地址欺騙造成的。由于ARP協(xié)議的固有的缺陷,病毒通過發(fā)送假的ARP數(shù)據(jù)包,使得同網(wǎng)段的計(jì)算機(jī)誤以為中毒計(jì)算機(jī)是網(wǎng)關(guān),造成其它計(jì)算機(jī)上網(wǎng)中斷(第一種情況)。或是假冒網(wǎng)絡(luò)中特定的機(jī)器對(duì)這臺(tái)機(jī)器通信的數(shù)據(jù)進(jìn)行截獲(第二種情況)。為了避免中毒計(jì)算機(jī)對(duì)網(wǎng)絡(luò)造成影響,趨勢(shì)科技已經(jīng)提供相關(guān)的防御工具KB(62735),由于ARP病毒攻擊的復(fù)雜多變性,現(xiàn)在針對(duì)兩種基本的攻擊行為的原理進(jìn)行分析,并提出相應(yīng)的解決思路。 上網(wǎng)速度很慢甚至上不了網(wǎng) 我們首先要了解一下ARP(Address Resolution Protocol)地址解析協(xié)議,它是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議。ARP具體說來就是將網(wǎng)絡(luò)層(TCP/IP協(xié)議的IP層,也就是相當(dāng)于OSI 的第三層)地址(32位)解析為數(shù)據(jù)鏈路層(TCP/IP協(xié)議的MAC層,也就是相當(dāng)于OSI的第二層)的MAC地址(48位)[RFC826]。ARP 協(xié)議是屬于鏈路層的協(xié)議,在以太網(wǎng)中的數(shù)據(jù)幀從一個(gè)主機(jī)到達(dá)網(wǎng)內(nèi)的另一臺(tái)主機(jī)是根據(jù)48位的以太網(wǎng)地址(硬件地址)來確定接口的,而不是根據(jù)32位的IP 地址。內(nèi)核(如驅(qū)動(dòng))必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。當(dāng)然,點(diǎn)對(duì)點(diǎn)(如兩臺(tái)直聯(lián)的計(jì)算機(jī))的連接是不需要ARP協(xié)議的。為了解釋ARP協(xié)議的作用,就必須理解數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸過程。這里舉一個(gè)簡單的ping例子。 假設(shè)我們的計(jì)算機(jī)A的IP地址是192.168.1.50,要測(cè)試與B機(jī)器的連通性,執(zhí)行這個(gè)命令:ping 192.168.1.51。該命令會(huì)通過ICMP協(xié)議發(fā)送ICMP數(shù)據(jù)包。該過程需要經(jīng)過下面的步驟: 1、應(yīng)用程序構(gòu)造數(shù)據(jù)包,該示例是產(chǎn)生ICMP包,被提交給內(nèi)核(網(wǎng)絡(luò)驅(qū)動(dòng)程序); 2、內(nèi)核檢查是否能夠轉(zhuǎn)化該IP地址為MAC地址,也就是在本地的ARP緩存中查看IP-MAC對(duì)應(yīng)表; 3、如果存在該IP-MAC對(duì)應(yīng)關(guān)系,那么數(shù)據(jù)包直接發(fā)出;如果不存在該IP-MAC對(duì)應(yīng)關(guān)系,那么接續(xù)下面的步驟; 4、內(nèi)核進(jìn)行ARP廣播,目的地的MAC地址是BB-BB-BB-BB-BB-BB,ARP命令類型為Request,其中包含有自己的MAC地址;(下面會(huì)講到具體包格式) 5、當(dāng)B主機(jī)接收到該ARP請(qǐng)求后,就發(fā)送一個(gè)ARP的Reply命令,其中包含自己的MAC地址; 6、B獲得A主機(jī)的IP-MAC地址對(duì)應(yīng)關(guān)系,并保存到ARP緩存中; 7、B內(nèi)核將把IP轉(zhuǎn)化為MAC地址,然后封裝在以太網(wǎng)頭結(jié)構(gòu)中,再把數(shù)據(jù)發(fā)送出去; 使用arp -a命令就可以查看本地的ARP緩存內(nèi)容,所以,執(zhí)行一個(gè)本地的ping命令后,ARP緩存就會(huì)存在一個(gè)目的IP的記錄了。當(dāng)然,如果你的數(shù)據(jù)包是發(fā)送到不同網(wǎng)段的目的地,那么就一定存在一條網(wǎng)關(guān)的IP-MAC地址對(duì)應(yīng)的記錄。 知道了ARP協(xié)議的作用,就能夠很清楚地知道,數(shù)據(jù)包的向外傳輸依靠ARP協(xié)議,當(dāng)然,也就是依賴ARP緩存。要知道,ARP協(xié)議的所有操作都是內(nèi)核自動(dòng)完成的,同其他的應(yīng)用程序沒有任何關(guān)系。ARP協(xié)議并不只在發(fā)送了ARP請(qǐng)求才接收ARP應(yīng)答。而ARP協(xié)議的固有缺陷就在這里,當(dāng)計(jì)算機(jī)接收到ARP應(yīng)答數(shù)據(jù)包的時(shí)候,就會(huì)對(duì)本地的ARP緩存進(jìn)行更新,將應(yīng)答中的IP和MAC地址存儲(chǔ)在ARP緩存中。因此, B向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答,而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.1.52(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)答,就會(huì)更新本地的ARP 緩存,將本地的IP-MAC對(duì)應(yīng)表更換為接收到的數(shù)據(jù)格式,由于這一切都是A的系統(tǒng)內(nèi)核自動(dòng)完成的,A可不知道被偽造了。 某些病毒就是利用這個(gè)原理,向受害者發(fā)送源硬件地址為隨機(jī)產(chǎn)生貌似來自網(wǎng)關(guān)的ARP應(yīng)答包,于是在受害者緩存里,網(wǎng)關(guān)的IP是正確的,可對(duì)應(yīng)的硬件地址卻是錯(cuò)誤的或者是中毒機(jī)器。該計(jì)算機(jī)向外發(fā)送的數(shù)據(jù)包總是發(fā)送到了錯(cuò)誤的網(wǎng)關(guān)硬件地址上或是中毒機(jī)器。 而如果病毒想要截獲某臺(tái)機(jī)器上網(wǎng)的所有通信而不被察覺,只要同時(shí)再向網(wǎng)關(guān)發(fā)送冒充此機(jī)器的相應(yīng)的數(shù)據(jù)包即可實(shí)現(xiàn)。 頻繁出現(xiàn)地址沖突的現(xiàn)象 主機(jī)A在連接網(wǎng)絡(luò)(或更改IP地址)的時(shí)候就會(huì)向網(wǎng)絡(luò)發(fā)送ARP包廣播自己的IP地址。如果網(wǎng)絡(luò)中存在相同IP地址的主機(jī)B,那么B就會(huì)通過ARP來 reply該地址,當(dāng)A接收到這個(gè)reply后,A就會(huì)跳出IP地址沖突的警告,當(dāng)然B也會(huì)有警告。因此用如果病毒發(fā)出的是ARP的Request包就會(huì)使用戶一直遭受IP地址沖突警告的困擾。 下面就以上分析做一個(gè)模擬病毒進(jìn)行ARP攻擊的行為的實(shí)驗(yàn),了解此類病毒是如何產(chǎn)生危害的。 實(shí)驗(yàn)描述:此實(shí)驗(yàn)?zāi)7翧RP攻擊的一種,機(jī)器不斷提示地址沖突,運(yùn)行變慢,無法上網(wǎng)的情況,其他情況可自行參考模擬 分析:不同病毒在中毒機(jī)器上運(yùn)行,發(fā)送的ARP包是有一定的周期的,受影響的系統(tǒng)產(chǎn)生的開銷不一。先模擬中毒機(jī)B以較大的發(fā)送頻率發(fā)送到A機(jī)器上(未中毒),如系統(tǒng)內(nèi)核處理會(huì)不斷處理接到的ARP包,這時(shí)盜用者機(jī)器上會(huì)不斷提示IP沖突, 則A機(jī)器上的系統(tǒng)開銷將大大增加,很容易無法響應(yīng)用戶操作。而這一切由于ARP處于網(wǎng)絡(luò)協(xié)議的底層,對(duì)一般防火墻等高層軟件是透明的,盜用者無從察覺,只能看到機(jī)器不端彈出沖突信息,系統(tǒng)很快慢下來,最終沒有任何響應(yīng)。 實(shí)驗(yàn)內(nèi)容: 1.首先 讓我們先了解一下ARP協(xié)議的數(shù)據(jù)結(jié)構(gòu): typedefstructarphdr { unsignedshortarp_hrd;//硬件類型 使用的硬件(網(wǎng)絡(luò)訪問層)類型一般為 0806(ARP) unsignedshortarp_pro;//協(xié)議類型 解析過程中的協(xié)議使用以太類型的值一般為000110M以太網(wǎng)) unsignedchararp_hln;//硬件地址長度 對(duì)于以太網(wǎng)和令牌環(huán)來說,其長度為6字節(jié) unsignedchararp_pln;//協(xié)議地址長度 IP的長度是4字節(jié) unsignedshortarp_op;ARP操作類型 指定當(dāng)前執(zhí)行操作的字段 1為請(qǐng)求,2為應(yīng)答 unsignedchararp_sha[6];/*發(fā)送者的硬件地址 unsignedlongarp_spa;//發(fā)送者的協(xié)議地址 unsignedchararp_tha[6];//目標(biāo)的硬件地址 unsignedlongarp_tpa;//目標(biāo)的協(xié)議地址 }ARPHDR,*PARPHDR; 下面,假設(shè)中毒機(jī)器的硬件地址是AA-AA-AA-AA-AA-AA,IP地址是192.168.1.5,受影響機(jī)器B的硬件地址是BB-BB-BB-BB-BB-BB,IP地址是192.168.1.51.為了便于說明,我們?cè)贐機(jī)器上用Sniffer Pro工具先獲得發(fā)送目標(biāo)為192.168.1.51的 ARP數(shù)據(jù)包, 由于A中病毒不斷發(fā)送ARP請(qǐng)求包,我們很容易獲得。如圖: 現(xiàn)在我們結(jié)合圖中上半部分的協(xié)議解析來分析下半部分的代碼的意義, 共有四行每行都標(biāo)了號(hào) 00行,ff ff ff ff ff ff 廣播地址,每個(gè)同網(wǎng)段用戶都能收到。 aa aa aa aa aa aa 發(fā)送方的硬件地址 08 06 指使用ARP協(xié)議 10行,00 01 10M 以太網(wǎng) 08 00 使用IP協(xié)議 06 硬件地址使用6字節(jié)表示 04 協(xié)議(IP)地址使用4字節(jié)表示 00 01 ARP請(qǐng)求包 aa aa aa aa aa aa 發(fā)送方硬件地址 c0 a8 01 32發(fā)送方IP地址 20行,00 00 00 00 00 00 目標(biāo)硬件地址 c0 a8 01 33 目標(biāo)IP地址 其他數(shù)據(jù)與本文無關(guān),暫不討論。 仔細(xì)看一下不難發(fā)現(xiàn),IP為192.168.1.5的A的IP地址被”篡改”了,A網(wǎng)絡(luò)中宣布自己假冒是192.168.1.50。 使得與192.168.1.50通信的數(shù)據(jù)發(fā)到了192.168.1.5上,而真正的192.168.1.50則運(yùn)行緩慢甚至無法上網(wǎng)。 2. 下面利用獲取的數(shù)據(jù)包,通過SnifferPro的構(gòu)造并發(fā)送數(shù)據(jù)包的功能對(duì)它進(jìn)行簡單的修改,我們可以模擬一種病毒攻擊方式: 對(duì)照前邊捕獲的數(shù)據(jù)包我們看到改動(dòng)處有(紅線標(biāo)注): 1.a(chǎn)a aa aa aa aa aa 硬件目的地址中毒機(jī)器A(DLC,數(shù)據(jù)鏈路層地址) 2.bb bb bb bb bb bb(第一組) 源硬件地址為受影響機(jī)器B(DLC) 3.bb bb bb bb bb bb(第二組) 源硬件地址為受影響機(jī)器B (ARP) 4.(c0 a8 01)32 目的IP地址為中毒機(jī)器A(ARP) 最后,我們通過Sniffer的發(fā)包工具利用不間斷發(fā)送(Continuously)將其發(fā)送給192.168.1.50,將使其很快癱瘓。筆者實(shí)驗(yàn)環(huán)境如下:TP-LINK R402M路由器,A機(jī)器配置1.8G.RAM 1.0G 。B機(jī)器配置CPU1.0G,RAM128M,B機(jī)器發(fā)送數(shù)據(jù)包15秒左右,A機(jī)器進(jìn)入“無法響應(yīng)”狀態(tài)。可見,如果病毒大規(guī)模爆發(fā),造成的網(wǎng)絡(luò)擁塞影響是十分嚴(yán)重的。 最后,提供幾種防御ARP攻擊行為的思路: 首先,需要了解一下一般解決方法,很多人知道如何捆綁MAC地址和IP地址,進(jìn)入“MS-DOS方式”或“命令提示符”,在命令提示符下輸入命令:ARP - s X.X.X.X YY-YY-YY-YY-YY-YY,即可把MAC地址和IP地址捆綁在一起。這樣,就不會(huì)出現(xiàn)IP地址被盜用而不能正常使用網(wǎng)絡(luò)的情況。從前面的分析我們知道,即使我們知道了正確的網(wǎng)關(guān)硬件地址,由于盜用者不斷發(fā)送偽造ARP包,網(wǎng)關(guān)卻不知道合法用戶的硬件地址,而且合法用戶端主機(jī)會(huì)不斷產(chǎn)生IP沖突的警告。事實(shí)上,ARP命令是對(duì)局域網(wǎng)的上網(wǎng)代理服務(wù)器來說的,如我們提出的KB(62735)中的”APR解決方案”細(xì)節(jié)內(nèi)容不在本文論述范圍內(nèi)。 一般說來,在網(wǎng)絡(luò)關(guān)鍵設(shè)備上使用的解決盜用的方法大體上有3種方案:采用路由器將網(wǎng)卡MAC地址與IP地址綁定;采用高端交換機(jī)將交換機(jī)端口、網(wǎng)卡MAC 地址與IP地址三者綁定;代理服務(wù)器與防火墻相結(jié)合的辦法。這幾種方法各有優(yōu)缺點(diǎn),采用路由器將網(wǎng)卡MAC地址與IP地址綁定的方法,只能解決靜態(tài)地址的修改,對(duì)于成對(duì)修改IP-MAC地址就無能為力。采用高端交換機(jī)將交換機(jī)端口、網(wǎng)卡MAC地址與IP地址三者綁定的方法,可以解決成對(duì)修改IP-MAC地址的問題,但高端交換機(jī)費(fèi)用昂貴,而且解決沖突具有滯后性。 當(dāng)我們遇到ARP類病毒時(shí),應(yīng)該怎么辦? 1 采用IP-MAC 綁定方法預(yù)防,如利用KB(62735)解決方案部署中ipmac_binds_tools.exe 防御工具 2 一旦發(fā)現(xiàn)無法解決的ARP病毒較復(fù)雜的攻擊行為,請(qǐng)用戶使用工具抓取病毒爆發(fā)時(shí)網(wǎng)絡(luò)中的數(shù)據(jù)包,根據(jù)以上ARP病毒的原理,分析數(shù)據(jù)包找到頻繁發(fā)送ARP的REQUEST或REPLY請(qǐng)求的機(jī)器,從而找到病毒源頭進(jìn)行查殺毒。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長網(wǎng)微信