iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
11
Security

從 0 開始的 Web Security系列 第 14

Day 14 連結層攻擊實作 - ARP Spoofing

昨天講到了 L2 升級為 L3 所用的 DHCP協議
今天我們則要來講講 L3 降級為 L2 通訊的另一個協議

ARP

昨天說到 DHCP 是用來配發 IP 的層級升級用協議
而在一台終端設備擁有了 IP 後,基本上都是以 IP 作為高層級溝通的依據
在大部分作業系統實做的 syscall 中也是使用 IP 來作為參數
而單單只有 IP 是無法溝通的
我們還需要被傳輸設備的 MAC 位置
才能將 IP 封包傳輸到目的地
而這時候 ARP 就扮演了一個將 IP 轉換為硬體位置的角色
所以常常也被說是 OSI 2.5 層的協議

ARP 運作原理

這裡我們從一個範例來講解,會比較好理解
今天有 PC A 與 PC B 兩台電腦
MAC Address 分別為 AA:AA:AA:AA:AA:AA 與 BB:BB:BB:BB:BB:BB
而 IP 分別為 10.10.10.1 與 10.10.10.2

當今天 PC A (10.10.10.1) 想要發送給 10.10.10.2
但因為封包被轉送到哪台設備上主要是依據 MAC 位置
所以只有 IP 位置是不行的
這時候 PC A 就會發出一個 ARP 請求 問說 10.10.10.2 的 IP 是誰的
這個請求會被廣播給大家,如下圖
https://ithelp.ithome.com.tw/upload/images/20200929/20129897BFxqaAq2H4.png

這時候 PC A 就知道 10.10.10.2 對應到的 MAC
所以這時候 PC A 就能把 L2 的表頭填入對應的值
如下圖所示

OSI Layer Src Dst
L2 AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB
L3 10.10.10.1 10.10.10.2

這樣這個封包就能經由 Switch 被轉發到 PC B

ARP Table

上面也說到了終端設備上的應用基本上都是使用 IP 來作為發送與接收的依據
因為不可能每傳送一次 IP 封包都需要發送一次 ARP 封包
來解析 MAC Address,這樣會造成數倍的流量
所以終端設備都會自己維護一張表,來暫存這些獲得的 ARP Response
這張表基本上是一張 Key-Value 的表
所以整個流程大概如下圖
https://ithelp.ithome.com.tw/upload/images/20200929/20129897hHP6GPgfIu.png

我們可以使用 arp -a 來觀測電腦上目前暫存的位置對應表
https://ithelp.ithome.com.tw/upload/images/20200929/20129897jsVNs01Dlx.png

ARP Spoofing

由於 ARP 請求是廣播發送的,所以當攻擊者接收到請求封包後
可以偽造一個惡意的回復,將 L3 的 IP 綁定到攻擊者的電腦上
這樣在受害者電腦中的 ARP Table 中,就會覆蓋掉舊的位置,讓後續的 IP 封包傳送到攻擊者電腦上
同理,如果攻擊者也對通訊的另一端發送惡意 ARP 回復,即能監聽雙向流量

或者是攻擊者主動傳送 ARP 回復給大家,就算沒有客戶端發送 ARP 請求
如下圖所示
https://ithelp.ithome.com.tw/upload/images/20200929/20129897xPP5lc1UYi.png
像是這個就是跟區域網路中每一台設備說其他設備的 IP 都在攻擊者的設備上
這樣 IP 流量就會都被導向到攻擊者電腦上

攻擊範例

在這個範例中有三台電腦,分別為 PC A、PC B、Attacker
IP 與 MAC 如下表所示

電腦 MAC IP
PC A AA:AA:AA:AA:AA:AA 10.10.10.1
PC B BB:BB:BB:BB:BB:BB 10.10.10.2
Attacker CC:CC:CC:CC:CC:CC 10.10.10.3

底下為攻擊者激進式的攻擊
https://ithelp.ithome.com.tw/upload/images/20200929/201298971MqtPxsFzM.png

這樣就在不知不覺中達成了雙向的封包攔截

ARP Spoofing Detection

基本上如上面 Wireshark 的截圖所示,攻擊者如果採用激進式的攻擊方式
會產生大量的 ARP 封包,我們可以透過監看交換器所收到的 ARP 封包來偵測,也可以追蹤到是哪個實體連接孔傳送過來的

ARP Spoofing 防禦

首先,我們可以禁用 ARP 的動態暫存機制
可以使用 Static ARP 這種設定方式,手動將 MAC 與 IP 位置綁定,就可以將上面 ARP Spoofing 的攻擊無效化,但稍稍有些麻煩

有些交換器也有提供 Dynamic ARP Inspection (DAI) 的防護方式,會主動偵測這種攻擊,在攻擊成功前就先將其阻斷

現在也有許多端點防護的方法,主動監控電腦上的 ARP Table,如有發生異常的改變(例如說所有 IP 都指向同一個 MAC)

小結

今天我們介紹了一種蠻常見的區域網路攻擊
雖然原理簡單,但暴力有效
我小學時候看的書都會介紹 NetCut 之類的工具
也就是透過 ARP Spoofing 來實作的一個工具
說明這種攻擊已經行之有年了(我現在大三)
但這種攻擊雖然已經很老了,但還是常常被網路管理者所忽略
或者有些網管新手根本不知道有這種安全問題存在
所以在這邊再介紹給大家認識


上一篇
Day 13 連結層攻擊實作 - DHCP Attack
下一篇
Day 15 連結層攻擊實作 - STP Spoofing
系列文
從 0 開始的 Web Security22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿瑜
iT邦研究生 4 級 ‧ 2020-11-03 00:52:07

修的課 曾寫過 XD
那時候 用python 的套件 分數被打好低QQ
https://github.com/goish135/AN_hws/blob/master/hw3/arp.py

我要留言

立即登入留言