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