# 簡介
WEP(Wired Equivalent Privacy),亦稱無線加密協定(Wireless Encryption Protocol),是一種已經被證實非常不安全的加密方式。利用 RC4 加密和初始化向量(initialization vector)的特性,在擷取大量封包後便有機會將金鑰破解。Aircrack-ng 是一款無線網路安全測試工具,支援多種攻擊演算法,可用於破解 WEP 和 WPA/WPA2 密碼。但 WPA/WPA2 的破解其實仰賴於字典攻擊,故筆者就不討論了。
# 實驗環境
- AP:TP-Link Archer C24
- 作業系統:Ubuntu 20.04 LTS
- 網卡:Intel Dual Band Wireless-AC 8260
- Aircrack-ng 1.6
# AP 設定
登入 AP 後台後,故意將安全性設定為 WEP。日常使用中我們務必要設定為 WPA/WPA2 才能有足夠的安全性。
WEP 的金鑰分為 64-bit 與 128-bit 兩種,為了便於破解,我這裡選用 64-bit 來實驗。64-bit 的金鑰長度為 5 bytes 的 ASCII 字元;128-bit 的金鑰長度則為 10 bytes,或者也可以分別設定成 16 進位數值。此實驗中,我將密碼設定成 ASCII 的 21218
,也就是 16 進位的 0x32
0x31
0x32
0x31
0x38
,這對筆者來說是一串特別的數字 XD(雖然這個密碼根本沒複雜度可言,只是我喜歡而已,還是要實驗一下的嘛!)
金鑰長度 | WEP 64 | WEP 128 |
---|---|---|
16 進位 | 10 個 (0-9, A-F) | 26 個 (0-9, A-F) |
ASCII | 5 個字元 | 13 個字元 |
之所以 64-bit 的金鑰只有 5 bytes = 40 bits 的原因是另外 24 bits 被用於當作初始化向量(initialization vector)。
# 網卡啟用監聽模式(Monitor Mode)
開啟 Terminal 後,輸入:
$ iwconfig
可以看到目前筆者的網卡名稱是 wlp2s0
,Mode: Managed
為被管理模式(普通模式),現在需要將它設定為監聽模式,才有辦法進行後續封包的捕捉:
$ sudo airmon-ng start wlp2s0
會發現 airmon-ng
提示有兩個 process 可能造成衝突,可以執行:
$ sudo airmon-ng check kill
但是這裡看到的是 avahi-daemon
,基本上它不會造成影響,所以就沒有對這兩個 process 做處理。
在啟用監聽模式後,網卡的名稱後面會被加上 mon
字樣,也就是說例如筆者原先的網卡名稱是 wlp2s0
,啟用後則變成了 wlp2s0mon
。
# 無線網路封包擷取
首先,利用 airodump-ng
掃描所有存在的無線網路與其參數、屬性等,wlp2s0mon
須替換成您的網卡名稱:
$ sudo airodump-ng wlp2s0mon
實驗目標的 AP ESSID 是 TP-Link-WiFi
,可以看到加密部分是 WEP
,此處要記下 CH(channel)的數值,也就是代表第幾個頻道,我這邊的範例是 9,而 BSSID 所寫的 MAC 位址也要一併記錄下來。
接下來就要正式擷取無線網路的封包,參數 --ivs
代表我只需要蒐集 initialization vector,其餘資料可以不必儲存,-w
指定儲存名稱與位置,-d
則指定目標 AP 的 MAC 位址(前步驟的 BSSID)。
$ sudo airodump-ng --ivs -c9 -w capture -d 10:27:F5:F3:E2:7F wlp2s0mon
# 封包注入(Packet Injection)
再來,需要使用到 aireplay-ng
,這是用來做封包注入(packet injection)的工具
# Deauthentication
對客戶端傳送連線中斷訊息,從而使客戶端重新發出授權請求,再擷取其請求的封包,裡面就會有我們破解金鑰所需要的 IVs。
$ sudo aireplay-ng -1 0 -a 10:27:F5:F3:E2:7F wlp2s0mon
- -1: 代表 fake authentication
- 0: 重連時間,以秒為單位
# ARP Request Replay Attack
程式會監聽 ARP 封包,然後將其重新回傳 AP,這就會讓 AP 使用新的 IVs 重傳 ARP 封包。
$ sudo aireplay-ng -3 -b 10:27:F5:F3:E2:7F wlp2s0mon
# 破解 WEP 金鑰
回到 airodump-ng
的畫面,當看到 #Data
欄位的數字足夠大時,就可以開始破解 WEP 金鑰。實驗過程中,測試了幾次發現 #Data
差不多要大於 20000 筆會比較穩定,有時只收集 10000 多筆會破解失敗。由於筆者的金鑰只有設成簡單的 5 bytes,若金鑰更長理論上也會需更多時間。
破解工具是 aircrack
,直接讀入剛剛收集的 IVs 檔案,就可以成功破解 WEP 金鑰囉!
$ aircrack-ng capture-01.ivs