通过捕获 Wi-Fi 数据包,您可以在捕获到设备上运行的软件之前被遮盖的详细信息和交互,从而捕获某些类型的 bug 的重要工具。
涉及的主要步骤如下:
- 找准频道去嗅探。
- 把握流量。
- 分享 WLAN 密码的捕获和哈希值。
1. 确定合适的频道和宽度
WLAN 网络运行环境:
网络中的每个接入点(例如路由器、网状节点)通常具有唯一的 2.4GHz 信道和 5GHz 信道,您需要确定设备连接的是哪一个。有以下几个选项:
使用路由器的控制面板
如果您使用的是 Nest WiFi,请跳过此选项 - 系统不会公开信息。
大多数路由器都有一个已连接设备的列表以及它们使用的通道和宽度。
- 按照此指南查找路由器的 IP 地址。
- 在网络浏览器中,转到路由器的地址,例如 http://192.168.1.1。
- 登录。不知道密码?查找路由器上的标记,或使用路由器密码。
查找名为“客户端”或“已连接的设备”等内容的页面。例如,Netgear 路由器页面可能如下所示,或适用于 Eero 设备。
您可能需要查看设置中的其他地方,将第 4 步中的信息映射到特定通道和带宽。例如,Netgear 路由器:
如果您的 Mac 已连接到同一频道,请使用它
按住键盘上的 Option,然后点击 Mac 状态栏中右上角的 WLAN 图标。您应该会看到常规 Wi-Fi 菜单,其中包含一些更多选项和信息。请查看不可用的菜单项,并找出提及“频道”的菜单项:
`Channel 60 (DFS, 5GHz, 40MHz)`
找不到频道和宽度
如果其他方法都行不通,您可以尝试以下方法:
列出您的 AP 正在使用的所有信道(通常每个 AP 或网状网点有 2 个信道)。
a. 建议:在 Android 手机上,您可以使用 Wifiman 或 Aruba 实用程序等应用。
a. 在 Mac 上,您可以使用
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport-s
列出选项。按照以下说明,对每个频道执行一小段(即使 15 秒也足够)捕获
安装 Wireshark(如需帮助,请参阅安装 Wireshark)。
使用 Wireshark 打开每个捕获,应用
wlan.addr == YOUR_DEVICE'S_MAC
的显示过滤器,看看是否显示了任何数据包。
2. 开始拍摄
重要提示:捕获四次握手
如果开启了 WLAN 的安全性,您需要知道加密密钥才能解密捕获的数据包。加密密钥派生自设备连接到网络时进行的四次握手,且对于设备和 AP 之间的每个连接都是唯一的。
因此,您必须捕获四次握手以解密 Wi-Fi 载荷。如果在开始捕获时设备已连接到网络,请在嗅探开始后断开连接并重新连接设备(或重新启动设备)。
在 Mac 上拍摄
按住键盘上的 Option 键,点击 WLAN 图标,然后选择“打开无线诊断...”:
在“无线诊断”菜单栏中,依次选择窗口 > Sniffer:
将通道和宽度设置为您之前检索的值(屏幕截图示例为 Channel 60 和 Width 40 MHz):
按 Start
并输入密码。现在,尝试重现问题。
确保您从连接捕获四次握手,如捕获四次握手中所述。
完成后,按 Stop
。可以在包含所有流量的 /var/tmp
中找到新的 *.pcap
文件。示例文件名为:(null)_ch100_2018-11-06_10.52.01.pcap
。
在 Linux 上截取
关闭 WLAN。这可以通过以下两种方式实现:
- 使用 GUI(推荐)
- 使用网络管理器 CLI 指示其停止管理 Wi-Fi 接口:
sudo nmcli dev set <wlan-ifname> managed on
- 如果使用其他网络管理器,请进行相应调整。
保存此脚本。将
<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 $@
执行上述脚本并传入信道和最高带宽以进行嗅探,例如信道 153 和 80MHz:
./setup-wifi-capture chan 153 80 MHz
打开 Wireshark,现在您应该能够在 wlan 接口上捕获数据包。
3. 分享截图
使用 WPA PSK(原始密钥)生成器生成密码的哈希值。这样,您就可以在不知道明文密码的情况下解密捕获的内容。
您还需要共享生成的 PSK,以便其他人可以解密捕获的 PSK。
附录
安装 Wireshark
您可以在 Linux 上使用 apt install Wireshark 安装 Wireshark,也可以从 Wireshark 网站在线下载 Wireshark。
设置 Wireshark 以解密流量
对于共享捕获文件而言,此操作不是必需的;只有当您想要在 Wireshark 中自行检查解密流量时,才需要执行此操作。
通过 Wi-Fi 上的 WPA2 安全性,WPA2-PSK 不会直接用于流量加密和解密。它用于四次握手,您需要捕获该四次握手以解密数据包。但是,如果您尝试捕获的只是连接到 Wi-Fi 的问题或连接中断(可以从 Wi-Fi 管理帧中收集),则不需要捕获四向握手。无论哪种情况,捕捉它并没有什么坏处。
打开 Wireshark 并打开“Preferences”页面(Wireshark 菜单 > Preferences 或 **Cmd + , **)。
在“协议”类别中找到“IEEE 802.11”部分,并确保选中“启用解密”:
点击解密密钥标签旁边的修改按钮。
点击左下角的“+”按钮,然后选择“wpa-pwd”选项。
点击新创建的行的键列(位于 wpa-pwd 字符串的右侧),以
<password>:<ssid>
格式输入您的 WPA2 PSK 和 SSID。例如,如果您的网络名称为MyHomeNetwork
,WPA2 PSK 为myp4ssword
,请输入myp4ssword:MyHomeNetwork
。点击“确定”进行确认
如需了解详情,请参阅 Wireshark 的官方指南(含屏幕截图)中的 How to Decrypt 802.11(如何解密 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 配置文件。