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 帧涌回来。

我的习惯: 排查配网失败时,我第一件事就是看设备有没有发 Probe Request。如果连 Request 都没发,那问题大概率在设备端,跟 AP 没关系。别上来就去调路由器。

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 模组。

核心观点: Probe Request 里的 Vendor Specific 字段,是设备指纹识别最直接的入口。不同厂商、不同 SDK 版本,填充的内容和格式都不一样。

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 是否真的开启了预期的安全配置。

我曾经踩过的坑: 有一次配网总失败,抓包发现设备发了 Probe Request,AP 也回了 Probe Response,但设备就是不连。后来仔细看 Response 里的 RSN 字段,发现 AP 同时宣告了 WPA2 和 WPA3 混合模式,而设备只支持 WPA2。设备在 Association 阶段直接拒绝了。所以,别只看能不能收到 Response,还要看里面的参数是否匹配。

3.4 设备指纹识别:从 Probe 帧里「人肉」设备

设备指纹识别,说白了就是通过 Probe 帧里的各种特征,判断这个设备是什么型号、用的什么芯片、甚至是什么固件版本。这在网络管理、安全审计、配网排障里非常有用。

我常用的指纹特征包括:

  1. MAC 地址 OUI:前 3 字节,对应厂商。但注意,随机 MAC 会干扰这个判断。
  2. Supported Rates 顺序:不同芯片厂商对速率集的排列顺序有差异。
  3. HT/VHT Capabilities 中的 MCS 集合:有些芯片只支持 MCS 0-7,有些支持到 15。
  4. Vendor Specific 内容:这是最个性化的部分。比如 Broadcom 的芯片会在里面填充特定的 TLV 结构。
  5. Probe Request 发送间隔:有些设备每隔 100ms 发一次,有些是 200ms。这个时间模式也能作为指纹。

举个例子,我抓过一个不知名的 IoT 网关,它的 Probe Request 里 Supported Rates 顺序是 12, 18, 24, 36, 48, 54, 6, 9,跟主流芯片的顺序都不一样。后来查资料,发现这是一家台湾小厂的老方案。你看,光靠一个顺序就能缩小排查范围。

我的建议: 如果你在做设备指纹库,建议把 Probe Request 和 Probe Response 的完整十六进制 dump 都存下来。很多时候,光看 Wireshark 解析的字段不够,原始字节里的 padding 和保留位也可能藏着特征。

3.5 知识体系:Probe 帧分析全景图

下面这张图,是我自己梳理的 Probe 帧分析知识结构。你可以把它当作一个检查清单,看看自己有没有遗漏哪个环节。

Probe 帧分析知识体系 Probe 帧分析知识体系 主动扫描 被动扫描 Probe Request Probe Response SSID / 空扫描 Supported Rates HT/VHT Capabilities Vendor Specific 设备指纹识别 配网排障 安全审计 设备兼容性测试 说明:从扫描方式出发,经过帧类型、关键字段,最终汇聚到设备指纹识别,并落地到实际应用场景。

3.6 实战抓包建议

最后,给几个我在实战中总结的抓包建议:

  • 抓 Probe 帧,信道要设对:设备扫描时会跳信道,建议用多信道抓包工具(比如 Kismet 或带 monitor mode 的网卡)。
  • 别忽略空扫描:很多 IoT 设备配网时发的是空 Probe Request,如果你只过滤特定 SSID,会漏掉关键包。
  • 对比正常设备和故障设备:拿一个已知正常的同型号设备抓包对比,指纹差异一眼就能看出来。
  • 保存原始 pcap:Wireshark 的解析结果可以导出,但原始 pcap 才是最有价值的。我习惯把每次排障的 pcap 按日期和设备名归档。

嗯,Probe 帧这块内容,说深不深,说浅不浅。但只要你掌握了从 Request 到 Response 的完整链路,再结合设备指纹的思路,配网抓包分析就算入门了。下一层,咱们要进入更细的认证和关联阶段,那里才是真正考验耐心的地方。