ARP欺騙是大多數公共WiFi中間人攻擊的基礎技術。透過利用ARP協議的設計弱點,同一網絡上的攻擊者可將其裝置插入你的流量與路由器之間——看到你發送和接收的一切。以下是其運作原理,以及為何VPN能完全阻止此類攻擊。
ARP(地址解析協議)是一種將IP地址映射到本地網絡上MAC(硬件)地址的網絡協議。當你的裝置想向同一網絡上的另一裝置(例如WiFi路由器)發送數據時,需要知道該裝置的MAC地址。它會廣播一個ARP請求,詢問「哪個裝置擁有IP地址X?請告訴我你的MAC地址。」擁有該IP地址的裝置會以其MAC地址回應,你的裝置便將此映射關係緩存到ARP表中以供日後使用。這個ARP表告知你的裝置,在向特定IP地址發送封包時應使用哪個MAC地址。
ARP於1982年設計時沒有任何身份驗證機制——網絡上的任何裝置都可以在沒有任何核實的情況下發送聲稱代表任何IP地址的ARP回應。這是ARP欺騙所利用的根本漏洞。攻擊者向你的裝置發送偽造的ARP回應訊息,聲稱路由器的IP地址對應攻擊者的MAC地址。與此同時,攻擊者向路由器發送偽造的ARP回應,聲稱你裝置的IP地址對應攻擊者的MAC地址。一旦你的裝置和路由器都以攻擊者的MAC地址更新了各自的ARP緩存,你的裝置與路由器之間的所有流量便會流經攻擊者的裝置,而非直接在兩個端點之間傳輸。這是經典的中間人位置。
ARP欺騙對受害者而言完全無感——你不需要採取任何行動,你的裝置上不會出現任何警告,互聯網連接繼續正常運作。此攻擊利用的是協議層面的弱點,而非你的任何行為或漏洞。攻擊者只需與你在同一網絡段上——在任何人都可加入的公共WiFi網絡上,這一條件輕而易舉便可滿足。Arpspoof、Ettercap及Cain and Abel等免費工具可以以最低的技術門檻自動執行ARP欺騙。Bettercap是一個現代且持續維護的框架,可在單一工具中結合ARP欺騙、SSL剝離、HTTPS降級攻擊及憑證擷取,在任何咖啡廳或酒店的筆記型電腦上均可運行。
一旦透過ARP欺騙取得中間人位置,攻擊者便可進行被動封包擷取,記錄你的裝置與路由器之間的所有流量。未加密的HTTP流量可立即被讀取——攻擊者以明文形式擷取一切,包括任何憑證、表單提交、Cookie及頁面內容。加密的HTTPS流量不能以其加密形式立即讀取,但中間人位置可執行主動攻擊以破壞加密。SSL剝離——使用Bettercap的SSL剝離模組等工具——攔截你的HTTP至HTTPS重定向,並向你的瀏覽器提供HTTP版本的頁面,同時維持與真實伺服器的HTTPS連接。如果成功,攻擊者便可以明文形式讀取你的所有流量,儘管該網站名義上使用HTTPS。
會話劫持是中間人位置所能執行的另一種強力攻擊。即使攻擊者無法讀取你的登入憑證(因為登入發生在未被剝離的HTTPS上),他們仍可從同一會話的後續HTTP請求中竊取會話Cookie。會話Cookie可驗證你的瀏覽器已登入——竊取它讓攻擊者在不知道你密碼的情況下冒充你的已驗證會話。這對於登入使用HTTPS但後續已驗證瀏覽使用HTTP的服務特別有效(儘管隨著HTTPS普及,這種情況已越來越少見)。它也可能影響在同一域名上混用HTTPS和HTTP內容的服務。
DNS劫持很容易與ARP欺騙結合使用。一旦取得中間人位置,攻擊者便可攔截你的DNS查詢(以明文傳輸)並返回指向攻擊者控制伺服器的偽造DNS回應。結合仿冒合法服務的假冒登入頁面,這便形成了一個極具欺騙性的攻擊鏈:ARP欺騙建立中間人位置→DNS劫持重定向你的域名查詢→假冒HTTPS網站(使用自簽署憑證)擷取憑證。攻擊者隨後將你的登入轉發至真實網站,使你正常存取帳戶,而你的憑證已遭竊取。唯一可見的跡象是SSL憑證警告——攻擊者的釣魚頁面可能會以看似合理的訊息試圖解釋此警告。
ARP欺騙旨在無聲無息,但有幾個技術指標可能暗示攻擊正在發生。最易於檢查的方法是查看裝置的ARP緩存,尋找共用相同MAC地址的多個條目——這是ARP緩存毒化發生的跡象。在macOS上,打開「終端機」並運行「arp -a」查看ARP緩存。如果兩個不同的IP地址顯示相同的MAC地址(例如路由器的IP和另一裝置的IP均顯示相同的MAC),這是ARP欺騙的有力跡象。在Windows上,在命令提示字元中運行「arp -a」可獲取相同資訊。命令輸出顯示IP地址至MAC地址的映射——路由器閘道IP應有一個不與任何其他條目共用的唯一MAC地址。
網絡性能指標也可能暗示ARP欺騙的存在。如果連接速度比預期慢(因為流量需途經額外裝置),或出現間歇性連接中斷和重新連接(因ARP攻擊重新穩定),則在結合其他指標的情況下值得懷疑。瀏覽器層面的信號對非技術用戶更為直觀:通常使用HTTPS的網站出現HTTP、熟悉服務的SSL憑證警告,或在已有活躍會話的服務上被要求重新登入,都是連接可能受到干擾的信號。這些均非決定性證據,但在高風險環境(酒店網絡、機場、會議場地)中,應觸發立即斷線並切換至流動數據。
可實時偵測ARP欺騙的工具適用於消費者和企業環境。XArp是一款Windows應用程式,可實時監控ARP緩存並在出現與ARP欺騙一致的可疑變化時發出警報。ARPwatch是一款Unix/macOS工具,可監控ARP流量並在異常時發出警報。對於企業網絡,啟用了動態ARP檢測(DAI)的交換機可在交換機層面偵測並阻止ARP欺騙攻擊——DAI在允許ARP回應傳播之前,會根據DHCP監聽表驗證其有效性。DAI能有效消除正確配置的企業網絡上ARP欺騙的風險,這也是企業網絡在安全性上顯著優於公共WiFi的原因之一,即使兩者都傳輸敏感流量。家庭和公共網絡鮮少配置DAI。
防禦公共WiFi上ARP欺騙最有效的方法是使用具有全隧道路由的VPN。VPN不能阻止ARP欺騙的發生——ARP緩存毒化仍然會發生,攻擊者仍然會攔截你的流量——但它使攻擊變得無效。你裝置的所有流量在到達本地網絡之前便已加密,因此流經攻擊者裝置的被攔截流量只包含密文。攻擊者可以擷取他們想要的所有封包,但在沒有VPN加密密鑰(攻擊者並不掌握)的情況下,擷取的數據毫無用處。這就是為何在公共WiFi上使用VPN被描述為防禦中間人攻擊:如果所有流量在到達攻擊者之前便已加密,攻擊者在流量路徑上的位置便無關緊要。
靜態ARP條目是適合熟悉命令行配置的用戶的技術對策。靜態ARP條目手動設置特定IP地址(例如路由器閘道IP)的MAC地址,並阻止對該條目的ARP緩存更新——操作系統不會接受改變該映射的ARP回應。在macOS上:在終端機中運行「sudo arp -s [閘道IP] [閘道MAC]」,其中你需在連接到可能存在惡意的網絡之前,先用「arp -a」查找合法的閘道MAC地址。在Windows上:「netsh interface ipv4 set neighbors [介面] [閘道IP] [閘道MAC]」可達到相同效果。此方法適合經常使用特定咖啡廳或酒店網絡的技術熟練用戶,但需要在攻擊者毒化ARP緩存之前便知道合法的MAC地址。
客戶端隔離是網絡層面的防禦——當WiFi接入點啟用客戶端隔離(亦稱站點隔離或AP隔離)時,連接到同一接入點的裝置無法直接相互通信。ARP欺騙需要攻擊者的裝置直接與同一網絡上的其他客戶端裝置通信,以發送偽造的ARP回應。啟用客戶端隔離後,攻擊者無法向其他客戶端發送ARP回應,從而消除了此攻擊。客戶端隔離無法由用戶自行啟用——必須由網絡管理員配置。但了解網絡是否具有客戶端隔離有助於評估風險:大多數企業WiFi系統支持並啟用客戶端隔離;大多數消費級路由器(包括許多酒店和咖啡廳所用的)均未配置此功能。