您的位置:首页 > 大数据 > 人工智能

深入理解Aireplay-ng各种攻击及其原理

2016-02-09 10:36 489 查看
这里主要讲常用的攻击模式(对于-6,-7攻击并不涉及),深入原理的集中在-2,-4,-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以达到破解的要求.这个特定的数据包需要满足什么要求,可以看到在数据包的开始位置就是帧控制的数据结构,长度是2字节.第一个字节的结构是{Version:4bit,Type:2bit,Subtype:2bit}对于这部分,我们需要的是一个Type为2,也即是Data frame(数据帧),因为只有是数据帧,那么才有iv,才会用到WEP加密数据.对于flag字节,也就是第二个字节,我们需要设置To
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).现在假设我们要发送的数据明文为P,密钥流为KeyStream,那么,加密的数据M=(P + ICV(P)) XOR KeyStream,如果我们知道明文P,那么我们就能够得到KeyStream(=M XOR (P+ICV(P))),有了KeyStream我们就能伪造任意的数据包(如ARP请求包),发送给AP从而收集IV.关键在于如何得到明文P,KoreK的研究发现,当我们把抓取到的数据包M截去最后的一个字节的时候,此时数据包是无效的数据包(ICV错误),但是当与一个掩码进行XOR运算之后,这个数据包将会恢复为有效的数据包.而这个掩码的计算取决于我们截去的那个字节的明文(我们截去的字节已经经过加密),一个字节是8位,通过最多2^8=256次尝试,我们能够确定截去字节的明文.思路如下:

    1,我们抓取一个数据包,然后截去这个数据包加密部分的最后一个字节(注意,数据包包含有用RC4加密的部分和以明文传输的帧控制部分两部分,看上面-2攻击的图).

    2,我们产生256个掩码,每个掩码对应一个明文字节,然后进行异或操作.

    3,将这256个数据包的目标MAC地址改为组播地址,格式如01:00:5E:00:00:XX,XX和明文字节相同.

    4,发送这256个数据包,通过AP的返回的数据包目标地址最后一个字节判断明文是什么,记录下来.

    5,利用返回的数据包重复第1步直到获得所有明文.

    当获得所有明文之后,将其与原始数据包加密部分异或,得到密钥流KeyStream.Aireplay-ng将它保存为一个XOR文件.

原文地址:http://www.xuebuyuan.com/zh-tw/707257.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  aireplay-ng