WIFI无线网络之PMF

概述

Wi-Fi 中的 PMF 全称为 Protected Management Frames(受保护的管理帧)。它是 IEEE 802.11w 标准中引入的一项安全技术(现已并入 802.11-2012 及后续标准),旨在解决早期 Wi-Fi 网络中管理帧缺乏保护的安全漏洞。

核心概念:什么是“管理帧”?

在 Wi-Fi 通信中,数据包分为三种主要类型:

  1. 数据帧(Data Frames):传输用户的实际上网数据(如网页、视频)。
  2. 控制帧(Control Frames):用于协调介质访问(如 RTS/CTS)。
  3. 管理帧(Management Frames):用于管理 Wi-Fi 连接状态,如扫描网络、身份验证、关联、断开连接(Deauth/Disassoc)等。

在 PMF 出现之前,数据帧可以通过 WPA/WPA2 进行加密,但管理帧始终是明文传输且未经校验的。这就好比你和朋友在密室里用密码交谈(数据帧加密),但你们进出密室的开门声、关门声(管理帧)却是对着大街上广播的,且任何人都可以模仿这个声音。

为什么需要 PMF?(解决的安全隐患)

由于早期管理帧是明文且无完整性校验的,黑客可以轻易伪造管理帧发起攻击。PMF 主要为了防御以下攻击:

  1. 解除认证攻击(Deauthentication Attack / 踢人下线)
    • 原理:黑客伪造路由器(AP)的 MAC 地址,向你的手机发送“解除认证(Deauth)”帧。手机信以为真,就会断开与路由器的连接。
    • 危害
      • 拒绝服务(DoS):让你一直无法连上 Wi-Fi。
      • 抓取握手包:强制你重新连接,以便黑客在后台抓取 WPA2 的四次握手包,用于离线暴力破解密码。
      • 钓鱼 Wi-Fi(Evil Twin):把你从真实的 Wi-Fi 踢下线,迫使你的手机自动连接到黑客建立的名称相同、但没有密码的“伪造热点”。
  2. 解除关联攻击(Disassociation Attack)
    • 与 Deauth 类似,强制设备断开与 AP 的关联。
  3. 伪造 Beacon / Probe Response(虚假热点广播)
    • 黑客可以伪造路由器的信标帧,让你的手机以为某个网络存在,从而泄露你的设备 MAC 地址和探测记录,进行位置追踪。

PMF 的引入,给这些管理帧加上了“数字签名”和“加密”,让黑客无法再轻易伪造路由器发送断开连接的指令。


PMF 是如何工作的?(技术原理)

PMF 对管理帧的保护分为两种情况,因为有些管理帧必须公开,有些则必须私密:

1. 单播管理帧(Unicast Management Frames)

  • 包含帧类型:Action、Deauthentication、Disassociation 等(路由器与特定手机之间的通信)。
  • 保护方式加密 + 完整性校验
  • 机制:使用设备与路由器之间协商的密钥(PTK,成对临时密钥)对帧进行 AES-CCMP 加密。即使黑客抓到了这些帧,也无法篡改内容,更无法伪造发送。

2. 广播/组播管理帧(Broadcast/Multicast Management Frames)

  • 包含帧类型:Beacon(信标帧,用于广播 Wi-Fi 名称)、Probe Response(探测响应)等。
  • 保护方式仅完整性校验(不加密)
  • 机制:这些帧必须被周围所有未连接的设备看到(否则你的手机搜不到 Wi-Fi),因此不能加密。PMF 引入了 BIP(广播/组播完整性协议)IGTK(完整性组临时密钥)。路由器会给这些公开的帧加一个“数字签名(MIC)”。手机收到后,如果发现签名不对,就知道这个广播是黑客伪造的,从而忽略它。

路由器的三种 PMF 配置模式

在支持 802.11w 的路由器设置中,PMF 通常有三个选项:

模式名称 中文含义 工作原理 适用场景
Disabled 禁用 不保护管理帧。完全向后兼容老旧设备,但存在被 Deauth 攻击的风险。 拥有大量 2012 年以前的老旧智能家居设备(如老式智能插座、旧打印机)的环境。
Capable (或 Opportunistic) 支持/机会模式 (推荐) “能用则用”。如果手机支持 PMF,就启用保护;如果老旧设备不支持,则以明文方式降级连接。 绝大多数家庭和企业的最佳选择,兼顾了安全性和兼容性。
Required 强制要求 路由器强制要求连接的设备必须支持 PMF。不支持的老旧设备将完全无法连接 Wi-Fi。 对安全性要求极高的企业网络,或清一色新设备的环境。

