ARP協議:IP地址是主機在網絡層中的地址。數據鏈路層是不能夠識別IP地址的,但網卡、交換機等都工作在數據鏈路層,所以如果想要將網絡層中的數據包交給目的主機,必須要在數據鏈路層封裝為有MAC地址的幀後才能發送。但是32bit的IP地址和48bit的MAC地址之間沒有簡單的映射關係。ARP協議就是將某個IP地址解析為對應的MAC地址的協議。

每個主機都設有一個ARP高速緩存,存放局域網中主機的IP地址和MAC地址對。當兩台主機進行通信時,通過查詢ARP緩存表來進行IP地址到MAC地址的轉換。緩存表中不存在查找項時,運行ARP廣播查找目標主機的MAC地址。

ARP緩存表中的每一個映射地址項都有生存時間,進行定時更新。

 

嗅探技術:

是一種常用的收集有用數據信息的網絡監聽方法,是網絡安全攻防技術中很重要的一種。

計算機與局域網的連接是通過主機箱內的網卡。網卡向下負責打包數據報為幀發送到局域網,向上接收正確的幀並交付網絡層處理。

以太網網卡一般具有四種接收工作模式:

  • 廣播模式:可以接收局域網內目的地址為廣播地址的所有數據報;
  • 多播模式:可以接收目的地址為多播地址的所有數據報;
  • 直接模式:也就是單播模式,只接收目的地址為本機MAC地址的所有數據報;
  • 混雜模式:能夠接收通過網卡的所有數據報。

1.共享式網絡的嗅探技術

以太網的共享特性決定了嗅探能夠成功。由於以太網是基於廣播方式傳送數據的,所有數據報都會被傳送到每一個主機結點,當網卡被設置成混雜模式時,無論監聽到的數據幀目的地址如何,網卡都能予以接收。

在局域網中,集線器是一種共享介質,採用單工數據操作的網絡設備,工作在物理層。集線器對接收到的數據包採用廣播的方式進行轉發,即連接到集線器上的計算機共享帶寬,並且需要處理網段內的所有數據包。

 

iptables snat 透傳源ip_IP

 

 

2.交換式網絡的嗅探技術

交換機維護一張地址映射表,地址映射表記錄網絡節點與MAC地址的對應關係,當需要向目的地址發送數據時,交換機在地址映射表中查找這個MAC地址的節點位置,然後直接向這個位置的結點發送;如果沒有找到匹配項,交換機可能會向除接收端口外的所有端口發送該數據報。在交換機的每個端口,都需要足夠的緩存來記憶這些MAC地址。

對於三層交換機,地址映射表中存儲的不僅僅是MAC地址了,而是MAC地址與IP地址的地址映射表。交換機在對一個數據流進行路由後,將會產生一個MAC地址和IP地址的地址映射。

iptables snat 透傳源ip_IP_02

網絡嗅探方法

在交換式網絡環境下,要想達到嗅探的目的,可以有三個攻擊點,一是交換機,二是目標主機,三是改變自己。

1.發送大量虛假的MAC地址數據報

交換機雖然可以維護一張 端口-MAC的地址映射表,但是由於交換機內存有限,地址映射表的大小也就有限。

如果主機C發送大量虛假MAC地址的數據報,快速填滿地址映射表。交換機在地址映射表被填滿後,就會像HUB一樣以廣播方式處理數據報。

這種方法不適合採用靜態地址映射表的交換機,而且也不是所有交換機都採用這種轉發處理方式。

2.ARP欺騙

ARP欺騙利用修改主機ARP緩存表的方法達到嗅探的目的,是一種中間人攻擊。主機C為了達到嗅探的目的,會向主機A和主機B分別發送ARP應答包,告訴他們IP地址為IPB的主機MAC地址為MACC,IP地址為IPA的主機MAC地址為MACC。

