Probe 帧分析:Probe Request 与 Probe Response、主动扫描与被动扫描、设备指纹识别
说到 WiFi 配网抓包,Probe 帧是我个人最常盯的第一个东西。为什么?因为设备还没连上 AP 之前,它就已经在「说话」了。你想想看,一个智能插座刚上电,它连 SSID 都不知道,怎么找到家的?靠的就是 Probe 帧。
这一节,咱们把 Probe Request、Probe Response、主动扫描、被动扫描,还有怎么从这些帧里抠出设备指纹,一次性讲透。
3.1 主动扫描 vs 被动扫描:设备是怎么「找网」的?
WiFi 设备扫描周围网络,说白了就两种方式:主动扫描和被动扫描。我刚开始做 IoT 配网调试时,经常搞混这两种行为的触发条件,后来踩了几个坑才彻底理清。
| 对比项 | 主动扫描 | 被动扫描 |
|---|---|---|
| 行为 | 设备主动发 Probe Request | 设备静听 Beacon 帧 |
| 速度 | 快,几秒内扫完所有信道 | 慢,需等待 AP 周期性发送 Beacon |
| 功耗 | 较高,发射占空比大 | 较低,仅接收不发射 |
| 隐私性 | 暴露设备 MAC 和扫描列表 | 相对隐蔽,只监听 |
| 典型场景 | 手机、IoT 设备配网阶段 | 低功耗传感器、后台扫描 |
主动扫描时,设备会在每个信道上广播 Probe Request。如果 Probe Request 里带了具体 SSID,这叫「定向扫描」;如果 SSID 字段为空(长度 0),这叫「空扫描」或「广播扫描」。空扫描会触发周围所有 AP 回复 Probe Response,这在抓包时特别明显——你会看到一串密集的 Response 帧涌回来。
3.2 Probe Request 帧结构:设备在「自我介绍」
抓到一个 Probe Request,别只看它是个管理帧就跳过。里面藏的信息比你想象的多。咱们拆开来看:
- Frame Control:类型=管理帧(00),子类型=Probe Request(0100)。
- SA(Source Address):设备的 MAC 地址。注意,现在很多手机用随机 MAC,但 IoT 设备大多还是真实 MAC。
- SSID:要么是具体名字,要么是空(广播扫描)。
- Supported Rates:设备支持的速率集,能看出是 802.11b/g/n/ac。
- HT Capabilities / VHT Capabilities:是否支持 40MHz、80MHz 带宽,是否支持 MIMO。
- Extended Capabilities:比如 802.11k、802.11v 等协议支持情况。
- Vendor Specific:厂商自定义信息,这是设备指纹的重灾区。
举个例子,我在抓一个智能灯泡的配网包时,发现它的 Probe Request 里带了一个长度为 8 字节的 Vendor Specific 字段,OUI 是某个芯片厂商的。光凭这个,我就能判断它用的是哪家的 WiFi 模组。
3.3 Probe Response 帧结构:AP 在「亮家底」
AP 收到 Probe Request 后,如果匹配 SSID(或者 Request 是空扫描),就会回复 Probe Response。这个帧比 Request 大得多,因为它要把自己的「家底」全亮出来。
Frame 1234: 802.11 Probe Response, TA=aa:bb:cc:dd:ee:ff (AP MAC)
- Timestamp: 123456789 (用于同步)
- Beacon Interval: 100 TU (约 102.4ms)
- Capability Info: ESS, Privacy (加密)
- SSID: "MyHomeWiFi"
- Supported Rates: 6, 9, 12, 18, 24, 36, 48, 54 Mbps
- DS Parameter Set: Channel 6
- Country Information: CN, 1-13
- RSN Information: WPA2-PSK, CCMP
- HT Capabilities: 40MHz, SGI, MCS 0-15
- Vendor Specific: (厂商扩展,如 WMM、802.11d)
这里有个关键点:Probe Response 里的 RSN Information 字段,直接告诉客户端这个 AP 用的是 WPA2 还是 WPA3,加密方式是 CCMP 还是 TKIP。我在做兼容性测试时,经常用这个字段来验证 AP 是否真的开启了预期的安全配置。
3.4 设备指纹识别:从 Probe 帧里「人肉」设备
设备指纹识别,说白了就是通过 Probe 帧里的各种特征,判断这个设备是什么型号、用的什么芯片、甚至是什么固件版本。这在网络管理、安全审计、配网排障里非常有用。
我常用的指纹特征包括:
- MAC 地址 OUI:前 3 字节,对应厂商。但注意,随机 MAC 会干扰这个判断。
- Supported Rates 顺序:不同芯片厂商对速率集的排列顺序有差异。
- HT/VHT Capabilities 中的 MCS 集合:有些芯片只支持 MCS 0-7,有些支持到 15。
- Vendor Specific 内容:这是最个性化的部分。比如 Broadcom 的芯片会在里面填充特定的 TLV 结构。
- Probe Request 发送间隔:有些设备每隔 100ms 发一次,有些是 200ms。这个时间模式也能作为指纹。
举个例子,我抓过一个不知名的 IoT 网关,它的 Probe Request 里 Supported Rates 顺序是 12, 18, 24, 36, 48, 54, 6, 9,跟主流芯片的顺序都不一样。后来查资料,发现这是一家台湾小厂的老方案。你看,光靠一个顺序就能缩小排查范围。
3.5 知识体系:Probe 帧分析全景图
下面这张图,是我自己梳理的 Probe 帧分析知识结构。你可以把它当作一个检查清单,看看自己有没有遗漏哪个环节。
3.6 实战抓包建议
最后,给几个我在实战中总结的抓包建议:
- 抓 Probe 帧,信道要设对:设备扫描时会跳信道,建议用多信道抓包工具(比如 Kismet 或带 monitor mode 的网卡)。
- 别忽略空扫描:很多 IoT 设备配网时发的是空 Probe Request,如果你只过滤特定 SSID,会漏掉关键包。
- 对比正常设备和故障设备:拿一个已知正常的同型号设备抓包对比,指纹差异一眼就能看出来。
- 保存原始 pcap:Wireshark 的解析结果可以导出,但原始 pcap 才是最有价值的。我习惯把每次排障的 pcap 按日期和设备名归档。
嗯,Probe 帧这块内容,说深不深,说浅不浅。但只要你掌握了从 Request 到 Response 的完整链路,再结合设备指纹的思路,配网抓包分析就算入门了。下一层,咱们要进入更细的认证和关联阶段,那里才是真正考验耐心的地方。