王 明 張學(xué)林
[摘要]介紹ARP協(xié)議的定義和工作原理,分析ARP欺騙攻擊的過程和攻擊危害,分析ARP病毒,有針對性提出解決ARP欺騙攻擊方案,最后給出安全防范的措施和原則。
[關(guān)鍵詞]ARP協(xié)議 局域網(wǎng) ARP欺騙 安全防范
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0420061-02
一、ARP欺騙原理
ARP欺騙就是一種用于會話劫持攻擊中的常見手法。地址解析協(xié)議(ARP)利用第2層物理MAC地址來映射第3層邏輯IP地址,如果設(shè)備知道了IP地址,但不知道被請求主機(jī)的MAC地址,它就會發(fā)送ARP請求。ARP請求通常以廣播形式發(fā)送,以便所有主機(jī)都能收到。
在電信一般接終端的交換機(jī)都是2層交換機(jī),交換原理是通過IP尋找對應(yīng)的MAC網(wǎng)卡地址,由于TCP/IP協(xié)議決定了只會通過MAC尋址到對應(yīng)的交換機(jī)的物理端口,所以才會遭到ARP欺騙攻擊。
首先局域網(wǎng)的某一臺電腦中了ARP病毒,通過他自動發(fā)送ARP欺騙包,正常的TCP/IP網(wǎng)絡(luò)是不會有這樣的錯(cuò)誤包發(fā)送的,而人工發(fā)送又比較麻煩。也就是說當(dāng)黑客沒有運(yùn)行這個(gè)惡毒程序的話,網(wǎng)絡(luò)上通信應(yīng)該是一切正常的,保留在各個(gè)連接網(wǎng)絡(luò)計(jì)算機(jī)上的ARP緩存表也應(yīng)該是正確的,只有程序啟動開始發(fā)送錯(cuò)誤ARP信息以及ARP欺騙包時(shí)才會讓某些計(jì)算機(jī)訪問網(wǎng)絡(luò)出現(xiàn)問題。接下來我們來闡述下ARP欺騙的原理。
第一步:假設(shè)這一個(gè)網(wǎng)絡(luò),一個(gè)Hub或交換機(jī)連接了3臺機(jī)器,依次是計(jì)算機(jī)A,B,C。
A的地址為:IP:192.168.1.1 MAC:AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.1.2 MAC:BB-BB-BB-BB-BB-BB
C的地址為:IP:192.168.1.3 MAC:CC-CC-CC-CC-CC-CC
第二步:正常情況下在A計(jì)算機(jī)上運(yùn)行ARP -A查詢ARP緩存表應(yīng)該出現(xiàn)如下信息。
Interface:192.168.1.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.1.3 CC-CC-CC-CC-CC-CC dynamic
第三步:在計(jì)算機(jī)B上運(yùn)行ARP欺騙程序,來發(fā)送ARP欺騙包。
B向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答,而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應(yīng)該是CC-CC-CC-CC-CC-CC,這里被偽造了)。當(dāng)A接收到B偽造的ARP應(yīng)答,就會更新本地的ARP緩存(A可不知道被偽造了)。而且A不知道其實(shí)是從B發(fā)送過來的,A 這里只有192.168.10.3(C
的IP地址)和無效的DD-DD-DD-DD-DD-DD mac地址。
第四步:欺騙完畢我們在A計(jì)算機(jī)上運(yùn)行ARP-A來查詢ARP緩存信息。你會發(fā)現(xiàn)原來正確的信息現(xiàn)在已經(jīng)出現(xiàn)了錯(cuò)誤。
從上面的介紹我們可以清楚的明白原來網(wǎng)絡(luò)中傳輸數(shù)據(jù)包最后都是要根據(jù)MAC地址信息的,也就是說雖然我們?nèi)粘Mㄓ嵍际峭ㄟ^IP地址,但是最后還是需要通過ARP協(xié)議進(jìn)行地址轉(zhuǎn)換,將IP地址變?yōu)镸AC地址。而上面例子中在計(jì)算機(jī)A上的關(guān)于計(jì)算機(jī)C的MAC地址已經(jīng)錯(cuò)誤了,所以即使以后從A計(jì)算機(jī)訪問C計(jì)算機(jī)這個(gè)192.168.1.3這個(gè)地址也會被ARP協(xié)議錯(cuò)誤的解析成MAC地址為DD-DD-DD-DD-DD-DD的。
ARP欺騙可以造成內(nèi)部網(wǎng)絡(luò)的混亂,讓某些被欺騙的計(jì)算機(jī)無法正常訪問內(nèi)外網(wǎng),讓網(wǎng)關(guān)無法和客戶端正常通信。實(shí)際上他的危害還不僅僅如此,由于系統(tǒng)并不會判斷ARP緩存的正確與否,無法像IP地址沖突那樣給出提示。由于網(wǎng)關(guān)MAC地址錯(cuò)誤,所以從網(wǎng)絡(luò)中計(jì)算機(jī)發(fā)來的數(shù)據(jù)無法正常發(fā)到網(wǎng)關(guān),自然無法正常上網(wǎng)。這就造成了無法訪問外網(wǎng)的問題。
二、ARP病毒分析
由于ARP欺騙的木馬程序發(fā)作的時(shí)候會發(fā)出大量的數(shù)據(jù)包導(dǎo)致局域網(wǎng)通訊擁塞以及其自身處理能力的限制,用戶會感覺上網(wǎng)速度越來越慢。當(dāng)ARP欺騙的木馬程序停止運(yùn)行時(shí),用戶會恢復(fù)從路由器上網(wǎng),切換過程中用戶會再斷一次線。
在路由器的“系統(tǒng)歷史記錄”中看到大量如下的信息:
MAC Chged 10.128.103.124
MAC Old 00:01:6c:36:d1:7f
MAC New 00:05:5d:60:c7:18
這個(gè)消息代表了用戶的MAC地址發(fā)生了變化,在ARP欺騙木馬開始運(yùn)行的時(shí)候,局域網(wǎng)所有主機(jī)的MAC地址更新為病毒主機(jī)的MAC地址(即所有信息的MAC New地址都一致為病毒主機(jī)的MAC地址),同時(shí)在路由器的“用戶統(tǒng)計(jì)”中看到所有用戶的MAC地址信息都一樣。
如果是在路由器的“系統(tǒng)歷史記錄”中看到大量MAC Old地址都一致,則說明局域網(wǎng)內(nèi)曾經(jīng)出現(xiàn)過ARP欺騙(ARP欺騙的木馬程序停止運(yùn)行時(shí),主機(jī)在路由器上恢復(fù)其真實(shí)的MAC地址)。
BKDR_NPFECT.A病毒引起ARP欺騙之實(shí)測分析。
(一)病毒現(xiàn)象
中毒機(jī)器在局域網(wǎng)中發(fā)送假的APR應(yīng)答包進(jìn)行APR欺騙,造成其他客戶機(jī)無法獲得網(wǎng)關(guān)和其他客戶機(jī)的網(wǎng)卡真實(shí)MAC地址,導(dǎo)致無法上網(wǎng)和正常的局域網(wǎng)通信。
(二)病毒原理分析
1.病毒的組件
本文研究的病毒樣本有三個(gè)組件構(gòu)成:
%windows%SYSTEM32LOADHW.EXE(108,386 bytes)…”病毒組件釋放者”;
%windows%System32drivers pf.sys(119,808 bytes)…”發(fā)ARP欺騙包的驅(qū)動程序”;
%windows%System32msitinit.dll (39,952 bytes)…“命令驅(qū)動程序發(fā)ARP欺騙包的控制者”。
2.病毒運(yùn)作基理
(1)LOADHW.EXE 執(zhí)行時(shí)會釋放兩個(gè)組件npf.sys和msitinit.dll.
LOADHW.EXE釋放組件后即終止運(yùn)行。
注意:病毒假冒成winPcap的驅(qū)動程序,并提供winPcap的功能??蛻羧粼妊b有winPcap。
npf.sys將會被病毒文件覆蓋掉。
(2)隨后msitinit.dll將npf.sys注冊(并監(jiān)視)為內(nèi)核級驅(qū)動設(shè)備:"NetGroup Packet Filter Driver"
msitinit.dll還負(fù)責(zé)發(fā)送指令來操作驅(qū)動程序npf.sys(如發(fā)送APR欺騙包,抓包,過濾包等)以下從病毒代碼中提取得服務(wù)相關(guān)值:
(3)npf.sys 負(fù)責(zé)監(jiān)護(hù)msitinit.dll.并將LOADHW.EXE注冊為自啟動程序:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce]
dwMyTest =LOADHW.EXE
由于該項(xiàng)位于RunOnce下,該注冊表啟動項(xiàng)在每次執(zhí)行后,即會被系統(tǒng)自動刪除。
(三)反病毒應(yīng)急響應(yīng)解決方案
按以下順序刪除病毒組件:
1.刪除“病毒組件釋放者”。
%windows%SYSTEM32LOADHW.EXE
2.刪除“發(fā)ARP欺騙包的驅(qū)動程序”(兼“病毒守護(hù)程序”)。
%windows%System32drivers pf.sys
(1)在設(shè)備管理器中, 單擊“查看”“顯示隱藏的設(shè)備”在設(shè)備樹結(jié)構(gòu)中,打開“非即插即用…?!?/p>
(2)找到“NetGroup Packet Filter Driver”,若沒找到,請先刷新設(shè)備列表。
(3)右鍵點(diǎn)擊“NetGroup Packet Filter Driver”菜單,并選擇“卸載”。
(4)重啟windows系統(tǒng)。
(5)刪除%windows%System32drivers pf.sys。
3.刪除“命令驅(qū)動程序發(fā)ARP欺騙包的控制者”。
%windows%System32msitinit.dll
4.刪除以下“病毒的假驅(qū)動程序”的注冊表服務(wù)項(xiàng)。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNpf
三、定位ARP攻擊源頭和防御方法
1.主動定位方式:因?yàn)樗械腁RP攻擊源都會有其特征網(wǎng)卡會處于混雜模式,可以通過ARPKiller這樣的工具掃描網(wǎng)內(nèi)有哪臺機(jī)器的網(wǎng)卡是處于混雜模式的,從而判斷這臺機(jī)器有可能就是“元兇”。定位好機(jī)器后,再做病毒信息收集,提交給趨勢科技做分析處理。
網(wǎng)卡可以置于一種模式叫混雜模式(promiscuous),在這種模式下工作的網(wǎng)卡能夠收到一切通過它的數(shù)據(jù),而不管實(shí)際上數(shù)據(jù)的目的地址是不是它。這實(shí)際就是Sniffer工作的基本原理:讓網(wǎng)卡接收一切它所能接收的數(shù)據(jù)。
2.被動定位方式:在局域網(wǎng)發(fā)生ARP攻擊時(shí),查看交換機(jī)的動態(tài)ARP表中的內(nèi)容,確定攻擊源的MAC地址;也可以在局域居于網(wǎng)中部署Sniffer工具,定位ARP攻擊源的MAC。
也可以直接Ping網(wǎng)關(guān)IP,完成Ping后,用ARP a查看網(wǎng)關(guān)IP對應(yīng)的MAC地址,此MAC地址應(yīng)該為欺騙的MAC。
使用NBTSCAN可以取到PC的真實(shí)IP地址、機(jī)器名和MAC地址,如果有“ARP攻擊”在做怪,可以找到裝有ARP攻擊的PC的IP、機(jī)器名和MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整個(gè)192.168.16.0/24
網(wǎng)段,即192.168.16.1-192.168.16.254);或“nbtscan 192.168.16.25-137”搜索192.168.16.25-137 網(wǎng)段,即192.168.16.25-192.168.16.137。輸出結(jié)果第一列是IP地址,最后一列是MAC地址。
NBTSCAN的使用范例:
假設(shè)查找一臺MAC地址為“000d870d585f”的病毒主機(jī)。
(1)將壓縮包中的nbtscan.exe 和cygwin1.dll解壓縮放到c:下。
(2)在Windows開始運(yùn)行打開,輸入cmd(windows輸入“command”),在出現(xiàn)的DOS窗口中輸入:C:btscan -r 192.168.16.1/24(這里需要根據(jù)用戶實(shí)際網(wǎng)段輸入),回車。
(3)通過查詢IP--MAC對應(yīng)表,查出“000d870d585f”的病毒主機(jī)的IP地址為“192.168.16.223”。
通過上述方法,我們就能夠快速的找到病毒源,確認(rèn)其MAC〉機(jī)器名和IP地址。
四、局域網(wǎng)ARP病毒防范措施
1.不要把你的網(wǎng)絡(luò)安全信任關(guān)系建立在IP基礎(chǔ)上或MAC基礎(chǔ)上,(RARP
同樣存在欺騙的問題),理想的關(guān)系應(yīng)該建立在IP+MAC基礎(chǔ)上。
2.設(shè)置靜態(tài)的MAC-->IP對應(yīng)表,不要讓主機(jī)刷新你設(shè)定好的轉(zhuǎn)換表。
3.除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應(yīng)表中。
4.使用ARP服務(wù)器。通過該服務(wù)器查找自己的ARP轉(zhuǎn)換表來響應(yīng)其他機(jī)器的ARP廣播。確保這臺ARP服務(wù)器不被黑。
5.使用""proxy""代理IP的傳輸。
6.使用硬件屏蔽主機(jī)。設(shè)置好你的路由,確保IP地址能到達(dá)合法的路徑。(靜態(tài)配置路由ARP條目),注意,使用交換集線器和網(wǎng)橋無法阻止ARP欺騙。
7.管理員定期用響應(yīng)的IP包中獲得一個(gè)RARP請求,然后檢查ARP響應(yīng)的真實(shí)性。
8.管理員定期輪詢,檢查主機(jī)上的ARP緩存。
9.使用防火墻連續(xù)監(jiān)控網(wǎng)絡(luò)。注意有使用SNMP的情況下,ARP的欺騙有可能導(dǎo)致陷阱包丟失。
建議用戶采用雙向綁定的方法解決并且防止ARP欺騙。
在PC上綁定路由器的IP和MAC地址:
(1)獲得路由器的內(nèi)網(wǎng)的MAC地址(例如HIPER網(wǎng)關(guān)地址192.168.16.254的MAC地址為0022aa0022aa局域網(wǎng)端口MAC地址>)。
(2)編寫一個(gè)批處理文件rarp.bat內(nèi)容如下:
@echo off
arp -d
arp -s 192.168.16.254 00-22-aa-00-22-aa
將文件中的網(wǎng)關(guān)IP地址和MAC地址更改為您自己的網(wǎng)關(guān)IP地址和MAC地址即可。
將這個(gè)批處理軟件拖到“windows--開始--程序--啟動”中。
五、局域網(wǎng)ARP欺騙攻擊防范原則
1.建立DHCP服務(wù)器(建議建在網(wǎng)關(guān)上,因?yàn)镈HCP不占用多少CPU,而且ARP欺騙攻擊一般總是先攻擊網(wǎng)關(guān),我們就是要讓他先攻擊網(wǎng)關(guān),因?yàn)榫W(wǎng)關(guān)這里有監(jiān)控程序的,網(wǎng)關(guān)地址建議選擇192.168.10.2 ,把192.168.10.1
留空,如果犯罪程序愚蠢的話讓他去攻擊空地址吧),另外所有客戶機(jī)的IP地址及其相關(guān)主機(jī)信息,只能由網(wǎng)關(guān)這里取得,網(wǎng)關(guān)這里開通DHCP服務(wù),但是要給每個(gè)網(wǎng)卡,綁定固定唯一IP地址。一定要保持網(wǎng)內(nèi)的機(jī)器IP/MAC一一對應(yīng)的關(guān)系。這樣客戶機(jī)雖然是DHCP取地址,但每次開機(jī)的IP地址都是一樣的。
2.建立MAC數(shù)據(jù)庫,把局域內(nèi)所有網(wǎng)卡的MAC地址記錄下來,每個(gè)MAC和IP、地理位置統(tǒng)統(tǒng)裝入數(shù)據(jù)庫,以便及時(shí)查詢備案。
3.網(wǎng)關(guān)機(jī)器關(guān)閉ARP動態(tài)刷新的過程,使用靜態(tài)路郵,這樣的話,即使犯罪嫌疑人使用ARP欺騙攻擊網(wǎng)關(guān)的話,這樣對網(wǎng)關(guān)也是沒有用的,確保主機(jī)安全。
網(wǎng)關(guān)建立靜態(tài)IP/MAC捆綁的方法是:建立/etc/ethers文件,其中包含正確的IP/MAC對應(yīng)關(guān)系,格式如下:
192.168.2.32 08:00:4E:B0:24:47
然后再/etc/rc.d/rc.local最后添加:
arp -f生效即可
4.網(wǎng)關(guān)監(jiān)聽網(wǎng)絡(luò)安全。網(wǎng)關(guān)上面使用TCPDUMP程序截取每個(gè)ARP程序包,弄一個(gè)腳本分析軟件分析這些ARP協(xié)議。ARP欺騙攻擊的包一般有以下兩個(gè)特點(diǎn),滿足之一可視為攻擊包報(bào)警:第一以太網(wǎng)數(shù)據(jù)包頭的源地址、目標(biāo)地址和ARP數(shù)據(jù)包的協(xié)議地址不匹配?;蛘撸珹RP數(shù)據(jù)包的發(fā)送和目標(biāo)地址不在自己網(wǎng)絡(luò)網(wǎng)卡MAC數(shù)據(jù)庫內(nèi),或者與自己網(wǎng)絡(luò)MAC數(shù)據(jù)庫MAC/IP 不匹配。這些統(tǒng)統(tǒng)第一時(shí)間報(bào)警,查這些數(shù)據(jù)包(以太網(wǎng)數(shù)據(jù)包)的源地址(也有可能偽造),就大致知道那臺機(jī)器在發(fā)起攻擊了。
5.安裝局域網(wǎng)殺毒件.在發(fā)生ARP攻擊時(shí),及時(shí)找到病毒攻擊源頭,并收集病毒信息,可以使用趨勢科技的SIC2.0,同時(shí)收集可疑的病毒樣本文件,一起提交到趨勢科技的TrendLabs進(jìn)行分析,TrendLabs將以最快的速度提供病毒碼文件,從而可以進(jìn)行ARP病毒的防御。
6.使用可防御ARP攻擊的三層交換機(jī),綁定端口-MAC-IP,限制ARP流量,及時(shí)發(fā)現(xiàn)并自動阻斷ARP攻擊端口,合理劃分VLAN,徹底阻止盜用IP、MAC地址,杜絕ARP的攻擊。
7.對于經(jīng)常爆發(fā)病毒的網(wǎng)絡(luò),進(jìn)行Internet訪問控制,限制用戶對網(wǎng)絡(luò)的訪問。此類ARP攻擊程序一般都是從Internet下載到用戶終端,如果能夠加強(qiáng)用戶上網(wǎng)的訪問控制,就能極大的減少該問題的發(fā)生。