实验环境
kali,因为我的是虚拟机,需要再外接一块网卡
无线网卡的四种工作模式
- 被管理模式:当无线客户端直接与无线接入点连接时,就是用这个模式
- ad hoc模式:当网络有相互直连的设备组成时,使用这个模式
- 主模式:这个模式永续无线网卡使用特制的驱动程序和软件工作
- 监听模式:使得网卡专心监听空气中的数据包
下图是四种模式的图示,来自《wireshark 数据包分析实战 第二版》
WPA—PSK破解原理
我们都知道破解 WPA-PSK 不是和 WEP 一样抓很多包就能破解的,这跟抓多少数据包一点关系也没有。破解的关键是要获取握手包,这个握手包叫4way-handshake四次握手包。
WPA 四次握手过程:
WPA-PSK 初始化工作:
使用SSID和passphares使用以下算法产生PSK。
在WPA-PSK中PMK=PSK,PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)
第一次握手:
AP广播SSID,AP_MAC(AA)→STATION
STATION 端使用接受到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK
第二次握手:
STATION 发送一个随机数SNonce,STATION_MAC(SA)→AP
AP端接受到SNonce,STATION_MAC(SA)后产生一个随机数Anonce,然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下算法产生PTK
PTK=SHA1_PRF(PMK, Len(PMK), "Pairwise key expansion",MIN(AA,SA) ||Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))
提取这个PTK 前16 个字节组成一个MIC KEY
第三次握手:
AP发送上面产生的ANonce→STATION
STATION 端用接收到ANonce 和以前产生PMK,SNonce,AP_MAC(AA), STATION_MAC(SA),用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC KEY,使用以下算法产生MIC值,用这个MIC KEY 和一个802.1x data 数据帧使用以下算法得到MIC值。
MIC = HMAC_MD5(MIC Key,16,802.1x data)
第四次握手:
STATION 发送802.1x data ,MIC→AP
STATION 端用上面那个准备好的802.1x 数据帧在最后填充上MIC值和两个字节的0(十六进制)让后发送这个数据帧到AP。
AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1x data 数据帧,和用上面AP产生的MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次握手成功。若不等说明则AP 和STATION 的密钥不相同,或STATION 发过来的数据帧受到过中间人攻击,原数据被篡改过。握手失败了。
综上所述:
WPA-PSK安全体系是十分强大和完善的。但他始终是用一个密码保护的,对于这种用密码保护的安全体系,一般情况下我们都可以用一种叫字典攻击的常规攻击手段。针对WPA-PSK的破解,目前也就只有字典攻击这一种方式了。原理是通过截取WPA-PSK的四次握手包中包含的和密码有联系的信息,再依靠这个信息进行字典暴破。
总之,想要破解WPA-PSK这种强大的加密算法,必须符合以下条件:
须要有合法客户端,并且存在合法的通信流量,通过抓取数据包进行破解的几率为0,唯一的破解方法是抓取WPA-PSK的四次握手包然后进行字典破解。抓到四次握手包之后,最后破解的关键是字典的好坏程度,有一定的运气成分了。如果碰到强口令时千万不要钻牛角尖,趁早放弃,因为WPA-PSK的破解目前唯一有实际价值的只有弱密码字典攻击。
抓取无线数据的方法
也可以参考
https://www.cnblogs.com/linkr/p/4502161.html
https://blog.csdn.net/xundh/article/details/50352391
其实在Linux下按照第一个连接中的linux的方法简单可行,但我想抓取特定的包,便于我自己分析查看,所以还用到了Aircrack-ng这个工具,工具的使用可以参照https://www.jianshu.com/p/fd16236057df下面是我的步骤
步骤
查看我的网卡
airmon-ng start wlan0使用工具将我的网卡激活至监听模式
airodump-ng wlan0mon,探测周围的wifi,其中IRM为我们宿舍的wifi,它的mac为50:FA:84:3E:05:AC,信道为13
用wireshark开始抓包,根据上步得到的bssid进行过滤
802.11包有3种类型,分别为管理、控制、数据
Beacon是一种管理数据包,选择一个进行分析
可以看到:
路由器的物理地址和厂商
timestamp为该包发送的时间戳
ssid parameter set wap广播的ssid,这里为IRM确实是我们宿舍的
supported rates wap支持的数据传输率
ds parameter wap广播使用的信道,这里为13与开始工具探测的一致
并能看到wpa,rsn的版本,采用加密方式等属性信息
接着我让我的手机连接wifi
开始我的手机发送了请求包,接着wifi进行了回应
接着进行了认证与关联
接下来是四次握手过程
之后就可以进行数据传输