ARP欺騙病毒

鑑於目前ARP欺騙對局域網安全運行造成的影響,我們收集整理了這個ARP欺騙病毒的專題,希望能給您的網絡安全運行帶來幫助!
from:http://wiki.mygogou.com/doc-view-788.html


1、什麼是ARP協議


要想了解ARP欺騙攻擊的原理,首先就要了解什麼是ARP協議。
ARP是地址轉換協議(Address Resolution Protocol)的英文縮寫,它是一個鏈路層協議,工作在OSI
模型的第二層,在本層和硬件接口間進行聯繫,同時對上層(網絡層)提供服務。我們知道二層的以
太網交換設備並不能識別32位的IP地址,它們是以48位以太網地址(就是我們常說的MAC地址)傳輸
以太網數據包的。也就是說IP數據包在局域網內部傳輸時並不是靠IP地址而是靠MAC地址來識別目標
的,因此IP地址與MAC地址之間就必須存在一種對應關係,而ARP協議就是用來確定這種對應關係的
協議。ARP工作時,首先請求主機會發送出一個含有所希望到達的IP地址的以太網廣播數據包,然
後目標IP的所有者會以一個含有IP和MAC地址對的數據包應答請求主機。這樣請求主機就能獲得要
到達的IP地址對應的MAC地址,同時請求主機會將這個地址對放入自己的ARP表緩存起來,以節約不
必要的ARP通信。ARP緩存表採用了老化機制,在一段時間內如果表中的某一行沒有使用(windows系
統這個時間爲2分鐘,而Cisco路由器的這個時間爲5分鐘),就會被刪除,這樣可以大大減少ARP緩
存表的長度,加快查詢速度。通過下面的例子我們可以很清楚的看出ARP的工作機制。

ARP欺騙病毒
ARP原理
如上圖所示,假如我們有兩個網段、三臺主機、兩個網關、分別是:
主機名    IP地址        MAC地址
網關1  192.168.1.1  01-01-01-01-01-01
主機A  192.168.1.2  02-02-02-02-02-02
主機B  192.168.1.3  03-03-03-03-03-03
網關2  10.1.1.1     04-04-04-04-04-04
主機C  10.1.1.2     05-05-05-05-05-05


假如主機A要與主機B通訊,它首先會通過網絡掩碼比對,確認出主機B是否在自己同一網段內,如果
在它就會檢查自己的ARP緩存中是否有192.168.1.3這個地址對應的MAC地址,如果沒有它就會向局域
網的廣播地址發送ARP請求包,大致的意思是192.168.1.3的MAC地址是什麼請告訴192.168.1.2,而
廣播地址會把這個請求包廣播給局域網內的所有主機,但是隻有192.168.1.3這臺主機纔會響應這個
請求包,它會迴應192.168.1.2一個arp reply包,大致的意思是192.168.1.3的MAC地址是
03-03-03-03-03-03。這樣的話主機A就得到了主機B的MAC地址,並且它會把這個對應的關係存在自
己的ARP緩存表中。之後主機A與主機B之間的通訊就依靠兩者緩存表裏的MAC地址來通訊了,直到通
訊停止後兩分鐘,這個對應關係纔會被從表中刪除。

再來看一個非局域網內部的通訊過程,假如主機A需要和主機C進行通訊,它首先會通過比對掩碼發
現這個主機C的IP地址並不是自己同一個網段內的,因此需要通過網關來轉發,這樣的話它會檢查
自己的ARP緩存表裏是否有網關1(192.168.1.1)對應的MAC地址,如果沒有就通過ARP請求獲得,如果
有就直接與網關通訊,然後再由網關1通過路由將數據包送到網關2,網關2收到這個數據包後發現
是送給主機C(10.1.1.2)的,它就會檢查自己的ARP緩存(沒錯,網關一樣有自己的ARP緩存),
看看裏面是否有10.1.1.2對應的MAC地址,如果沒有就使用ARP協議獲得,如果有就是用該MAC地址將
數據轉發給主機C。


2、ARP欺騙原理


