Wifi加密方式及其破解简单原理

时间:2024-02-19 15:05:55

Wifi加密方式 

一种数据加密算法,用于提供等同于有线局域网的保护能力。它的安全技术源自于名为RC4的RSA数据加密技术,是无线局域网WLAN的必要的安全防护层。

目前常见的是64位WEP加密和128位WEP加密。

 WPA(WiFiProtectedAccess ,WiFi网络安全存取)。

WPA协议是一种保护无线网络(WiFi)安全的系统,它是在前一代有线等效加密(WEP)的基础上产生的,解决了前任WEP的缺陷问题,
它使用TKIP(临时密钥完整性)协议,是IEEE 802.11i标准中的过渡方案 。其中WPA-PSK主要面向个人用户。 

WPA2,即WPA加密的升级版。

它是WiFi联盟验证过的IEEE 802.11i标准的认证形式,WPA2实现了802.11i的强制性元素,
特别是Michael算法被公认彻底安全的CCMP(计数器模式密码块链消息完整码协议)讯息认证码所取代、而RC4加密算法也被AES(高级加密)所取代。

 WPA-PSK+WPA2-PSK。

从字面便可以看出,很明显,最后一种是两种加密算法的组合,可以说是强强联手。
WPA-PSK 也叫做 WPA-Personal(WPA个人)。WPA-PSK使用TKIP加密方法把无线设备和接入点联系起来.
WPA2-PSK使用AES加密方法把无线设备和接入点联系起来。   

1、聊胜于无的WEP   

WEP作为一种老式的加密手段,它的特点是使用一个静态的密钥来加密所有的通信 ,
这就意味着,网管人员如果想更新密钥,必须亲自访问每台主机,并且其所采用的RC4的RSA数据加密技术具有可预测性,
对于入侵者来说很容易截取和破解加密密钥,使用户的安全防护形同虚设,因此如非迫不得已,不建议选择此种安全模式。  

2、升级后的WPA   

继WEP之后,人们将期望转向了其升级后的WPA,与之前WEP的静态密钥不同,WPA需要不断的转换密钥。
WPA采用有效的密钥分发机制,可以跨越不同厂商的无线网卡实现应用。
它作为WEP的升级版,在安全的防护上比WEP更为周密,主要体现在身份认证、加密机制和数据包检查等方面,而且它还提升了无线网络的管理能力。

 

查看安卓手机已连接过的wifi密码

需要的工具就是RE文件管理器(Root Explorer)或者ES文件浏览器就是能查看系统文件的文件浏览器。 

步骤: 

1、安装Root Explorer(或者ES文件浏览器,不会用的自行百度)
2、打开Root Explorer,进入data/misc/wifi ata/misc/wifi为明文密码的保存路径 ,目录里有个wpa_supplicant.conf(或者其他文件名以.conf结尾的文件)打开看到明文密码了

基础补充:

首先大家要明白一种数学运算,它叫做哈希算法(hash),这是一种不可逆运算,你不能通过运算结果来求解出原来的未知数是多少,

有时我们还需要不同的未知数通过该算法计算后得到的结果不能相同,即你不太可能找到两个不同的值通过哈希得到同一个结果。

哈希是一类算法的统称,通常哈希算法都是公开的,比如MD5,SHA-1等等。

我们平时说的WPA密码其实叫PSK(pre-shared key),长度一般是8-63字节,
它加上ssid通过一定的算法可以得到PMK(pairwise master key)。PMK=SHA-1(ssid,psk) ,PMK的长度是定长的,都是64字节。

由于计算PMK的过程开销比较大,是我们破解花费时间长的关键,所以采用以空间换时间的原则把PMK事先生成好,这个事先生成好的表就是常说的HASH表(生成PMK的算法是一种哈希),这个工作就是用airlib-ng这个工具来完成的,我们的快速破解就是这么来的。

认证的时候会生成一个PTK(pairwise temporary),这是一组密钥,具体细节不详细说了,它的生成方法也是采用的哈希,
参数是连接的客户端MAC地址、AP的BSSID、A-NONCE、S-NONCE、PMK,其中A-NONCE和S-NONCE是两个随机数,确保每次连接都会生成不同的PTK。PTK的计算消耗很小。

PTK加上报文数据采用一定的算法(AES或TKIP),得到密文,同时会得到一个签名,叫做MIC(message integrality check),tkip之所以被破解和这个mic有很大关系。

四次握手包中含有以上的哪些东西呢?

客户端的MAC地址,AP的BSSID,A-NONCE,S-NONE,MIC,最关键的PMK和PTK是不包含在握手包里的! 


认证的原理是在获得以上的所有参数后,客户端算出一个MIC,把原文连同MIC一起发给AP,AP采用相同的参数与算法计算出MIC,并与客户端发过来的比较,如果一致,则认证通过,否则失败。

目前的破解方法是我们获得握手包后,用我们字典中的PSK+ssid先生成PMK(如果有HASH表则略过),然后结合握手包中的(客户端MAC,AP的BSSID,A-NONCE,S-NONCE)计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥。

目前最耗时的就是算PMK,可谓破解的瓶颈。即使搞定了运算量的问题,海量的密钥存储也是个问题(PMK都是64字节长度)! 

简单来说就是:
1.psk+ssid加密生成pmk(密码和账户进行加密)。
2.再将pmk+mac+bssid+随机时间,加密生成PTK。
3.然后再对PTK进行加密生成MIC。
4.将mac,bssid,随机时间,mic传递给路由器验证。
(也就说抓包只有传递这些数据)
需要破解的地方:
1.生成pmk(一般用现成的数据词典,因为消耗资源大)
2.用可能pmk生成ptk
3.用可能ptk生成mic
4.用可能mic和抓包的mic匹配

最近出来的tkiptun-ng只是可以解开使用tkip加密了的数据包,并不是说能够快速算出PMK或PSK。

那么也就简化ptk到mic,直接得到真确的ptk

wpa_supplicant套件中有个小工具,叫做wpa_passphrase,它和airolib-ng的作用差不多,都是用来生成PMK,在backtrack中应该自带这个工具。

比如有个ssid为TP-LINK,PSK是12345678,那么生成PMK的方法就是wpa_passphrase TP-LINK 12345678,结果应该是这样: 

network={     
ssid="TP-LINK" #psk="12345678" psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da

psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da其实就是PMK了,

一般在电脑上运行查看无线密码的软件就是得到这个,把1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da直接输入到无线客户端中

就可以连上该ssid,相当于输入了12345678,

生成PMK的过程是不可逆的,即无法通过1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da来逆推得到12345678。

可以看到同样是psk是12345678,如果ssid名字改变,那么pmk就会发生改变,这就是为什么用airolib-ng建表是只能按ssid生成。