安全與合規

ARP 攻擊是什麼:原理、危害與機房裡的典型表現

ARP 攻擊是利用 ARP 協議沒有認證這一點,在同一個二層網段裡傳送偽造的 ARP 報文,讓其他主機把閘道器或某台伺服器的 IP 記成攻擊者的 MAC。後果從整段斷網、IP 衝突到流量被劫持、IP 和頻寬被盜用;在機房裡,源頭通常是同一 VLAN 內一台被入侵的託管伺服器。

作者 頂聯產品團隊發布於 7 分鐘閱讀

ARP 協議為什麼能被攻擊

ARP 攻擊是什麼,要從 ARP 本身說起。ARP(Address Resolution Protocol,位址解析協議)負責把 IPv4 位址翻譯成乙太網 MAC 位址。主機 103.45.12.10 要發包給閘道器 103.45.12.1 時,先向全網段廣播一個請求:“誰是 103.45.12.1?請告訴 103.45.12.10”;閘道器單播回覆:“103.45.12.1 在 00:aa:bb:cc:dd:ee”。主機把這條對應關係寫進 ARP 快取,之後發往閘道器的 IP 報文都封裝成乙太網幀發給這個 MAC。

這套機制在 1982 年的 RFC 826 裡定下來,設計前提是同一個區域網內的主機彼此可信,因此留下了三個被利用的缺口:

缺口 協議行為 攻擊者怎麼利用
應答不驗證 主機收到 ARP 應答時不檢查自己是否發過請求,也無法核實應答者身份 不等請求,直接向目標傳送偽造應答
後到的覆蓋先到的 快取裡已有的表項會被新收到的報文更新 持續高頻傳送,確保自己的 MAC 始終“壓”在正確表項之上
請求也能寫快取 許多協議棧收到 ARP 請求時,會重新整理或新建請求者的 IP-MAC 表項(具體規則因系統而異) 用廣播請求同時毒化整個網段的快取,一條報文影響所有主機

所以 ARP 欺騙不需要利用任何漏洞,一台普通 Linux 伺服器用 arpspoof、ettercap 之類的工具,或者幾行發原始報文的指令碼就能做到。它需要的只是目標網段內一台能發包的機器和 root 許可權,而被入侵的伺服器恰好同時滿足這兩點。

兩種形式:冒充閘道器與冒充主機

ARP 攻擊原理相同,按偽造的目標分成兩種,機房裡兩種都常見。

冒充閘道器(閘道器欺騙)。攻擊機向網段內廣播“103.45.12.1 在攻擊機的 MAC 上”。所有客戶機的出向流量都發到攻擊機:攻擊機不轉發,整段斷網;攻擊機開啟 IP 轉發再交給真閘道器,流量照常通,但全部經過它,這就是中間人。

冒充主機(主機欺騙)。攻擊機向閘道器單播“103.45.12.20 在攻擊機的 MAC 上”,閘道器把發往這台客戶伺服器的回程流量交給攻擊機,客戶伺服器表現為“能發不能收”。如果攻擊機同時用這個 IP 對外發包,就是典型的 IP 盜用。

冒充閘道器 冒充主機
被毒化的快取 網段內所有主機 閘道器(有時還包括同段其他主機)
偽造的報文 廣播:閘道器 IP → 攻擊機 MAC 單播給閘道器:受害者 IP → 攻擊機 MAC
影響範圍 整個 VLAN 單台或少數幾台伺服器
典型目的 斷網、嗅探、劫持 盜用 IP、製造衝突、繞過按 IP 做的存取控制
攻擊機的負擔 要吞下整段的出向流量,網口很容易打滿 很小

兩種同時做,即對受害者假裝閘道器、對閘道器假裝受害者,攻擊機就處在雙向流量中間,可以完整看到並改寫這台伺服器的所有明文通訊。

ARP 攻擊有什麼危害

危害 怎麼發生 使用者看到什麼
斷網、時通時斷 流量被引到攻擊機後被丟棄;或者攻擊機與真閘道器的應答交替到達,快取來回翻轉 ping 閘道器大量丟包、延遲忽高忽低;攻擊停止後自行恢復
IP 位址衝突 攻擊機宣告了別人正在用的 IP Windows 彈出 IP 衝突提示;Linux 上同一 IP 對應的 MAC 反覆變化
流量劫持與嗅探 中間人轉發,HTTP、FTP、Telnet、未加密的資料庫連線內容全部可見 幾乎無感知;HTTPS 若被替換證書則瀏覽器告警
內容篡改 在轉發的 HTTP 回應裡插入指令碼或跳轉 網站被“掛馬”,但伺服器上找不到被改的檔案
DNS 劫持 改寫經過的 DNS 應答 域名解析到錯誤位址
IP 與頻寬盜用 攻擊機用別人的 IP 對外發包 被盜用方的 IP 產生陌生流量、收到濫用投訴或被封禁
裝置資源耗盡 高速傳送隨機 IP-MAC 的 ARP 報文 交換器 CPU 飆高、閘道器 ARP 表被塞滿,正常主機學不到表項

