深入解析无线WEP和WPA密码及破解原理(三)
5097 点击·0 回帖
![]() | ![]() | |
![]() | 3.6.2 抓取WPA-PSK 的四次握手包进行破解 可以说 WPA-PSK 安全体系是十分完善的。但他始终是用一个密码保护的。对于 这种用密码保护的安全体系。一般情况下我们都可以用一种叫字典攻击的常规攻击手 段。所以针对WPA-PSK 可以进行的直接攻击,目前就只有字典攻击这一种方式。而这 种常规的攻击方式将在字典攻击里详细讨论。当然我们WPA-PSK 的设计者也很明确这 点,所以在WPA-PSK 的安全体系中加入了潜规则加以对抗。这点将在攻击预算里做详 细的讨论。在WPA-PSK 的四次握手包中包含着和密码有联系的信息,依靠这个信息进 行字典攻击。 3.6.3 断线攻击 由于 WPA-PSK 是单向认证的。所以可以使用-0 Deautenticate攻击。这样有助于 我们获取握手包。在获得握手包时-0 攻击不要太多,否则适得其反的。有些AP几次握 手不成就会认为有攻击。禁止客户端和AP的链接30秒。(可能基于WPA EAP TLS 这 样双向认证的就不怕断线攻击了) 3.6.4 间接攻击 例子:别人输密码你在哪里偷看。使用美人计骗取密码。有技术含量点的。原来 WEP时他的计算机有漏洞你给他下了木马。改成WPA 后木马把密码发给你的。或你整 天窃听他的WEP通信,他改密WPA 模式时发给路由的密码让你截获了。比较狠一点的, AP是你卖给他的AP的系统里添加了你的后门。 3.7 WPA安全性的前景 WEP 由原来的安全到今天的不安全。你是否同样也会担心是不是很多年之后的WPA 也会是同样的命运。但我们也要看到WEP 的破解不是某个算法的漏洞导致的。而是整个 WEP的安全体系有很多漏洞所共同导致的。而WPA的安全体系很强壮。使用的大多是混合 算法。所以某一个算法的弱点往往不能给WPA 这样的安全体系以致命的打击。WPA 这种依 靠算法的安全体系也许某一天会被破解。但是可能WPA 被完全破解的那一天比WPA 废弃 的那一天都晚。如果这样的话,那么的确该说WPA 是一种很强壮的安全体系。 3.8 WPA 的窃听 WP-PSK 没有密码几乎没法窃听他的通信。在有了密码的情况下WPA 的窃听也不具 有WEP 中窃听的随意性。在WPA 中SNonce,ANonce 也很好的起到了加密数据防止窃听 的作用,所以作为攻击者我们必须从握手开始窃听。而且会同步更替数据加密密钥。所以 WPA-PSK 的安全性都依赖于密码。 3.9 WPA评价 无论是WPA还是WPA2 在目前都是有很好的安全性的。企业级EAP的安全模式更为 WPA的安全性如虎添翼。我很欣赏WPA = PSK + TKIP + MIC这个模式。因为原来WEP的 设备只需要更换代码就能升级到这个模式了。所以这个模式使用较低的成本就可以实现很高 的安全性,还有便捷性。成本当然也是一个东西是否能普及重要因素。而WPA2 AES+CCMP 的更高的安全性对硬件的要求也是要高一点的。 4 字典攻击 4.1 寻找可以攻击的信息元素 字典攻击作为一种常用的攻击手段要明白的是从那里开始攻击。要寻找和密码有有联系 的信息元素。在WPA 中和密码有联系的信息有数据的传送包和四次握手包。由于无法知道 明文,和WPA的数据加密算法的复杂性。在数据传输包上要找到可以攻击的信息元素基本 上很难实现。所以只能在握手包里寻找有密码有联系的信息。在上面的四次握手包的图片中 很清楚的表明,在四川握手中主要传递的有如下数据:SSID,AP_MAC,STATION_MAC, SNonce,ANonce,802.1x data,MIC。前面6 个元素很清楚,一般不会和密码有联系的。 只有最后一个MIC和密码有所联系。通过MIC的派生图我们知道,MIC是通过上面六个信 息元素和密码通过三个主要的算法派生出来的。那么我们是不是只要找到这三个算法的逆反 算法就可以根据上面的7 个信息元素把密码计算出来了呢。的确实这样。但是这三个算法有 一个共同的名字叫HASH 函数。 4.1.1 HASH 函数 HASH 函数是不可能从生产的散列值来唯一的确定输入值。 a. 单向性(one-way)。HASH 函数是没有反函数的。 b. 抗冲突性(collision-resistant)。要寻找两个hash值相同的原值十分困难。 c. 映射分布均匀性和差分分布均匀性。不像普通函数那样数值分布有一定规 律。 由于上面的pdkdf2_SHA1,SHA1_PRF,HMAC_MD5是HASH 函数。所以我们就基 本上无法直接计算出密码。对于HASH 函数比较有效的攻击就是建立HASH 字典攻击。 HASH 字典就是把预先算好的HASH 值按照线性排列然后组成一个数据库。当我们知道 一个HASH 值时在这个数据库里能马上找到他的原值。当然这个过程是通过数据库实现 的而不是HASH 的逆反函数。所以有些HASH 值在这样的数据库里是找不到原值的。 由于HASH 库是线性的所以。所以在HASH 库里找数据是十分迅速的。下面的链接让 你体验一下HASH 线性库的速度http://www.cmd5.com/。还有一点有的人也知道的国内 的王小云教授对于部分HASH 算法有突出贡献的。她的主要贡献是寻找碰撞值。暴力破 解的话就是大概需要2^80 量级的MD5 HASH 运算。被王教授提高到只需要2^69 量级 的MD5 HASH 运算就能够找到一个碰撞。我们有这样两个对付HASH 函数的方法。那 么对我们破解我怕密码是不是如虎添翼了呢? 4.1.2 HMAC (HASH Message Authentication Code)哈希消息校验算法 这里我承认我刚才有骗过你。pdkdf2_SHA1,SHA1_PRF,HMAC_MD5 不是HASH 函数。当然我骗你我也有我的理由啦。第一我以前被别人骗过,某论坛上说建立HASH 库然后进行WPA破解的。能建立HASH 库那三个函数不是HASH 函数那是什么啊。第 二我不是故意的。了解HASH 函数,有助于你理解HMAC 算法。所以 pdkdf2_SHA1,SHA1_PRF,HMAC_MD5是HMAC算法。不是HASH 函数。HMAC算法 就是用一个密码,和一个消息。最后生成一个HASH值。由上面的介绍,我们可以看出, HMAC算法更象是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的 HASH 算法。所以上面对HASH 的攻击,对于HMAC 是没有效果的。HMAC 特别是 象“挑战/响应”身份认证应用中,由于攻击者无法事先获得HMAC 的计算结果,对系 统的攻击只能使用穷举或“生日攻击”的方法,但计算量巨大,基本不可行。所以,在 目前的计算能力下,可以认为HMAC算法在“挑战/响应”身份认证应用中是安全的。 4.1.3 四次握手包 有上面的HMAC 的特性我们也不难得出SSID,AP_MAC,STATION_MAC, SNonce,ANonce,802.1x data,这些信息元素都是上面的HMAC算法里的消息。HMAC 算法里的密码在pdkdf2_SHA1 算法里是WPA 的密码,在SHA1_PRF 算法里是PMK, 在HMAC_MD5算法里是PTK。最后才得出MIC值。由于这些消息和这个MIC值都有 关联性。所以四次握手吧的后面三次是缺一不可的。而且是有时效性的。不能把不是同 一次的握手包拼起来使用的。当然第一次握手包的SSID 和AP-MAC是可以后获取的。 这里你也明白了四次握手中根本是不是在传递一个简单的HASH 值。而是要传递一个 HMAC 值。如果是传递一个简单的HASH 值,那么我们只要获取后重播这个值就可以 欺骗AP 获得认证了。都不要知道这个HASH 值对应的原值。但我的这么好的想法被 HMAC给打破了。 | |
![]() | ![]() |