這樣主機A和主機B的ARP緩存中就會有IPB-MACC和IPA-MACC的記錄。這樣,主機A和主機B的通信數據都流向了主機C,主機C只要再發送到其真正的目的就可以了。當然APR緩存表項是動態更新的(一般為兩分鐘),如果沒有更新信息,ARP映射項會自動刪除。所以,主機C在監聽過程中,還要不斷向主機A和主機B發送偽造的ARP應答包。

3.修改本地MAC地址

也可以通過修改本地MAC地址為目標主機MAC地址來實現嗅探。把主機C的MAC地址修改為目標主機B的MAC地址,交換機會將MACB和端口C對應起來。

在收到目的地址為MACB的數據報後,交換機會將包從端口C發送出去。這樣就達到了監聽的目的。

但同樣的,這種方法只適用於動態生成地址映射表的交換機,並且沒有采用其他策略。

 

 

ARP攻擊溯源

1.捕包分析

在網絡內任意一台主機上運行抓包軟件,捕獲所有到達本機的數據包。如果發現有某個IP不斷髮送ARP Request請求包,那麼這台電腦一般就是病毒源。

原理:無論何種ARP病毒變種,行為方式有兩種,一是欺騙網關,二是欺騙網內所有主機。最終的結果是,在網關的ARO緩存表中,網內所有活動主機的MAC地址均為重度主機的MAC地址;網內所有主機的ARP緩存表中,網關的MAC地址也稱為中毒主機的MAC地址。前者保證了從網關到網內主機的數據包被髮到中毒主機,後者相反,使得主機發往網關的數據包均發送到中毒主機。

2.arp-a命令

使用arp-a命令任意選兩台不能上網的主機,在DOS命令窗口下運行arp-a命令。例如在結果中,兩台電腦除了網關的IP,MAC地址對應項,都包換了192.168.0.186的這個IP,則可以斷定192.168.0.186這台主機就是病毒源。

原理:一般情況下,網內的主機只和網關通信。正常情況下,一台主機的ARP緩存中應該只有網關的MAC地址。如果有其他主機的MAC地址,説明本地主機和這台主機最後有過數據通信發生。如果某台主機既不是網關也不是服務器,但和網內的其他主機都有過通信活動,且此時又是ARP病毒發作時期,那麼,病毒源也就是它了。

3.使用tracert命令

使用tracert命令在任意一台受影響的主機上,在DOS命令窗口下運行:tracery 61.135.179.148.

假定設置的缺省網關為10.8.6.1,在跟蹤一個外網地址時,第一跳卻是10.8.6.186,那麼10.8.6.186就是病毒源。

原理:中毒主機在受影響主機和網關之間,扮演了“中間人”的角色。所有本應該到達網關的數據包,由於錯誤的MAC地址,均被髮到了中毒主機。此時,中毒主機越俎代庖,起到了缺省網關的作用。

 

ARP攻擊防禦方法

1.減少過期時間

加快過期時間,並不能避免攻擊,但是使得攻擊更加困難,帶來的影響是在網絡中會大量的出現ARP請求和回覆,請不要在繁忙的網絡上使用。

2.建立靜態ARP表

這是一種很有效的方法,而且對系統影響不大。缺點是破壞了動態ARP協議。

windows:

arp -s ip mac #windows

 

可以建立如下的文件:

ip mac
ip mac
...

使用arp -f filename加載進去,這樣的ARP映射將不會過期和被新的ARP數據刷新,除非使用arp -d才能刪除。但是一旦合法主機的網卡硬件地址改變,就必須手工刷新這個arp文件。這個方法,不適合於經常變動的網絡環境。

Router:

Router(config)# arp ip mac arpa port

Switch:

Switch(config)# arp ip mac arpa prot

3.禁止ARP

可以通過ipconfig interface -arp完全禁止arp,這樣,網卡不會發送ARP和接收ARP包。但是使用前提是使用靜態ARP表,如果不再ARP表中的計算機,將不能通信。

這個方法不使用與大多數網絡環境,因為這增加了網絡管理的成本。但是對小規模的安全網絡來説,還是有效可行的。

4.動態綁定交換機

交換機支持端口做動態ARP綁定,將攻擊報文攔截在萌芽中。