在瞭解ARP協議後我們再來看看什麼是ARP欺騙,它的目的又是什麼?通過上面的例子我們知道了
在以太局域網內數據包傳輸依靠的是MAC地址,IP地址與MAC對應的關係依靠ARP表,每臺主機(包
括網關)都有一個ARP緩存表。在正常情況下這個緩存表能夠有效的保證數據傳輸的一對一性,
也就是說主機A與主機C之間的通訊只通過網關1和網關1,象主機B之類的是無法截獲A與C之間的
通訊信息的。但是在ARP緩存表的實現機制中存在一個不完善的地方,當主機收到一個ARP的應答
包後,它並不會去驗證自己是否發送過這個ARP請求,而是直接將應答包裏的MAC地址與IP對應的
關係替換掉原有的ARP緩存表裏的相應信息。如下圖所示:

ARP欺騙病毒
ARP欺騙原理
這就導致主機B截取主機A與主機C之間的數據通信成爲可能。首先主機B向主機A發送一個ARP應答
包說192.168.1.1的MAC地址是03-03-03-03-03-03,主機A收到這個包後並沒有去驗證包的真實性而
是直接將自己ARP列表中的192.168.1.1的MAC地址替換成03-03-03-03-03-03,同時主機B向網
關1發送一個ARP響應包說192.168.1.2的MAC是03-03-03-03-03-03,同樣網關1也沒有去驗證這個
包的真實性就把自己ARP表中的192.168.1.2的MAC地址替換成03-03-03-03-03-03。當主機A想要與
主機C通訊時,它直接把應該發送給網關1(192.168.1.1)的數據包發送到03-03-03-03-03-03這個
MAC地址,也就是發給了主機B,主機B在收到這個包後經過修改再轉發給真正的網關1,當從主
機C返回的數據包到達網關1後,網關1也使用自己ARP表中的MAC,將發往192.168.1.2這個IP地
址的數據發往03-03-03-03-03-03這個MAC地址也就是主機B,主機B在收到這個包後再轉發給主
機A完成一次完整的數據通訊,這樣就成功的實現了一次ARP欺騙攻擊。
因此簡單點說ARP欺騙的目的就是爲了實現全交換環境下的數據監聽與篡改。到這裏我們可以知道
要完成一次有效的ARP欺騙的關鍵點就是雙向欺騙,也就是說欺騙者必須同時對網關和主機進行欺騙。



3、ARP欺騙病毒


首先需要說明的是,這裏說的ARP欺騙病毒並不是特指某一種病毒,而是指所有包含有ARP欺騙功
能的病毒的總稱。由於ARP欺騙到目前爲止依然是一種難以控制且非常有效的攻擊手段,在今後很
長一段時間它都會被病毒、木馬程序等利用。這也加大了我們對這類病毒的控制難度。

ARP病毒的危害:
影響局域網正常運行——局域網內一旦有ARP的攻擊存在,會欺騙局域網內所有主機和網關,讓所
有上網的流量必須經過ARP攻擊者控制的主機。其他用戶原來直接通過網關上網現在轉由通過被控
主機轉發上網,由於被控主機性能和程序性能的影響,這種轉發並不會非常流暢,因此就會導致用
戶上網的速度變慢。而由於ARP表存在老化機制,這就導致在某段時候主機能獲得正確的網關MAC直
到新的欺騙完成,這兩種情況的交替過程中,主機顯示的狀況就是時斷時續。

泄露用戶敏感信息——大部分時候這些信息是黑客們所感興趣的東西(如遊戲帳號和密碼、QQ號
和密碼、網銀帳號和密碼等)

ARP病毒的傳播方式
前面講過ARP欺騙是一種攻擊方式,所有的病毒都可以採用這種方式,因此ARP病毒傳播的方式
包括現有大部分病毒傳播的方式,從前我們掌握的情況來看,主要爲以下幾種:
通過網頁下載傳播(目前大部分ARP木馬的傳播方式)
網絡共享傳播(弱口令共享等)
移動存儲介質傳播(如U盤、移動硬盤等)
文件感染

ARP病毒的查殺
對於已知的ARP病毒,可以使用殺毒軟件或者是專殺工具進行查殺,而對於一些殺毒軟件無法查殺
的未知ARP病毒,建議用戶重新安全系統並及時升級補丁程序!


4、ARP欺騙的檢測與控制辦法



目前比較有效的檢測ARP欺騙攻擊的方法主要有兩種,一種是在局域網內部使用抓包軟件進行抓
包分析、另一種是直接到到三層交換機上查詢ARP表,這兩種方法各有優缺點,具體分析如下:

