保姆级图解:WPS(WSC)协议中M1到M8消息交互全流程(附Wireshark抓包分析)
WPS协议深度解析:从M1到M8的消息交互与Wireshark实战分析
在无线网络安全领域,WPS(Wi-Fi Protected Setup)协议作为简化设备接入的认证机制,其核心交互流程一直是渗透测试人员必须掌握的基础知识。本文将带您深入理解WPS协议中关键的M1到M8消息交换过程,结合Wireshark抓包实例,揭示每个数据包背后的安全含义。
1. WPS协议基础与实验环境搭建
WPS协议本质上是通过EAP(Extensible Authentication Protocol)框架实现的认证流程,整个交互过程包含8个核心消息(M1-M8)。要完整分析这个过程,我们需要准备以下实验环境:
- 硬件设备:支持WPS功能的无线路由器(作为Registrar)和测试终端(作为Enrollee)
- 软件工具:
- Wireshark(最新稳定版)
- 支持监听模式的无线网卡(如AWUS036ACH)
- 网络配置:
# 启用网卡监听模式 sudo airmon-ng start wlan0 # 设置Wireshark抓包过滤器 eapol || wps
关键术语解释:
- Enrollee:请求加入网络的设备(通常是客户端)
- Registrar:网络配置的管理者(通常是AP)
- EAPOL:EAP over LAN,局域网上的EAP协议封装
2. 完整交互流程解析
WPS认证过程可以分为四个主要阶段,每个阶段包含特定的消息交互:
2.1 初始协商阶段
这个阶段建立基本的通信通道和身份确认:
EAPOL-Start
- 方向:Enrollee → Registrar
- Wireshark特征:
EAPOL type: Start (0x01) - 作用:触发认证流程
EAP-Request/Identity
- 方向:Registrar → Enrollee
- 关键字段:
EAP type: Identity (0x01)
EAP-Response/Identity
- 方向:Enrollee → Registrar
- 关键值:
Identity: WFA-SimpleConfig-Enrollee-1-0 - 作用:声明使用WSC认证方法
2.2 密钥交换阶段(M1-M2)
这是整个流程中最关键的安全基础建立过程:
M1消息结构:
EAP-Response/M1 ├── Enrollee Nonce (随机数) ├── MAC Address ├── Public Key └── Device Password ID (标识PIN码类型)M2消息结构:
EAP-Request/M2 ├── Registrar Nonce ├── Public Key └── Authentication Type Flags注意:这两个消息交换后,双方将计算出相同的KDK(Key Derivation Key),这是后续所有加密操作的基础。
2.3 PIN码验证阶段(M3-M7)
这个阶段通过五次交互完成PIN码的双向验证:
| 消息 | 方向 | 关键字段 | 安全作用 |
|---|---|---|---|
| M3 | E→R | E-Hash1/2 | 证明Enrollee知道PIN码 |
| M4 | R→E | R-Hash1/2, Encrypted R-S1 | 提供Registrar验证材料 |
| M5 | E→R | Encrypted E-S1 | 完成前半段验证 |
| M6 | R→E | Encrypted R-S2 | 提供后半段验证材料 |
| M7 | E→R | Encrypted E-S2 | 完成全部PIN验证 |
在Wireshark中,这些消息的加密数据可以通过以下过滤器快速定位:
wps.encrypted_settings != 00:00:00:002.4 配置下发阶段(M8)
最后的M8消息包含网络的实际配置信息:
EAP-Request/M8 ├── SSID ├── Authentication Type ├── Encryption Type ├── Network Key └── MAC Address Filter3. Wireshark实战分析技巧
3.1 关键字段定位方法
在Wireshark中,可以使用以下显示过滤器快速定位重要信息:
- 查找特定消息:
wps.message_type == 0x04(M1的值为0x04,M2为0x05,依此类推) - 提取Nonce值:
# 提取Enrollee Nonce示例 enrollee_nonce = packet[wps].enrollee_nonce - 识别公钥交换:
wps.public_key != 00:00:00:00
3.2 常见问题排查
当分析遇到问题时,可以检查以下典型错误:
密钥计算不匹配
- 确认双方Nonce是否正确交换
- 验证公钥是否完整传输
PIN验证失败
- 检查M3/M4中的Hash值是否匹配
- 确认加密设置字段是否完整
配置下发失败
- 检查M8消息是否包含全部必要字段
- 验证网络参数是否兼容
4. 安全增强与实践建议
理解WPS协议交互后,我们可以采取以下安全措施:
防御建议:
- 禁用路由器WPS PIN码功能(使用按钮配对方式)
- 监控网络中的异常WPS请求
- 定期更换复杂PIN码(如果必须使用)
渗透测试技巧:
# 使用reaver进行WPS测试的基本命令 reaver -i wlan0mon -b AP_MAC -vv -K 1 -d 5在真实环境中,完整的WPS交换通常能在60秒内完成。通过本文的抓包分析方法,您可以:
- 验证设备实现的合规性
- 诊断连接故障的根本原因
- 评估网络对WPS暴力破解的抵抗力
理解每个消息字段的作用后,您会发现WPS协议既展现了精巧的安全设计,也暴露出一些实际部署中的脆弱性。这种深度协议分析能力,正是专业安全人员区别于脚本小子的核心技能。
