擷取 WLAN 流量

擷取 Wi-Fi 封包後,即可在進入裝置上執行的軟體之前,先行查看遭到遮蓋的詳細資料和互動,因此能夠擷取某些錯誤類型的重要工具。

主要步驟如下:

  1. 尋找合適頻道即可進行監控。
  2. 吸引人潮。
  3. 提供 WLAN 密碼的擷取內容和雜湊資料。

1. 決定適當的管道和寬度

WLAN 網路的運作方式如下:

  • 頻道通常以數字表示1-13 適用於 2.4GHz 頻道5GHz 頻道則為 36-200。
  • 特定寬度 (20Mhz、40Mhz、80Mhz、160MHz)

網路中的每個存取點 (例如路由器、網狀節點) 通常都有專屬的 2.4GHz 頻道和 5GHz 通道,您需要找出裝置連線的是哪一個。下列幾個選項供您參考:

使用路由器的控制台

如果您使用的是 Nest WiFi,請略過這個選項,系統不會公開顯示這項資訊。

大多數路由器都有連線裝置清單,以及他們所使用的通道和寬度。

  1. 請參閱這份指南,找出路由器的 IP 位址。
  2. 請透過網路瀏覽器前往路由器的位址,例如 http://192.168.1.1
  3. 登入帳戶。不知道自己的密碼嗎?在路由器上尋找標記或使用路由器密碼
  4. 尋找名稱類似「用戶端」或「連接的裝置」的網頁。舉例來說,Netgear 路由器頁面看起來可能如下所示,如為 Eero 裝置

    Netgear 用戶端檢視畫面

  5. 您可能需要查看設定中的其他部分,將步驟 4 的資訊對應至特定管道和頻寬。例如 Netgear 路由器:

    Netgear 頻道檢視畫面

如果 Mac 已連線至同一個頻道,請使用 Mac

按住鍵盤上的 Option 鍵,然後點選 Mac 狀態列右上角的 WLAN 圖示。您應該會看到一般的 WLAN 選單,其中包含一些更多選項和資訊。請查看無法使用的選單項目,找出提及頻道的項目:

`Channel 60 (DFS, 5GHz, 40MHz)`

Mac WLAN

找不到頻道和寬度

如果其他方法都無效,您可以嘗試:

  1. 列出 AP 使用的所有管道 (每個 AP 或網狀點通常為 2 個版本)。

    a. 建議:在 Android 手機上,您可以使用 WifimanAruba Utilities 等應用程式。

    a. 在 Mac 中,您可以使用 /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport-s 列出選項。

  2. 按照下方操作說明,針對每個聲道執行一小段時間 (就算長度相差 15 秒以上)

  3. 安裝 Wireshark (如需協助,請參閱安裝 Wireshark)。

  4. 使用 Wireshark 開啟每筆擷取,然後套用 wlan.addr == YOUR_DEVICE'S_MAC 的顯示篩選器,看看是否出現任何封包。

2. 開始拍攝

重要事項:擷取 4 向握手

如果 Wi-Fi 已開啟安全性功能,您需要知道用來解密擷取封包的加密金鑰。加密金鑰是根據裝置連上網路時發生的 4 向握手行為所產生,且專屬於裝置和 AP 之間的每次連線。

因此,您「必須」擷取 4 向握手來解密 Wi-Fi 酬載。如果裝置在開始拍攝時已連上網路,請在停止拍攝後中斷並重新連結裝置 (或重新啟動裝置)

在 Mac 上擷取

按住鍵盤上的 Option 鍵,然後按一下 WLAN 圖示,然後選取「開啟無線診斷...」:

Mac WLAN 擷取

從「無線診斷」選單列中,依序選取「Window」>「Sniffer」

Mac WLAN Sniffer

將管道和寬度設為您之前擷取的值 (螢幕截圖範例適用於頻道 60 和 Width 40 MHz):

Mac WLAN 通道和寬度