1、抓包分析
方法——使用抓包軟件(如windump、sniffer pro等)在局域網內抓ARP的reply包,以windump爲
例,使用windump -i 2 -n arp and host 192.168.0.1(192.168.0.1是您的網關地址)抓下來
的包我們只分析包含有reply字符的,格式如下:
18:25:15.706335 arp reply 192.168.0.1 is-at 00:07:ec:e1:c8:c3
如果最後的mac不是您網關的真實mac的話,那就說明有ARP欺騙存在,而這個mac就是那臺進行
ARP欺騙主機的mac。
                           
優點——簡單易行,無需特別權限設置,所有用戶都可以做,誤判率較小!

缺點——必須在局域網內部(廣播域內部)聽包纔有效。

2、三層交換機上查詢ARP緩存表
方法——登陸局域網的上聯三層交換機,並查看交換機的ARP緩存表(各種品牌的交換機命令有差異)
如果在ARP表中存在一個MAC對應多個端口(請注意是一個MAC對應多個端口,而不是一個端口上
存在多個MAC)的情況,那麼就表明存在ARP欺騙攻擊,而這個MAC就是欺騙主機的MAC。

優點——可以遠程操作,無需到局域網內部,可以通過腳本來自動分析。

缺點——需要特殊權限,普通用戶無法進行操作。


ARP欺騙的控制方法

1、主機靜態綁定網關MAC
方法——使用arp命令靜態綁定網關MAC,格式如下:
arp -s 網關IP 網關MAC
如果覺得每次手動輸入比較複雜,您可以編寫一個簡單的批處理文件然後讓它每次開機時自動運行,
批處理文件如下:
-----------------------------------
@echo off
echo "arp set"
arp -d
arp -s 網關IP 網關MAC
exit
------------------------------------

優點——簡單易行,普通用戶都能操作

缺點——只能單向綁定。需要跟網關綁定MAC結合使用。

2、網關使用IP+MAC綁定模式
方法——交換機啓用靜態ARP綁定功能,將用戶的IP與MAC進行靜態綁定,防止ARP欺騙發生。

優點——效果明顯

缺點——操作複雜,工作量巨大。無法保證主機端不被欺騙,需要與主機端綁定網關MAC結合使用。

3、使用ARP服務器
方法——在局域網內架設ARP服務器,替代主機應答ARP包。

優點——效果明顯

缺點——配置複雜,需要改變客戶端設置。成本高,需要大量的服務器。

4、使用防ARP攻擊的軟件
方法——下載和使用防ARP攻擊的軟件,如ARPFix或者是AntiARP等。

優點——簡單易行

缺點——需要用戶端都安裝,無法保證網關不被欺騙。

總結:因爲ARP欺騙利用的是ARP協議本身的缺陷,所以到目前爲止,我們依然沒有一個十分有效
的方法去控制這種攻擊。目前難點主要集中在網關交換機上,我們還沒有找到一個很有效
的方法來防範網關上的ARP列表不被欺騙修改。所以當前最有效的辦法還是迅速阻斷這種攻擊的來源。
這就要求能夠快速檢測到攻擊並定位出攻擊主機位置後加以處理。


5、防範ARP欺騙的常用工具


ARP防火牆——ARPFix
這是我們CCERT爲了解決ARP病毒所開發的一個小防火牆軟件,當它被安裝在正常主機上時,它能
有效地防範自身被ARP欺騙並能檢測出感染主機的MAC地址,如果它被安裝在感染主機上時它
可以阻斷感染主機對外發起的ARP欺騙攻擊。需要說明的是這只是一款防火牆軟件,它不具備查
殺ARP病毒的能力,如果需要查殺ARP病毒,您還是需要專業殺毒軟件。

windump軟件——windump
tcpdump軟件在windows系統下的版本,簡單易用!需要winpcap的支持。

sniffer pro軟件——sniffer
windows系統低下功能最強大的抓包分析軟件。

趨勢的ARP專殺工具——TSC_ARP
趨勢提供的最新的ARP專殺工具,解壓縮後直接運行TSC.exe即可。

AntiARP軟件——AntiArp
網絡上比較流行的防範ARP欺騙攻擊的軟件。軟件的下載地址和詳細信息請參見:
http://www.antiarp.com/


6、ARP欺騙病毒的最新狀況