PMF 与 WPA3 的强绑定关系

WPA3 标准将 PMF 设为强制性要求(Mandatory)。

  • WPA2 时代,PMF 是可选的(Opportunistic)。
  • WPA3 时代,如果没有开启 PMF,就不能被称为真正的 WPA3 网络。
  • 常见痛点:很多用户买了新路由器开启 WPA3 后,发现家里的老旧电视、旧款扫地机器人或旧手机连不上 Wi-Fi。这通常不是因为密码错误,而是因为老旧设备的网卡不支持 PMF,被 WPA3 的强制安全策略拒之门外。

(注:为了解决 WPA3 的兼容性问题,Wi-Fi 联盟后来推出了 **WPA3-Transition Mode (过渡模式)**,允许路由器同时广播 WPA2 和 WPA3 信号,让老设备走 WPA2,新设备走 WPA3。)


Linux查看PMF支持

⚙️ 第一步:检查硬件是否支持 PMF

首先需要确认你的无线网卡硬件和驱动是否支持PMF。

通过 iw 命令检查(推荐)

这是最通用的方法,通过查看网卡支持的加密套件(Cipher Suites)来判断。

  1. 查看所有PHY设备信息

    iw phy

    这会列出所有无线物理设备。记下你要检查的设备名,通常是 phy0

  2. 检查特定PHY的加密套件支持

    iw phy phy0 info | grep -A 9 'Supported Ciphers'

    或者,更精确地搜索PMF专用的加密套件

    iw phy phy0 info | grep '00-0f-ac:6'

    00-0f-ac:6AES-CMAC 的 OUI(组织唯一标识符)。如果该命令有输出,说明硬件支持PMF。

    其他PMF相关的加密套件包括 GMAC-128 (00-0f-ac:11)GMAC-256 (00-0f-ac:12)

  3. 检查驱动特性(可选)
    如果你的 iw 版本是 5.0 或更高,可以检查驱动是否支持可选的PMF。

    iw phy phy0 info | grep MFP_OPTIONAL

    如果在输出中看到 MFP_OPTIONAL,说明驱动支持PMF。

🔗 第二步:检查当前连接是否使用了 PMF

即使硬件支持,也需要确认当前与AP(接入点)的连接是否真正启用了PMF。

使用 wpa_supplicantSTATUS 命令

如果你的Wi-Fi连接由 wpa_supplicant 管理,可以这样检查:

wpa_cli status

在输出中查找 pmf 字段:

  • pmf=1:表示当前BSS(基本服务集)可选地使用了PMF。
  • pmf=2:表示当前BSS要求使用PMF。

如果该字段不存在或值为0,则PMF未启用。

扫描并检查AP的广播信息

你可以通过扫描来查看AP是否宣告支持或要求PMF。请将 wlan0 替换为你的无线网卡接口名。

iw dev wlan0 scan | grep -A 20 'SSID: Your_AP_Name'

在返回的RSN(Robust Security Network)信息元素中查找:

  • MFP-required**:表示该AP要求**客户端必须使用PMF。
  • MFP-capable**:表示该AP支持**PMF,但不强制客户端使用。

注意:此方法仅显示AP的能力,不代表你的客户端当前连接已启用PMF。

📝 第三步:检查 PMF 的软件配置

PMF是否启用,最终取决于上层管理软件(如 wpa_supplicantNetworkManager)的配置。

wpa_supplicant 配置

检查 wpa_supplicant 的配置文件(通常是 /etc/wpa_supplicant/wpa_supplicant.conf/etc/wpa_supplicant.conf)。

在网络配置块(network={...})中,查找 ieee80211wpmf 字段:

  • ieee80211w=0 或 **pmf=0**:禁用PMF。
  • ieee80211w=1 或 **pmf=1**:启用PMF(可选)。
  • ieee80211w=2 或 **pmf=2**:启用PMF(必需)。

NetworkManager 配置

如果你使用 NetworkManager,可以通过以下命令查看或设置PMF属性:

  • 查看
    nmcli con show "你的连接名称" | grep 802-11-wireless-security.pmf
  • 设置(例如,设置为可选):
    nmcli con mod "你的连接名称" 802-11-wireless-security.pmf 1