ARP病毒攻擊技術分析與防禦

xsdan發表於2006-11-14
一、ARP Spoofing攻擊原理分析 在區域網中,透過ARP協議來完成IP地址轉換為第二層實體地址(即MAC地址)的。ARP協議對網路安全具有重要的意義。透過偽造IP地址和MAC地址實現ARP欺騙,能夠在網路中產生大量的ARP通訊量使網路阻塞或者實現“man in the middle” 進行ARP重定向和嗅探攻擊。[@more@]用偽造源MAC地址傳送ARP響應包,對ARP快取記憶體機制的攻 擊。

每個主機都用一個ARP快取記憶體存放最近IP地址到MAC硬體地址之間的對映記錄。MS Windows快取記憶體中的每一條記錄(條目)的生存時間一般為60秒,起始時間從被建立時開始算起。

預設情況下,ARP從快取中讀取IP-MAC條目,快取中的IP-MAC條目是根據ARP響應包動態變化的。因此,只要網路上有ARP響應包傳送到本機,即會更新ARP快取記憶體中的IP-MAC條目。

攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP快取中的IP-MAC條目,造成網路中斷或中間人攻擊。

ARP協議並不只在傳送了ARP請求才接收ARP應答。當計算機接收到ARP應答資料包的時候,就會對本地的ARP快取進行更新,將應答中的IP和 MAC地址儲存在ARP快取中。因此,B向A傳送一個自己偽造的ARP應答,而這個應答中的資料為傳送方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可不知道被偽造了)。

當攻擊源大量向區域網中傳送虛假的ARP資訊後,就會造成區域網中的機器ARP快取的崩潰。

Switch上同樣維護著一個動態的MAC快取,它一般是這樣,首先,交換機內部有一個對應的列表,交換機的埠對應MAC地址表Port n Mac記錄著每一個埠下面存在那些MAC地址,這個表開始是空的,交換機從來往資料幀中學習。因為MAC-PORT快取表是動態更新的,那麼讓整個 Switch的埠表都改變,對Switch進行MAC地址欺騙的Flood,不斷髮送大量假MAC地址的資料包,Switch就更新MAC-PORT快取,如果能透過這樣的辦法把以前正常的MAC和Port對應的關係破壞了,那麼Switch就會進行泛洪傳送給每一個埠,讓Switch基本變成一個 HUB,向所有的埠傳送資料包,要進行嗅探攻擊的目的一樣能夠達到。也將造成Switch MAC-PORT快取的崩潰,如下下面交換機中日誌所示:

Internet 172.20.156.10000b.cd85.a193 ARPAVlan256Internet 172.20.156.50000b.cd85.a193 ARPAVlan256Internet 172.20.156.254 0000b.cd85.a193 ARPAVlan256Internet 172.20.156.53 0000b.cd85.a193 ARPAVlan256Internet 172.20.156.33 0000b.cd85.a193 ARPAVlan256Internet 172.20.156.130000b.cd85.a193 ARPAVlan256Internet 172.20.156.150000b.cd85.a193 ARPAVlan256Internet 172.20.156.140000b.cd85.a193 ARPAVlan256

二、ARP病毒分析

當區域網內某臺主機執行ARP欺騙的木馬程式時,會欺騙區域網內所有主機和路由器,讓所有上網的流量必須經過病毒主機。其他使用者原來直接透過路由器上網現在轉由透過病毒主機上網,切換的時候使用者會斷一次線。切換到病毒主機上網後,如果使用者已經登陸了傳奇伺服器,那麼病毒主機就會經常偽造斷線的假像,那麼使用者就得重新登入傳奇伺服器,這樣病毒主機就可以盜號了。

由於ARP欺騙的木馬程式發作的時候會發出大量的資料包導致區域網通訊擁塞以及其自身處理能力的限制,使用者會感覺上網速度越來越慢。當ARP欺騙的木馬程式停止執行時,使用者會恢復從路由器上網,切換過程中使用者會再斷一次線。

在路由器的“系統歷史記錄”中看到大量如下的資訊:

MAC Chged 10.128.103.124MAC Old 00:01:6c:36:d1:7fMAC New 00:05:5d:60:c7:18
這個訊息代表了使用者的MAC地址發生了變化,在ARP欺騙木馬開始執行的時候,區域網所有主機的MAC地址更新為病毒主機的MAC地址(即所有資訊的MAC New地址都一致為病毒主機的MAC地址),同時在路由器的“使用者統計”中看到所有使用者的MAC地址資訊都一樣。

如果是在路由器的“系統歷史記錄”中看到大量MAC Old地址都一致,則說明區域網內曾經出現過ARP欺騙(ARP欺騙的木馬程式停止執行時,主機在路由器上恢復其真實的MAC地址)。
BKDR_NPFECT.A病毒引起ARP欺騙之實測分析

Part1. 病毒現象

中毒機器在區域網中傳送假的APR應答包進行APR欺騙, 造成其他客戶機無法獲得閘道器和其他客戶機的網路卡真實MAC地址,導致無法上網和正常的區域網通訊.

Part2. 病毒原理分析:

