[cpp]
//--------------------------------------------------------------------
// 深入理解Aireplay-ng各种攻击及其原理
// 作者:GaA.Ra(zhoufan#yahoo.cn)
// 随意转载,但请保留此部分信息,谢谢
//--------------------------------------------------------------------
这里主要讲常用的攻击模式(对于-6,-7攻击并不涉及),深入原理的集中在-2,-4,-5这三种攻击
[cpp]
/*-------------------------------------------------------------------
Attack modes (numbers can still be used): //攻击模式(数字仍然可以使用)
--deauth count : deauthenticate 1 or all stations (-0) //解除一个或者全部站的连接
--fakeauth delay : fake authentication with AP (-1) //对AP进行伪连接攻击
--interactive : interactive frame selection (-2) //交互注入攻击
--arpreplay : standard ARP-request replay (-3) //标准Arp请求包重放攻击
--chopchop : decrypt/chopchop WEP packet (-4) //解码或断续WEP数据包攻击
--fragment : generates valid keystream (-5) //产生合法密钥流
-------------------------------------------------------------------*/
一.-0攻击
-0攻击主要是伪造一个disassocate包,让ap断开与客户端的链接,此时客户端会重新连接ap,那么我们从中可能得到的东西有:1,假如AP不广播ESSID,那么我们可以得到这个ESSID;2.如果使用的是WPA/WPA2的加密方式,通过这样做强迫客户端重新验证,我们就能够获得握手包;3.再重新连接过程中我们可以获取到ARP数据包,为-3攻击做准备.
二.-1攻击
之前我一直也没弄明白为什么能够进行伪连接,既然我们并不知道WEP密码,那么如何进行连接 伪连接的伪主要体现在什么地方 这个应该是和AP的工作机制有关.我自己的理解是,在客户端与AP通信的时候,客户端需要在AP那里登记自己的MAC地址,这样AP才会接受这个MAC地址的网卡产生的数据包进行下一步的工作.一般WEP验证过程为:1.客户端发给AP认证请求 2.AP发回挑战字串 3.客户端利用WEP密码加密字串返回给AP 4.AP对返回结果进行本地匹配判断是否通过认证. 伪连接实际上就是进行了第1步,此后AP就登记了客户端的MAC地址,此时AP等待的是客户端返回挑战字串的加密包,对于攻击者,此时AP已经能够接受各种伪装生成的数据包并对其作出反应了.这一步对于无客户端的-2,-4,-5攻击相当重要.很明显,这样伪连接并不产生任何ARP包,同时也不会获得正确的WPA/WPA2握手包.
三.-2攻击
-2攻击实际上是对特定的数据包进行重放,当AP收到这个数据包的时候对这个数据包进行广播,进而我们能够获得更多的iv以达到破解的要求.这个特定的数据包需要满足什么要求,我们需要了解一些相关的IEEE802.1帧控制的知识.如图

图中是一个ARP包,可以看到在数据包的开始位置就是帧控制的数据结构,长度是2字节.第一个字节的结构是{Version:4bit,Type:2bit,Subtype:2bit}对于这部分,我们需要的是一个Type为2,也即是Data frame(数据帧),因为只有是数据帧,那么才有iv,才会用到WEP加密数据.对于flag字节,也就是第二个字节,我们需要设置To DS域为1(图中设置了From DS域为1),To DS域表示To Distribution System的标志,因为数据使用了WEP加密,所以Protected flag也被置为1,此时加上一个FF:FF:FF:FF:FF:FF的目标地址(广播地址)则这个就是我们可以重放的数据包.当AP收到这个数据包时,会对他使用新的IV加密后广播.我们不断的重放这个数据包以达到收集IV的目的.
这里产生的疑问是,是否我们没有抓到这样的一个数据包我们就不能进行交互注入 答案是否定的.我们常用的是0841注入,通过对一个合法的数据帧进行修改,让他符合上面的条件从而使AP接收并重新广播.我们看一下为什么叫0841,0841的二进制位0000 1000 0100 0001,从刚才的分析看到,1000中的10是Type域,0100中1是Protected flag,0001中的1是To DS,这样合起来便是0841的含义.等待一个AP自然产生的满足条件的数据帧有时候需要等待很久,如果我们对于一个合法的数据帧的帧控制进行修改,改成0841,同时修改目标地址为广播地址(注意帧控制和目标地址等都是以明文形式发送),由于AP并不检查数据内容,只是从控制字段判断,所以AP会对收到的这个我们修改过的数据包进行广播,从而我们也就达到我们的目的--收集IV.当然我们修改的数据帧的长度最好不要太长.
另外,-2攻击可以配合packetforge-ng产生的伪造数据包进行重放.
四,-3攻击
ARP请求重放攻击,当抓取到一个ARP请求包的时候对它进行重放,WEP体系允许IV的重复使用因此AP会对重放的ARP请求包进行应答,从而能够收集到足够数量的IV.利用arp请求包的重放效率是最高的.后面的-4,-5攻击在获得XOR文件也即是密钥流之后,也是利用packetforge-ng生成一个arp请求包用以重放.
五,-4攻击
KoreK的Chopchop攻击,这个攻击的理论是基于对CRC算法的数学分析的基础上,对于数学部分我们这里不深入探讨,只是用到KoreK提到的结论.WEP的核心加密算法是RC4(参考 RC4算法使用的是异或加密(我们用XOR表示异或操作),简单流程这样,我们提供一个40位的密钥,加上IV提供24位,总共64位作为种子,RC4根据这个通过PRGA(伪随机生成算法)产生密钥流,这个密钥流与我们要发送的数据进行异或操作即完成加密.为了保证数据传送过程中的完整性,WEP使用CRC算法在数据后加上4个字节的校验码(这4个校验码也要跟密钥流进行异或加密),我们称这4个字节为ICV(Integrity check value).现