Linux wlan兼容性问题分析之wifi连接失败

当发送wifi scan后,网卡接收到probe response,wifi的加密与否,如何判定?

我们随机抓取一个帧

  • open wifi 的beacon(wlan.fc.type_subtype == 0x08)
  • 或者probe response(wlan.fc.type_subtype == 0x05)
是通过哪些IE信息来确定AP是否是一个加密无线网络?

最直接的方法是查看帧中Capability Information字段的Privacy位:

  • Privacy = 0:表示AP不要求数据加密,是开放(Open)网络,即无密码
  • Privacy = 1:表示AP要求加密,属于加密网络

如下是无加密的情况:

当前知道了AP是否是加密网络,如果是加密网络,应该有哪些IE?

  • 那就要看RSNE(RSN Information Element,ID 48) 来宣告自己的能力
  • 当然,无加密的wifi,就无RSNE
那根据beacon或者probe response帧,应用层如何来判断出合理的加密类型和加密算法?
  • 首先我们要清楚RSNE中的信息
c 复制代码
RSN Version: 1    //RSN版本号,只定义了1
Group Cipher Suite: 00:0f:ac (Ieee 802.11) AES (CCM)//组播/广播加密套件
Pairwise Cipher Suite Count: 1//单播加密套件的数量
Pairwise Cipher Suite List 00:0f:ac (Ieee 802.11) AES (CCM)//单播加密套件列表
Auth Key Management (AKM) Suite Count: 1//认证与密钥管理套件的数量
Auth Key Management (AKM) List 00:0f:ac (Ieee 802.11) Opportunistic Wireless Encryption//认证与密钥管理方式
RSN Capabilities: 0x00cc//RSN 能力字段

在如上RSNE中:

  • AKM 决定认证与密钥管理
  • Cipher Suite 决定加密算法(Group Cipher Suite and Pairwise Cipher Suite)

所以根据如上,我们需要理解AKM和Cipher Suites的用途及含义

Cipher Suites的值代表的算法及用途
  • Cipher Suites的具体分析:

    对照Cipher Suites的值代表对比,所以Group Cipher Suites算法为AES
  • 同理Pairwise Cipher Suite :

    对照Cipher Suites的值代表对比,所以Pairwise Cipher Suites算法为AES
如下是AKM的值代表的算法及用途
  • Auth Key Management (AKM) Suite 具体分析:

    对照AKM Suite的值代表对比,所以AKM Suite认证类型为PSK
  • 根据RSN Capabilities:

    PMF (Protected Management Frames)是通过 RSNE (RSN Information Element) 中的 RSN Capabilities 字段来宣告的,也就是我圈起来的两个IE
    他们的意义如下:
根据如上信息,如何确定AP的加密类型?
  • 使用了AES的加密算法,适用于WPA2/WPA3
  • 认证密钥(AKM)使用的是PSK,也适用于WPA2/WPA3,
  • 如果是纯WPA3(MFPC和MFPR都为1),PMF会强制开启,所以可能是WPA2/WPA3混合
  • 但是AKM Type为02,并非02/08都包含
    所以加密类型为WPA2-PSK

如下是我们通常会设置的AP参数下的抓包信息

  1. AP加密的信息为open时
    Privacy为0,没有RSNE信息
  2. AP加密的信息为WAP2-PSK时
    Privacy为1

    Group Cipher Suite: 00:0f:ac (Ieee 802.11) AES (CCM)

    Pairwise Cipher Suite List 00:0f:ac (Ieee 802.11) AES (CCM)

    Auth Key Management (AKM) List 00:0f:ac (Ieee 802.11) PSK

    PMF未强制开启(WAP2-PSK可支持PMF,也可不支持PMF)
  3. AP加密的信息为WAP3-AES时
    Privacy为1

    Group Cipher Suite: 00:0f:ac (Ieee 802.11) AES (CCM)

    Pairwise Cipher Suite List 00:0f:ac (Ieee 802.11) AES (CCM)

    Auth Key Management (AKM) List 00:0f:ac (Ieee 802.11) SAE (SHA256)

    PMF强制开启
  4. AP加密的信息为WPA2-PSK/WPA3-AES时
    Privacy为1

    Group Cipher Suite: 00:0f:ac (Ieee 802.11) AES (CCM)

    Pairwise Cipher Suite List 00:0f:ac (Ieee 802.11) AES (CCM)

    Auth Key Management (AKM) List 00:0f:ac (Ieee 802.11) PSK 00:0f:ac (Ieee 802.11) SAE (SHA256)

    PMF开启情况
  5. AP加密的信息为WPA-PSK时
    Privacy为1

    Auth Key Management (AKM) List 00:50:f2 (Microsoft Corp.) PSK

    00-50-F2:(Microsoft):02 (PSK),WPA1 使用的是Microsoft 的 OUI,当时标准未定,所以使用了 Microsoft 的 OUI 作为厂商特定扩展
  6. AP加密的信息为WPA/WPA2-PSK时
    Privacy为1

    WPA1部分在 Vendor Specific IE 中AKM suite

    cipher suite

    使用的算法为TKIP

    WPA2部分在在 RSNE 中
    Group Cipher Suite: 00:0f:ac (Ieee 802.11) TKIP

    Pairwise Cipher Suite List 00:0f:ac (Ieee 802.11) AES (CCM) 00:0f:ac (Ieee 802.11) TKIP

    含了AES和TKIP算法
    Auth Key Management (AKM) List 00:0f:ac (Ieee 802.11) PSK

    根据PMF,可以判断不是WPA3-PSK

    根据如上,现在知道了加密算法和加密类型如何对应beacon帧上报的RSNE.

问题描述:2.4G open wifi连接失败

问题分析
  1. 首先上行wifi 是open模式,但是扫描出来的wifi是加密的,通过抓包确实是加密类型的

    Privacy为1,说明这是一个加密wifi,并非我们理解上的open 非加密的wifi

    连接上行的wpa_supplicant.conf文件内容如下

    open的配置文件显然是连接不上的,所以我们尝试的open config参数是错误的

  2. 那现在需要通过RSNE来确定具体的认证和密钥管理等参数,来看Cipher和AKM

    Group Cipher Suite

    Pairwise Cipher Suite List

    他们使用的都是AES加密

    AKM List

    Auth Key Management (AKM) type: Opportunistic Wireless Encryption (18)

  3. 什么?Auth Key Management (AKM) type为18?

    在表中并未提及啊?

    并且在官方协议中也没有找到有,应该是新特性

    属于是预留状态,于是我更新了下协议文档,查询到:Opportunistic Wireless Encryption简称OWE,目的是让开放(无密码)网络也能加密,目前主要由支持 WPA3 的无线路由器、AP 和终端设备支持

  4. 根据抓包确定配置文件参数

    AKM type 为18(OWE)

    所以key_mgmt=OWE

    为了保险,还需要加owe_only=1参数,让sta强制客户端仅连接OWE加密的AP

  5. PMF强制开启:ieee80211w=2

  6. 组包和单播报加密算法确定

    加密算法为AES

  7. OWE 是 RSN 框架下的一个扩展新特性,确保连接使用 WPA2 或 WPA3 的安全框架

    所以更新wpa_supplicant的配置文件proto=RSN

  8. 最终确定配置文件信息

连接结果

使用wpa_cli status 查看wifi连接情况