以往的ARP病毒使用ARP欺騙的目的絕大多數都是爲了竊取用戶的敏感信息,但是我們最近監測到
ARP欺騙在病毒中又得到了新的應用,那就是作爲傳播網頁木馬病毒的傳播手段,當一臺主機感
染帶有這種ARP欺騙功能的病毒後,會在局域網內發動ARP欺騙,它會監聽局域網內所有主機的數據
包,一旦發現其它主機有訪問WEB網頁的行爲後,就會通過修改相應的數據封包在你訪問的網頁代
碼里加入包含有木馬程序的網頁鏈接。從而導致局域網內其它主機不管訪問什麼網站都會被導引到含
有木馬病毒的網站上去的。當您訪問任何網站您的殺毒軟件都在報該網頁有毒的話,很可能您的局域
網內就存在這種攻擊。




7、其他相關


ARP在註冊表中的項:
 1、關於arp緩存表項的生存期(有效時間)   
    在默認情況下,Windows Server 2003家族和Windows XP中,ARP緩存中的表項僅存儲2分鐘。
如果一個ARP緩存表項在2分鐘內被用到,則其期限再延長2分鐘,直到最大生命期限10分鐘爲止。
超過10分鐘的最大期限後,ARP緩存表項將被移出,並且通過另外一個ARP請求——ARP迴應交換
來獲得新的對應關係。
ARP緩存表項的存放時間可以通過改變ArpCacheLife和ArpCacheMinReferencedLife的註冊表
值來重新設置。

ArpCacheLife
Location:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
Data   Type:   REG_DWORD
Valid   range:   0-0xFFFFFFFF
Default   value:   120
Present   by   default:   No

ArpCacheLife設置了未被使用的ARP緩存表項可以被保持的時間。如果註冊表中沒有ArpCacheLife項,
則ArpCacheLife的默認值是120秒(2分鐘)。  

ArpCacheMinReferencedLife
Location:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
Data   Type:   REG_DWORD
Valid   range:   0-0xFFFFFFFF
Default   value:   600
Present   by   default:   No

ArpCacheMinReferencedLife設置被重複使用的表項可以在ARP緩存中存放的時間。
ArpCacheMinReferencedLife的默認值是600秒(10分鐘)。
在註冊表中ArpCacheMinReferencedLife和ArpCacheLife的值的使用方法如下:
如果ArpCacheLife比ArpCacheMinReferencedLife的值大或與之相等,則被使用和未被使用的ARP
緩存表項可存儲的時間都是ArpCacheLife。
如果ArpCacheLife比ArpCacheMinReferencedLife的值小,則未被使用的ARP緩存表項在
ArpCacheLife秒的時間後就過期了,被使用的表項的生存期爲ArpCacheMinReferencedLife秒。

2、無償ARP和重複的IP地址檢測
ARP可以被用來檢測重複的IP地址,這是通過傳送一種叫做無償ARP的ARP請求來完成的。無償
ARP就是一個發往自己IP地址的ARP請求。在無償ARP中,SPA(發送者協議地址)和TPA(目標協議
地址)被設置成同一個IP地址。
如果節點發送一個發往自己IP地址的ARP請求,就不應收到任何一個ARP迴應幀,這樣節點就可以
判斷沒有其他節點使用跟它相同的IP地址。如果節點發送一個發往自己IP地址的ARP請求,結果收
到ARP迴應,這樣此節點就可以判斷有另外一個節點使用同樣的IP地址。註冊表中對ArpRetryCount
的設置控制了無償ARP的發送數量。

ArpRetryCount
Location:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
Data   Type:   REG_DWORD
Valid   range:   0-3
Default   value:   3
Present   by   default:   No

ArpRetryCount設置了當初始化某個IP地址時,發送的無償ARP的次數。如果發送了ArpRetryCount
個無償ARP後,都沒有收到ARP迴應,IP就假定此IP地址在此網絡段中是唯一的。

提示:無償ARP試圖檢測在同一個網絡段中的IP地址重複。由於路由器並不轉發ARP幀,無償ARP
並不能檢測在不同網絡段之間的IP地址衝突。個人感覺這種無償ARP是不是能夠用在開發檢測ARP
病毒的機制上?


8、討論


目前我們還沒有一個針對該種攻擊方式特別行之有效的辦法,如果您在處理ARP病毒的時候有什
麼好的方法和經驗,歡迎您與大家分享!稍後我們會建立一個郵件列表,用來討論相關的問題!  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章