病毒的元件
本文研究的病毒樣本有三個元件構成:
%windows%SYSTEM32LOADHW.EXE(108,386 bytes) ….. ”病毒元件釋放者”
%windows%System32driversnpf.sys(119,808 bytes) ….. ”發ARP欺騙包的驅動程式”
%windows%System32msitinit.dll (39,952 bytes)…”命令驅動程式發ARP欺騙包的控制者”
病毒運作基理:
1.LOADHW.EXE 執行時會釋放兩個元件npf.sys 和msitinit.dll .
LOADHW.EXE釋放元件後即終止執行.
注意: 病毒假冒成winPcap的驅動程式,並提供winPcap的功能. 客戶若原先裝有winPcap,
npf.sys將會被病毒檔案覆蓋掉.

2.隨後msitinit.dll將npf.sys註冊(並監視)為核心級驅動裝置: "NetGroup Packet Filter Driver"
msitinit.dll 還負責傳送指令來操作驅動程式npf.sys (如傳送APR欺騙包, 抓包, 過濾包等)
以下從病毒程式碼中提取得服務相關值:
BinaryPathName = "system32driversnpf.sys"StartType = SERVICE_AUTO_STARTServiceType= SERVICE_KERNEL_DRIVERDesiredAccess= SERVICE_ALL_ACCESSDisplayName = "NetGroup Packet Filter Driver"ServiceName = "Npf"
3. npf.sys 負責監護msitinit.dll. 並將LOADHW.EXE註冊為自啟動程式:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce]
dwMyTest =LOADHW.EXE
注: 由於該項位於RunOnce下,該登錄檔啟動項在每次執行後,即會被系統自動刪除.
Part3. 反病毒應急響應解決方案
按以下順序刪除病毒元件
1) 刪除 ”病毒元件釋放者”
%windows%SYSTEM32LOADHW.EXE
2) 刪除 ”發ARP欺騙包的驅動程式” (兼 “病毒守護程式”)
%windows%System32driversnpf.sys
a. 在裝置管理器中, 單擊”檢視”--&gt”顯示隱藏的裝置”
b. 在裝置樹結構中,開啟”非即插即用….”
c. 找到” NetGroup Packet Filter Driver” ,若沒找到,請先重新整理裝置列表
d. 右鍵點選” NetGroup Packet Filter Driver” 選單,並選擇”解除安裝”.
e. 重啟windows系統,
f.刪除%windows%System32driversnpf.sys
3) 刪除 ”命令驅動程式發ARP欺騙包的控制者”
%windows%System32msitinit.dll
2. 刪除以下”病毒的假驅動程式”的登錄檔服務項:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNpf

三、定位ARP攻擊源頭和防禦方法

1.定位ARP攻擊源頭
主動定位方式:因為所有的ARP攻擊源都會有其特徵——網路卡會處於混雜模式,可以透過ARPKiller這樣的工具掃描網內有哪臺機器的網路卡是處於混雜模式的,從而判斷這臺機器有可能就是“元兇”。定位好機器後,再做病毒資訊收集,提交給趨勢科技做分析處理。

標註:網路卡可以置於一種模式叫混雜模式(promiscuous),在這種模式下工作的網路卡能夠收到一切透過它的資料,而不管實際上資料的目的地址是不是它。這實際就是Sniffer工作的基本原理:讓網路卡接收一切它所能接收的資料。

被動定位方式:在區域網發生ARP攻擊時,檢視交換機的動態ARP表中的內容,確定攻擊源的MAC地址;也可以在局域居於網中部署Sniffer工具,定位ARP攻擊源的MAC。
也可以直接Ping閘道器IP,完成Ping後,用ARP –a檢視閘道器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網段, 即192.168.16.1-192.168.16.254);或“nbtscan 192.168.16.25-137”搜尋192.168.16.25-137 網段,即192.168.16.25-192.168.16.137。輸出結果第一列是IP地址,最後一列是MAC地址。

NBTSCAN的使用範例:

假設查詢一臺MAC地址為“000d870d585f”的病毒主機。
1)將壓縮包中的nbtscan.exe 和cygwin1.dll解壓縮放到c:下。
2)在Windows開始—執行—開啟,輸入cmd(windows98輸入“command”),在出現的DOS視窗中輸入:C: btscan -r 192.168.16.1/24(這裡需要根據使用者實際網段輸入),回車。
3)透過查詢IP--MAC對應表,查出“000d870d585f”的病毒主機的IP地址為“192.168.16.223”。
透過上述方法,我們就能夠快速的找到病毒源,確認其MAC——〉機器名和IP地址。
2.防禦方法
a.使用可防禦ARP攻擊的三層交換機,繫結埠-MAC-IP,限制ARP流量,及時發現並自動阻斷ARP攻擊埠,合理劃分VLAN,徹底阻止盜用IP、MAC地址,杜絕ARP的攻擊。
b.對於經常爆發病毒的網路,進行Internet訪問控制,限制使用者對網路的訪問。此類ARP攻擊程式一般都是從Internet下載到使用者終端,如果能夠加強使用者上網的訪問控制,就能極大的減少該問題的發生。
c.在發生ARP攻擊時,及時找到病毒攻擊源頭,並收集病毒資訊,可以使用趨勢科技的SIC2.0,同時收集可疑的病毒樣本檔案,一起提交到趨勢科技的TrendLabs進行分析,TrendLabs將以最快的速度提供病毒碼檔案,從而可以進行ARP病毒的防禦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/262387/viewspace-877367/,如需轉載,請註明出處,否則將追究法律責任。

相關文章