早年辦公網裡的“ARP 病毒”主要造成斷網和網頁掛馬;在 IDC,危害的重點落在後三行:客戶的業務流量被同機房的另一台機器看到,客戶的 IP 被別人拿去發垃圾流量,以及整個網段的可用性被一台機器拖垮。

一台被入侵的託管伺服器怎麼拖垮整個網段

把場景放到一個典型的託管 VLAN 裡:一個公網 /24,閘道器在三層交換器上,接入交換器下掛著幾十個客戶的伺服器,各自配靜態公網 IP,彼此之間沒有做連接埠隔離。

  1. 某客戶的伺服器用的是弱密碼,被掃到後植入了木馬。木馬的功能之一就是在所在網段做 ARP 欺騙,目的是嗅探其他主機的帳號密碼,或者給經過的網頁插廣告。
  2. 木馬每秒向網段廣播幾十條“閘道器在我這裡”的應答。幾秒內,網段裡所有主機的 ARP 快取都被改寫。
  3. 幾十台伺服器的出向流量全部湧向這台被入侵機器的千兆網口。它既要轉發又要嗅探,網口和 CPU 很快滿載,開始大量丟包。
  4. 客戶感受到的是:延遲從 2 ms 跳到幾百 ms,SSH 卡頓,網站打不開,但自己伺服器上的程序和配置都正常。
  5. 工單集中到來,而且全部來自同一個網段,這是最明顯的特徵。
  6. 木馬間歇性執行,或者真閘道器的免費 ARP 偶爾重新整理了部分主機的快取,於是故障表現為“時好時壞”,很難用單次 ping 復現。

這個鏈條裡,被入侵的客戶並沒有“故意攻擊”,但影響的是同一網段裡所有付費客戶。這也是為什麼機房要把 ARP 問題當作安全事件而不是普通故障來處理:根源在一台機器,損失卻是整段客戶的服務品質。

另一類場景更隱蔽:某客戶的伺服器悄悄把網路卡配上了相鄰客戶沒在用的公網 IP,或者用指令碼輪換源 IP 發包。這是主機欺騙的變體,常常是為了多拿幾個 IP 不付費,或者讓攻擊流量的來源看起來是別人。它不會造成大面積斷網,只會在被盜用方上線使用那個 IP 時表現為衝突,或者在收到濫用投訴時才被發現。

維運從哪些現象能察覺

ARP 攻擊沒有特定的“報錯”,但下面這些訊號組合出現時,基本可以判定:

現象 怎麼確認
同一網段多個客戶同時報障,其他網段正常 工單按 IP 段歸類
客戶機上記錄的閘道器 MAC 不是閘道器的 MAC 對比閘道器裝置 VLAN 介面的真實 MAC
交換器 MAC 表裡,閘道器 MAC 出現在某個接入口上 閘道器 MAC 只應出現在上聯口
交換器日誌出現 MAC 漂移告警 同一 MAC 在上聯口與某接入口之間來回
某個接入口的 ARP 報文速率異常 正常伺服器每秒幾條,攻擊機每秒幾十到幾百條
閘道器 ARP 表裡某客戶 IP 的 MAC 變了 與台帳登記的 MAC 比對
客戶反饋 HTTPS 證書錯誤、網頁被插廣告 中間人篡改的典型表現

在受影響的客戶機或任意一台同段主機上,先看它眼裡的閘道器是誰:

# Linux:閘道器 IP 對應的 MAC 與狀態
ip neigh show 103.45.12.1
# Windows
arp -a 103.45.12.1

然後抓 ARP 報文,看誰在宣告閘道器位址。-e 讓 tcpdump 列印乙太網幀頭,arp[6:2] == 2 只保留 ARP 應答:

tcpdump -nei eth0 'arp and arp[6:2] == 2 and arp src host 103.45.12.1'

