簡介
ARP欺騙(英語:
ARP spoofing),又稱
ARP毒化(
ARP poisoning,網上上多譯為
ARP病毒)或
ARP攻擊,是針對
乙太網地址解析協定(
ARP)的一種攻擊技術。此種攻擊可讓攻擊者獲取
區域網路上的數據包甚至可篡改數據包,且可讓網上上特定計算機或所有計算機無法正常連線。最早探討ARP欺騙的文章是由Yuri Volobuev所寫的《ARP與ICMP轉向遊戲》(
ARP and ICMP redirection games)。
運作機制
ARP欺騙的運作原理是由攻擊者傳送假的ARP數據包到網上,尤其是送到網關上。其目的是要讓送至特定的IP位址的流量被錯誤送到攻擊者所取代的地方。因此攻擊者可將這些流量另行轉送到真正的網關(被動式數據包嗅探,passive sniffing)或是篡改後再轉送(中間人攻擊,man-in-the-middle attack)。攻擊者亦可將ARP數據包導到不存在的
MAC地址以達到阻斷服務攻擊的效果,例如netcut軟體。
例如某一的IP位址是192.168.0.254,其MAC地址為00-11-22-33-44-55,網上上的計算機內ARP表會有這一筆ARP記錄。攻擊者發動攻擊時,會大量發出已將192.168.0.254的MAC地址篡改為00-55-44-33-22-11的ARP數據包。那么網上上的計算機若將此偽造的ARP寫入自身的ARP表後,計算機若要透過網上網關連到其他計算機時,數據包將被導到00-55-44-33-22-11這個MAC地址,因此攻擊者可從此MAC地址截收到數據包,可篡改後再送回真正的網關,或是什麼也不做,讓網上無法連線。
簡單案例分析:這裡用一個最簡單的案例來說明ARP欺騙的核心步驟。假設在一個LAN里,只有三台主機A、B、C,且C是攻擊者。
攻擊者聆聽區域網路上的MAC地址。它只要收到兩台主機洪泛的ARP Request,就可以進行欺騙活動。
主機A、B都洪泛了ARP Request.攻擊者現在有了兩台主機的IP、MAC地址,開始攻擊。
攻擊者傳送一個ARP Reply給主機B,把此包protocol header里的sender IP設為A的IP位址,sender mac設為攻擊者自己的MAC地址。
主機B收到ARP Reply後,更新它的ARP表,把主機A的MAC地址(IP_A, MAC_A)改為(IP_A, MAC_C)。
當主機B要傳送數據包給主機A時,它根據ARP表來封裝數據包的Link報頭,把目的MAC地址設為MAC_C,而非MAC_A。
當交換機收到B傳送給A的數據包時,根據此包的目的MAC地址(MAC_C)而把數據包轉發給攻擊者C。
攻擊者收到數據包後,可以把它存起來後再傳送給A,達到偷聽效果。攻擊者也可以篡改數據後才傳送數據包給A,造成傷害。
防制方法
最理想的防制方法是網上內的每台計算機的ARP一律改用靜態的方式,不過這在大型的網上是不可行的,因為需要經常更新每台計算機的ARP表。
另外一種方法,例如
DHCP snooping,網上設備可藉由
DHCP保留網上上各計算機的MAC地址,在偽造的ARP數據包發出時即可偵測到。此方式已在一些廠牌的網上設備產品所支持。
有一些軟體可監聽網上上的ARP回應,若偵測出有不正常變動時可傳送
信箱通知管理者。例如UNIX平台的
Arpwatch以及
Windows上的XArp v2或一些網上設備的Dynamic ARP inspection功能。
正當用途
ARP欺騙亦有正當用途。其一是在一個需要登錄的網上中,讓未登錄的計算機將其瀏覽網頁強制轉向到登錄頁面,以便登錄後才可使用網上。另外有些設有備援機制的網上設備或
伺服器,亦需要利用ARP欺騙以在設備出現故障時將訊務導到備用的設備上。