2015年(9)
分类: 网络与安全
2015-03-26 20:47:30
WPA加密算法有两个版本:
WPA = 802.1x + EAP + TKIP + MIC (WPA-PSK = Pre-shared Key + TKIP + MIC)
WPA2 (802.11i)
= 802.1x + EAP + AES + CCMP (WPA2-PSK = Pre-shared Key + AES + CCMP)
这里802.1x + EAP,Pre-shared Key是身份校验算法(WEP没有设置有身份验证机制)
TKIP和AES是数据传输加密算法(类似于WEP加密的RC4 算法)
MIC和CCMP是数据完整性编码校验算法(类似于WEP中CRC32算法)
WPA 认证方式:
802.1x + EAP (工业级的,安全要求高的地方用。需要认证服务器)
Pre-shared Key (家庭用的,用在安全要求低的地方。不需要服务器)
EAP 扩展认证协议,是一种架构。而不是定义了算法。常见的有LEAP,MD5,TTLS,TLS,PEAP,SRP,SIM,AKA 。其中的TLS 和TTLS 是双向认证模式。这个和网络银行的安全方式差不多。这个认证方式是不怕网络劫持和字典攻击的。而MD5 是单向认证的。无法抵抗网络劫持,中间人攻击。
WPA-PK的破解:
不像WEP一样抓很多的包就能够破解出密码,目前WPA-PSK的破解几乎还是靠字典,而且要先捕捉到握手包(4way-handshake 四次握手包,其中包含了SSID, AP_MAC, STATION_MAC, ANonce, SNonce, MIC)。为什么会有这样一个包呢,我们先来看看WPA-PSK验证的四次握手:通信过程如图
初始化:使用 SSID 和PSK,使用以下算法产生PMK(Pairwise Master Key)
在WPA-PSK 中,PMK = SHA1(passphrase,SSID,SSID length,4096)
注:在认证阶段中,计算PMK的过程开销比较大,是我们破解时长的关键,所以我们可以采用以空间换时间的策略,把PMK 事先生成好,这个事先生成好的表就是常说的HASH表(生成PMK的算法是一种哈希),这个工作是用airlib-ng这个工具来完成的。
第一次握手:AP广播SSID和自身MAC地址,即AP_MAC → STATION,STATION 端使用接收到的SSID,AP_MAC和PSK,使用同样算法产生PMK
第二次握手:STATION 发送一个随机数SNonce 和自身的MAC地址给AP,即STATION_MAC → AP,AP端接受到SNonce和STATION_MAC后产生一个随机数ANonce,然后用PMK,AP_MAC,STATION_MAC,SNonce和ANonce 用以下算法产生PTK(Pairwise Temporary Key):
PTK=SHA1_PRF(PMK, Len(PMK), "Pairwise key expansion", MIN(AP_MAC, STATION_MAC) || MAX(AP_MAC, STATION_MAC) ||
MIN(ANonce, SNonce) || MAX(ANonce, SNonce))
提取这个PTK 前16 个字节组成一个MIC_KEY(Message Integrality Check)
第三次握手:AP发送上面产生的ANonce给STATION,即ANonce → STATION,STATION 端用接收到ANonce 和以前产生的PMK,SNonce,AP_MAC和STATION_MAC用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC_KEY并使用以下算法产生MIC值:给定MIC_KEY 和一个802.1x data 数据帧,有:MIC = HMAC_MD5(MIC Key,16,802.1x data)
第四次握手:STATION 端用上面那个准备好的802.1x 数据帧在最后填充上MIC值和两个字节的0(十六进制)让后发送这个数据帧到AP,即802.1x data,MIC → AP。AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1x data 数据帧,和用上面AP产生的MIC_KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次 握手成功。若不等说明则AP 和STATION 的密钥不相同,或STATION 发过来的数据帧受到过中间人攻击,原数据被篡改过,握手失败。
破解实例(模拟环境,仅供学习!):
环境:Kali Linux
工具:Aircrack-ng
STEP 1:将网卡设置为监听状态,命令如下:
(注:在wlan0后面加上个数字可指定无线网卡监听的频道,如,这样在后续操作中就不会遇到频道不匹配的问题。但是,我们怎么知道攻击目标工作在哪个频道呢?所以,我们可以先用不指定工作频道的命令查看目标频道后,再用带频道参数的命令重新设置监听状态)
这时利用ifconfig –a命令查看网络状态,可发现新增了一个mon0
STEP 2:查看当前无线网络的状态,我们的攻击目标为ESSID为YY的无线网络,命令如下:
STEP 3:开始抓包(目标是抓到四次握手包),命令如下:
参数解释:-c:监听频道 -w:保存监听事件的文件名
STEP 4:使用Deauth攻击,使我们尽快抓到“四次握手包”。命令如下:
当捕获到“四次握手包后”,执行STEP 3的终端窗口的右上角会显示如下信息:
STEP 5:通过捕获到的“四次握手包”和字典(我这里用的是metasploit自带的字典)破解密码。输入命令并按回车,输入要破解的那个无线网络的索引后,即可开始破解。命令如下:
参数解释:-w:设置字典,后跟字典路径 hac-05.cap:STEP 3中设置的文件名
如果密码包含在字典文件中,则破解迟早会成功(只是时间问题,示例用的密码是12345678,是弱口令,包含在字典文件中,所以很快就破解成功了),否则破解失败。所以,如果不是弱口令的话,WPA是很难很难破解的。
参考资料:
1、深入解析无线WEP和WPA密码及破解原理