正常情況下,輸出裡“103.45.12.1 is-at”後面只會出現一個 MAC,且頻率很低;如果短時間內出現兩個不同的 MAC,或者同一個 MAC 以每秒幾十條的速度不停宣告,就是欺騙。注意看幀頭裡的源 MAC 與 ARP 報文體裡的傳送方 MAC 是否一致:攻擊工具可以偽造報文體,但交換器學習 MAC 看的是幀頭,定位連接埠時以幀頭為準。

拿到可疑 MAC 之後,到交換器上查它接在哪個連接埠:

# 華為 / H3C
display mac-address 0011-2233-4455
display arp | include 103.45.12.1
# 思科 IOS
show mac address-table address 0011.2233.4455
show ip arp 103.45.12.1

思科交換器在 MAC 漂移時會列印類似 %SW_MATM-4-MACFLAP_NOTIF: Host 0011.2233.4455 in vlan 100 is flapping between port Gi1/0/5 and port Gi1/0/48 的日誌,直接給出了兩個連接埠;華為、H3C 的交換器也有對應的 MAC 漂移檢測與告警,具體日誌格式以裝置文件為準。查到接入口後,對照台帳就知道是哪台伺服器、哪個客戶。

ARP 攻擊、IP 衝突和閘道器故障怎麼區分

三者的表象都可能是“整段或部分客戶上不了網”,但處理路徑完全不同:

判斷點 ARP 攻擊 普通 IP 衝突 閘道器故障
受影響範圍 整個 VLAN(冒充閘道器)或單台(冒充主機) 只有衝突的那個 IP 整個 VLAN
閘道器 IP 對應的 MAC 變成某台接入口裝置的 MAC 不變 不變,或 ARP 請求根本沒有應答
ARP 報文頻率 某個 MAC 高頻宣告 兩個 MAC 偶發交替應答 沒有閘道器的應答
衝突的 IP 往往是閘道器,或多個客戶 IP 同時異常 通常只有一個 無
停掉可疑連接埠後 幾十秒內恢復 衝突消失 無變化

普通 IP 衝突多半是配置失誤,找到配錯的一方改回來即可;閘道器故障看三層裝置;只有 ARP 攻擊需要按安全事件處理:隔離連接埠、通知客戶清理系統,再補上交換器側的防護。

在管理系統裡怎麼落地

察覺 ARP 攻擊的難點不在命令,而在“這個 MAC 是誰的”:幾百台伺服器、幾千個 IP 的台帳如果靠表格維護,查一次要翻好幾處。Toplink DCIM 的 IP 位址管理按段登記每個 IP 的歸屬伺服器、客戶和所在 VLAN,伺服器列表直接顯示它接在哪台交換器的哪個連接埠,拿到可疑 MAC 或 IP 後對照一下就能定位到機櫃和客戶。定位之後,交換器管理頁面可以直接關閉該連接埠止損;長期防護則靠同一頁面的 ARP 繫結與源位址校驗,把 IP、MAC 與連接埠鎖定,偽造來源的報文在接入口就被丟棄。

常見問題

ARP 攻擊會影響其他 VLAN 嗎?

不會直接影響。ARP 報文是二層廣播,不能跨 VLAN 傳播,欺騙只在攻擊機所在的 VLAN 內生效。但如果閘道器被冒充,其他 VLAN 發往這個 VLAN 的流量到閘道器後仍會被送錯,表現為其他網段存取這個網段也不正常。

IPv6 有 ARP 攻擊嗎?

IPv6 不用 ARP,用 NDP(鄰居發現協議)解析位址,但 NDP 同樣預設沒有認證,存在性質相同的鄰居欺騙和偽造 RA 攻擊。對應的防護是交換器上的 RA Guard 和 ND Snooping。

ARP 攻擊一定是有人故意發起的嗎?

不一定。被植入木馬的伺服器會自動發起欺騙,機主往往不知情;某些虛擬化、負載均衡軟體的代答 ARP 配置錯誤,或者兩台機器誤配了同一個 IP,也會出現和攻擊類似的表項翻轉。排查時看偽造報文的頻率和來源是否集中。

換了閘道器裝置後客戶機上的閘道器 MAC 變了,是攻擊嗎?

不一定。更換閘道器裝置會讓閘道器 MAC 變化;主備切換時如果沒有使用虛擬 MAC,MAC 也會變。新閘道器通常會發免費 ARP 重新整理大家的快取。區別在於新 MAC 應當出現在交換器的上聯口而不是接入口,並且能與變更記錄對上。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88