以太網環境:IP 封包路由由路由表決定,**最終交付靠 MAC 地址**。每台主機維護 ARP 快取 (IP↔MAC 映射),動態學習、定時老化 (預設 1-10 分鐘)、**無驗證機制、無狀態、請求/回應均可單向更新** — 這是根本漏洞來源。
場景:A(192.168.0.1/AA)、B(192.168.0.2/BB 攻擊者)、C(192.168.0.3/CC 受信任主機)。A 僅信任 C (開放 TCP 23)。
攻擊鏈:
1. B 掃描 C 漏洞 → 使 C 宕機 (DoS)。
2. B 修改自身 IP 為 192.168.0.3。
3. B 發送偽造 **ARP Reply** (Opcode=2) 給 A:Sender IP=192.168.0.3, Sender MAC=BB, Target IP=192.168.0.1, Target MAC=AA。
4. A 更新 ARP 快取:192.168.0.3 → BB。
5. B 建立 TCP 23 連線至 A,繞過防火牆信任檢查。
關鍵點:協定不要求「先收到 Request 才能送 Reply」,單向宣告即生效。
場景:A、C 同網段 (192.168.0.x);B 位於不同網段 (192.168.1.x)。
難點:即使 B 欺騙 A 的 ARP,路由器也不會將 192.168.0.x 目的封包轉發給 192.168.1.x 的 B。
突破:結合 **ICMP Redirect (Type 5, Code 1)**:
1. B 對 A 發起連線,路由器轉發。
2. 路由器發現 B 與 A 同屬邏輯網段 (或 B 偽裝為網關),發送 ICMP Redirect 告知 A:「下次直發給 B」。
3. A 更新路由快取,後續封包直接發往 B MAC,繞過路由器檢查。
4. 同步進行 ARP 欺騙固化 MAC 映射。
實戰工具:Ettercap、Bettercap、Cain & Abel、dsniff (arpspoof)、自製 Scapy 腳本。
| 層面 | 技術/配置 | 原理 |
|---|---|---|
| 主機端 | 靜態 ARP 綁定 (arp -s)、netsh interface ipv4 set neighbors、啟用 Windows 防火牆「阻擋單播回應」 | 拒絕動態更新關鍵映射 |
| 交換機端 | DAI (Dynamic ARP Inspection)、IP Source Guard、Port Security、DHCP Snooping (建立合法 IP-MAC-Port-VLAN 綁定資料庫) | 硬體級過濾偽造 ARP、限制每埠 MAC 數量、綁定 DHCP 租約 |
| 網路架構 | VLAN 劃分廣播域、Private VLAN 隔離同 VLAN 埠間通訊、IPv6 SEND (SeND/CGA) 替代 NDP/ARP | 縮小攻擊面、鏈路層加密驗證 |
| 監控偵測 | NetFlow/sFlow/ERSPAN 鏡像流量 → Zeek/Suricata 規則偵測 ARP 洪水/衝突/異常 Gratuitous ARP | 異常流量行為基線偵測 |