ARP/RARP

ARP(Address Resolution Protocol,位置解析協定)
可參考RFC-826,RFC-814,RFC-1166
TCP/IP設計者用乙太網廣播性質﹐設計出來的位址解釋協定
在ethernet frame的type欄的值為0x0806表arp
用途:用ip位址找相對應的mac位址

做法:
以查詢方式獲得IP位址和實體位址的動態對應
如下
1每台主機在ARP Cache(快取緩衝區)建立ARP表記錄動態對應(資料會根據自身存活時間遞減而消失)
2送封包時檢查ARP表有無對應,有則以此mac位址傳,無則用ARP Request廣播封包(發送端IP位址和實體位址)查目的主機實體位址
ps:若快timeout時可能會以unicast傳送
3全網主機收到封包後檢查IP欄是否和自己同,是則更新ARP表(發送端實體位址和IP資料),並回含自己實體位址的ARP Reply封包
4發送端接到ARP Reply後更新自己ARP表,若無則失敗
ps:資料在倒數時間到達前被用過,則計時值被重新賦予

ARP table 
包含連接至相同lan上其他裝置的mac位址與ip位址
會將ip位址對應到相對應的mac位址
儲存在ram中,並可自動維護
網路上的每台電腦都有自己的arp表
當網路裝置透過網路傳遞資料時,便是使用arp表中所提供的資料

… 

RARP(反向位置解析協定)
可參考RFC-903,RFC-906,RFC-1293
用途:藉由mac位置找自己IP
做法
1查詢主機向網路送出RARP Request廣播封包﹐向其他主機查詢自己的 IP
2RARP伺服器(可能多台)用RARP Reply封包回應給查詢(發送端的IP位址)
RARP回應問題
方法1
每個做RARP請求的主機配1主伺服器(做回應用)
若主伺服器無法回應,則非主伺服器短時間收到2次相同請求則回應
方法2
避免同時傳回RARP回應,非主伺服器隨機等待一段時間再回應
若主伺服器無法回應,查詢主機延遲一段時間等非主伺服器的回應,若無在第二次請求

PROXY ARP
在路由器上代為回答它某網路主機ARP請求
非協定而是一種服務
原因:本地主機廣播封包無法到達遠端
做法:本地主機將封包送給撥接伺服器﹐伺服器將封包傳給遠端主機
缺點:增加網段上的交通量,且arp表會比平常的大以處理所有的ip-mac位址轉換
其他功能:將路由器所連兩端實體網路相互隱藏,讓兩網路能用同一個網路識別碼



ARP 和 RARP 之封包格式
size=28byte
HARDWARE TYPE(網卡種類)2byte,1表乙太網
PROTOCOL TYPE(高階網路協定位址種類)2byte,0x0800表IP格式,0x8137表IPX,0x0600表XNS
HLEN(硬體位址長度)1byte ,乙太網為6byte,
PLEN(網路協定位址長度)1byte,IP協定位址為4byte
OPERATION(封包類別)2byte,數值如下:
 1,ARP Request
 2,ARP Reply
 3,RARP Request
 4,RARP Reply
 5,動態RARP request
 6,動態RARP reply
 7,動態RARP error
 8,lnARP request
 9,lnARP reply
SENDER HA(發送端硬體位址)乙太網是6byte
SENDER IP(發送端IP位址)IP位址是4byte
TARGET HA(目的端硬體位址)6byte
TARGET IP(目的端IP位址)4byte

…………………

ARP spoofing(欺騙)
或稱arp攻擊
原理:藉由發出arp request或arp reply來擾亂或竄改某設備內ARP表,而導致該設備發出的資料包誤傳目的地
ex:有3台機器分為別pc1,pc2,pc3,且ip/mac分別為ip1/mac1,ip2/mac2,ip3/mac3,
其中pc3是攻擊者,攻擊方式如下
1,pc3送出arp reply給pc1,但訊息來源被設定成ip2/mac3(正常情況下應為ip3/mac3)
2,pc1相信此arp reply並更新arp table,因此往pc2的mac變為mac3
3,pc1此時要送資料到pc2,這時資料就會送到mac3
4,pc3收到pc1要給pc2的資料,攻擊成功

利用arp的攻擊主要有
dos:對目標pc發送錯誤閘道ip/mac對應之arp reply,目標即無法經由正確閘道到其他網路,會讓使用者有無法上網的錯覺 ex:netcut
man-in-middle attack:同時欺騙雙方,則可不影響pc1和pc2的通訊達到監視效果
Session Hijacking:利用ARP欺騙將使用者正常的連線搶過來

arp攻擊可分為
惡意攻擊:利用工具有意圖的攻擊特定目標,易偽裝好操作,因此較難解決
中毒而攻擊:使用者中毒而產生arp攻擊

………………..

解決man-in-middle attack的簡易辦法
將gatewayip和gatewaymac設成靜態對應
windows client用戶:使用arp -s < gateway ip > < gateway mac> 
ps:
建議也把dns ip和mac設成靜態對應,可以防假冒dns攻擊