ARP (Address Resolution Protocol) 是區域網路中 IP 位址對應 MAC 位址的核心協定。因其無驗證機制、緩存可被偽造更新,成為中間人攻擊 (MITM) 的主要向量。本文深入解析 ARP 運作流程、欺騙原理、實戰攻擊步驟與多層次防禦體系。
ARP 協定運作機制
封包結構
- 硬體類型:1 = 乙太網路
- 協定類型:0x0800 = IPv4
- 硬體位址長度:6 (MAC)
- 協定位址長度:4 (IPv4)
- 操作碼:1=ARP 請求、2=ARP 回應、3=RARP 請求、4=RARP 回應
- 發送端 MAC/IP、目標端 MAC/IP
正常解析流程
- 主機 A 欲連線主機 B (IP 已知,MAC 未知)
- A 廣播 ARP Request:「Who has B's IP? Tell A」
- 全網段主機接收,B 識別為自身 IP → 單播 ARP Reply:「B's IP is at B's MAC」
- A 更新 ARP 緩存 (IP→MAC 映射),緩存壽命通常 20 分鐘
- 後續封包直接使用 MAC 封裝傳輸
ARP 欺騙攻擊原理
核心弱點
- 無身分驗證:任何主機可發送 ARP Reply
- 緩存覆寫:收到 Reply 即更新緩存,不驗證來源
- 免費 ARP (Gratuitous ARP):主機主動宣告 IP-MAC 綁定,同樣被接受
典型中間人攻擊 (MITM) 流程
- 攻擊者 M 同時對受害者 V 和閘道器 G 發送偽造 ARP Reply
- V 緩存更新:G 的 IP → M 的 MAC
- G 緩存更新:V 的 IP → M 的 MAC
- V↔G 所有流量經 M 轉發,M 可竊聽/竄改/注入
- M 需開啟 IP 轉發 (
echo 1 > /proc/sys/net/ipv4/ip_forward) 維持連線
同網段 vs 跨網段
- 同網段:直接 ARP 欺騙,最常見
- 跨網段:需攻擊閘道器 ARP 表或利用 ICMP 重導向、DHCP 劫持等輔助手法
Linux 實作指令範例
# 查看 ARP 緩存
arp -a
# 手工設定靜態 ARP (防偽造)
arp -s 192.168.1.1 00:11:22:33:44:55
# 刪除 ARP 條目
arp -d 192.168.1.1
# tcpdump 捕獲 ARP 封包
tcpdump -e -n arp
多層次防禦策略
主機層
- 靜態 ARP 綁定關鍵設備 (閘道、伺服器)
arp -s
- 啟用 ARP 監控工具 (Windows: AntiARP、XArp;Linux: arpwatch、arpon)
- 關閉不必要的網路服務,減少攻擊面
網路層 (交換器/閘道器)
- Dynamic ARP Inspection (DAI):驗證 ARP 封包來源 IP/MAC 與 DHCP Snooping 資料庫一致
- DHCP Snooping:建立信任埠/非信任埠,記錄合法 IP-MAC 租約
- IP Source Guard:限制埠僅允許已知 IP 來源封包
- Port Security:限制單一埠學習 MAC 數量,防 MAC 泛洪
- VLAN 隔離:限制廣播域範圍,縮小攻擊波及面
系統層
偵測與應急處理
arp -a 發現多個 IP 對應同一 MAC (閘道器 MAC 被盜用)
- 網路流量異常、延遲暴增、SSL 憑證警告
- Wireshark 捕獲大量 ARP Reply/Request 非正常比例
- 應急:斷開可疑裝置、清除 ARP 緩存 (
arp -d *)、重設靜態綁定、啟用 DAI
總結
ARP 欺騙屬於第二層攻擊,傳統防火牆 (第三/四層) 無法攔截。防禦核心在於「零信任 ARP」:交換器層 DAI+DHCP Snooping 為最有效防線,主機層靜態綁定與監控為補充,定期演練應急流程。