iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
0

前一篇我們提到了 OSI 架構、大致講解了 ARP 協定和資料傳輸的流程。
這篇我們就會提到「ARP Spoofing」。

何謂 ARP 攻擊 (ARP Spoofing)?

上一篇開頭有提到「netcut」這個工具。這個工具即是使用了 ARP Spoofing 的原理,去影響別人的連線。

前一篇裡面提到 OSI 第二層時必須要寫上對方的 MAC 位置,但是 ARP 協定沒有提到「不可作假見證」(註:聖經十誠),又加上 ARP 協定沒有做「認證」的機制,所以只要任何一台機器「作假見證」(即亂寫一個 ARP 回覆給詢問的機器),詢問的那台機器就會很快樂地收下這個資訊,然後很快樂地把這個假資訊寫到封包表頭內。

又因為 ARP 是一個無狀態的協定,所以基本上網路上的每台機器都會自動將每次收到的 ARP 回覆放進本地端的一張快取表中,就算不久前才收到同樣 MAC-IP 組合的回覆,也可能會再放進去一次,然後覆蓋原本的紀錄。

ARP 攻擊可能的用途

用途很多,因此,只能列舉幾種可能的用途。

  • 把別人的網路無效化(指向一個不存在的 MAC,使其發了包也沒人會收)
  • DoS 別人(發假的 ARP 給大家,把所有的 IP 都指向他的 MAC 位置,使他被封包淹死)
  • 中間人攻擊(幫你架 Proxy,攔截你原本的封包,拆了看內容,然後幫你轉發)
  • 拿來「處理」屢勸不聽的室友

防禦方式

前述提到:ARP 協定沒有驗證。不過還是有幾種方式可以擋住這個攻擊,例如:

靜態 ARP 表,將內容寫死

把 ARP 表寫死,即使發了多少假的 ARP 請求,也根本不會有用(接收端根本不理會這個訊息)。不過,前提是,你要先試著把正確的 ARP 表弄到那台機器上。
但要這樣做的話,網路上每台機器都一定要知道網路內每台機器的 MAC-IP 對應關係,否則會沒辦法和那台機器對話。因此,這個方法大概只會對很小的網路有用,

主動偵測

你也可以自幹協定,想辦法去驗證這個 ARP 回覆的內容是不是合理的。不過這個要想辦法動到作業系統的網路那塊。

作業系統保護

有些作業系統的實作不太一樣。例如說 Windows 可能可以自訂「什麼時候要理會這個 ARP 回覆」,Linux 等等可能是直接不理會「我沒有用 ARP 問,你卻給我的 ARP 回覆」。

「良好用途」

ARP 「攻擊」其實也有辦法用來做好事。
因為 ARP 是可以主動發出的(主動告訴大家某個 MAC-IP 對應關係),所以你可以應用一下這個機制,例如說某台伺服器死機了,就發一個 ARP 廣播,把他的 IP 先搶去給別台還活著的伺服器用。
或者,也可以拿來除錯。例如說你搞不了「實體層攻擊」,你也沒辦法開 wireshark 等等工具來看看某兩台之間傳了什麼內容,那就可以幫他「ARP攻擊」一下,作他的中間人。

最後,講一個可能會有的疑問。

ARP 攻擊那麼好用,那外網是不是會大亂?

由於 ARP 協定是走在 OSI 2~3 層附近,所以他只能在同一個網路環境內有影響。所以說,你的鄰居在家裡用 ARP 惡搞他室友,不會影響到你。
數據機通常是直接連上 ISP,所以這個沒有共享第一層。不過,若你的 ISP 是用乙太網和你連線的話,那就有可能發生了。(這個狀況可能比較會發生在宿舍或是分租套房等等的環境)

下一篇會提到一樣會造成問題的:DNS Spoofing。


上一篇
ARP Spoofing,簡單講述 OSI 模型和網路上資料傳輸的流程
下一篇
DNS Spoofing: 何謂 DNS? DNS Cache Poisoning?
系列文
網路安全概述31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言