按下 Start 鍵並輸入密碼。現在,請嘗試重現問題。 請務必按照「擷取四向交握」的說明,從連線擷取 4 向握手。

完成後,請按下 Stop 鍵。您可以在包含所有流量的 /var/tmp 中找到新的 *.pcap 檔案。檔案名稱範例如下:(null)_ch100_2018-11-06_10.52.01.pcap

在 Linux 上擷取

  1. 關閉 Wi-Fi。您可以採用下列其中一種做法:

    • 使用 GUI (建議做法)
    • 使用「Network Manager CLI」指示服務停止管理 WLAN 介面:sudo nmcli dev set <wlan-ifname> managed on
    • 如果使用其他網路管理員,請視情況調整。
  2. 儲存這個指令碼。將 <wlan-ifname> 替換成您的 Wi-Fi 介面名稱。本文件假設指令碼名稱為 setup-wifi-capture

    #!/usr/bin/env bash
    sudo ifconfig <wlan-ifname>  down
    sudo rfkill unblock wifi
    sudo iwconfig <wlan-ifname>  mode monitor
    sudo ifconfig <wlan-ifname>  up
    sudo iw dev <wlan-ifname> set channel $@
    
  3. 執行上述指令碼,並將通道及最高頻寬傳入訊號範圍,例如通道 153 (其頻寬為 80MHz):

    ./setup-wifi-capture chan 153 80 MHz
    
  4. 開啟 Wireshark,您現在應該可以在 wlan 介面擷取封包。

3. 分享擷取內容

  1. 使用 WPA PSK (原始金鑰) 產生器產生密碼的雜湊值。如此一來,您不需要知道純文字密碼,就能解密擷取。

  2. 您也必須共用產生的 PSK,以便其他人解密拍攝內容。

附錄

安裝 Wireshark

您可以在 Linux 上使用 apt installshark 安裝 Wireshark,或在網路上透過 Wireshark 網站下載。

設定 Wireshark 將流量解密

這對於分享擷取檔案並非必要,除非您想在 Wireshark 中自行檢查已解密的流量,才需要這麼做。

透過 Wi-Fi 使用 WPA2 安全性功能時,WPA2-PSK 不會直接用於流量加密和解密。金鑰用於 4 向握手,您必須擷取資料才能解密封包。不過,如果只要擷取的都是 Wi-Fi 連線或連線中斷的問題 (可從 Wi-Fi 管理影格收集),就不需要擷取 4 向握手。無論是哪種情況,仍不會妨礙拍攝。

開啟 Wireshark,然後開啟「偏好設定」頁面 (依序點選「Wireshark 選單」>「偏好設定」或「Cmd + , **」)。

  1. 在「通訊協定」類別中找出「IEEE 802.11」,並確認已勾選「啟用解密功能」:

    Mac 的 Wireshark 偏好設定

  2. 按一下「Decryption Keys」標籤旁的「Edit」按鈕。

  3. 按一下左下角的「+」按鈕,然後選取「wpa-pwd」選項。

    Mac Wireshark WPA 和密碼

  4. 按一下新建資料列的索引鍵欄 (在 wpa-pwd 字串旁邊),以 <password>:<ssid> 的格式輸入 WPA2 PSK 和 SSID。舉例來說,如果網路名稱是 MyHomeNetwork,而 WPA2 PSK 為 myp4ssword,請輸入 myp4ssword:MyHomeNetwork

    Mac Wireshark SSID

  5. 按一下 [確定] 表示確認。

詳情請參閱 Wireshark 官方指南 (含螢幕截圖),請參閱如何解密 802.11

如果使用 tshark,請傳遞下列引數:

tshark -o wlan.enable_decryption:TRUE -o 'uat:80211_keys:"wpa-pwd","<psk>:<ssid>"'

為 Wireshark 802.11 資料上色

metageek.com 提供方便的 802.11 顏色設定檔:Wireshark Configuration Profile