引言
在本实验中,你将探索一种测试 WPA/WPA2 无线网络安全性的现代技术。具体来说,你将学习如何捕获 Pairwise Master Key Identifier (PMKID)。PMKID 是 WPA 协议的一部分,有时可以在没有客户端连接的情况下从接入点 (AP) 请求。捕获此 PMKID 允许进行离线暴力破解攻击以发现 Wi-Fi 密码,这种方法通常被称为“无客户端”攻击。
我们将使用两个主要工具:hcxdumptool 用于从网络流量中捕获 PMKID,以及 hcxtools 用于处理捕获的数据。在本实验结束时,你将成功从模拟接入点捕获 PMKID,并将其保存以备后续破解。
安装 hcxtools 和 hcxdumptool
在此步骤中,我们将安装攻击所需的工具。hcxdumptool 是一个复杂的工具,用于从 Wi-Fi 网络捕获数据包,专门针对对攻击有用的信息,例如 PMKID。hcxtools 是一个实用工具集,用于将捕获的数据转换为与 Hashcat 等密码破解软件兼容的格式。
我们将使用 apt-get 包管理器来安装这两个工具。打开终端并执行以下命令。你需要 sudo 权限才能在系统上安装新软件包。
sudo apt-get install -y hcxtools hcxdumptool
命令完成后,系统将下载并安装这两个软件包及其依赖项。你应该会看到指示软件包正在解压和设置的输出。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
hcxdumptool hcxtools
0 upgraded, 2 newly installed, 0 to remove and ...
...
Setting up hcxtools (6.2.7-2) ...
Setting up hcxdumptool (6.2.7-2) ...
工具安装完成后,我们就可以开始监听网络流量了。
使用 hcxdumptool 在接口上监听 AP Beacon
在此步骤中,我们将使用 hcxdumptool 开始捕获无线数据包。在本实验中,为你创建了一个名为 mon0 的虚拟无线接口,并将其置于监听模式 (monitor mode)。监听模式允许接口捕获空中所有的 Wi-Fi 流量,而不仅仅是发往给它的流量。
我们将运行 hcxdumptool 并将其指向我们的监听接口。我们还将启用状态显示,以便实时查看工具正在执行的操作。
在你的终端中执行以下命令。实验环境已运行一个名为 TestAP 的测试接入点,hcxdumptool 将会检测到它。
sudo hcxdumptool -i mon0 --enable_status=1
-i mon0: 指定用于捕获的接口。--enable_status=1: 启用状态显示,该显示会展示发现的网络和捕获的数据信息。
运行命令后,hcxdumptool 将开始扫描。你将看到一个已检测到的接入点和客户端的表格。让它运行大约 15-20 秒。
start capturing (stop with ctrl+c)
INTERFACE:...............: mon0
FILTERLIST (MAC).........: 0 entries
FILTERLIST (ESSID).......: 0 entries
MAC ACCESS POINT.........: 2a:50:e4:4c:a8:75 (incremented on every new client)
MAC CLIENT...............: 2e:50:e4:4c:a8:75 (incremented on every new client)
REPLAYCOUNT..............: 64326
ANONCE...................: 2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a
[21:12:30 - 001] [FOUND ACCESS POINT: 02:00:00:00:01:00 (TestAP)]
...
稍后,你可以通过在终端中按 Ctrl+C 来停止捕获过程。
在工具输出中识别 PMKID Hash
在此步骤中,你将学习如何识别何时成功捕获了 PMKID。当 hcxdumptool 运行时,它会主动探测接入点,以查看它们是否会响应 PMKID。当它成功时,它会在控制台打印一条清晰的消息。
如果你运行了上一步的命令,你应该会看到类似下面的一行。这一行是我们所需内容的确认。
[21:12:32 - 001] [FOUND PMKID] 02:00:00:00:01:00 -> 2e:50:e4:4c:a8:75
让我们来解析一下这个输出:
[FOUND PMKID]: 这是关键指示符。它意味着hcxdumptool成功请求并接收到了一个 PMKID。02:00:00:00:01:00: 这是接入点 (TestAP) 的 BSSID(MAC 地址)。-> 2e:50:e4:4c:a8:75: 这是hcxdumptool用于发起请求的站(我们的虚拟客户端)的 MAC 地址。
看到这条消息意味着你已成功捕获了 PMKID。在此步骤中你无需运行任何新命令;目标是理解上一步的输出。
理解 PMKID 相较于握手的优势
在此步骤中,我们将讨论为什么 PMKID 攻击相较于传统的 WPA/WPA2 破解方法是一项重大的进步。
破解 Wi-Fi 密码的经典方法是捕获完整的 **4 握手 (4-way handshake)**。当客户端设备(如笔记本电脑或手机)成功通过接入点进行身份验证时,就会发生此握手。为了捕获它,攻击者必须等待设备连接,或者强制已连接的设备断开连接然后重新连接。这有一个主要的缺点:它完全依赖于客户端设备的存在和活动。如果没有设备连接,或者在你监听时它们没有重新连接,你就无法捕获握手。
PMKID 攻击克服了这一限制。PMKID 是初始关联过程的一部分,具体来说是在现代 AP 在其信标帧 (beacon frames) 中广播的健壮安全网络信息元素 (Robust Security Network Information Element, RSN IE) 中。hcxdumptool 可以在没有任何合法客户端在场的情况下,主动向 AP 请求此信息。
关键优势在于此攻击是无客户端 (clientless) 的。我们只需要在目标 AP 的覆盖范围内即可。这使得获取可破解哈希 (hash) 的过程更快、更可靠,因为我们不再是被动地等待客户端执行操作。
将 PMKID Hash 保存到文件以进行破解
在最后一步中,我们将再次运行 hcxdumptool,但这次我们将捕获包含 PMKID 的数据保存到文件中。然后,该文件可以与其他工具(如 hcxpcapngtool 和 hashcat)一起用于离线破解。
我们使用 -o 标志来指定输出文件。这些捕获的标准格式是 pcapng。
运行以下命令。它将开始捕获并将任何发现保存到当前目录 (~/project) 中名为 captured_pmkid.pcapng 的文件中。
sudo hcxdumptool -i mon0 -o captured_pmkid.pcapng --enable_status=1
让工具运行,直到你再次看到 [FOUND PMKID] 消息。一旦看到它,你就可以使用 Ctrl+C 停止捕获。
停止工具后,通过列出目录内容来验证文件是否已创建:
ls -l
你应该会在输出中看到 captured_pmkid.pcapng 文件:
total 8
-rw-r--r-- 1 root root 1060 Dec 12 21:15 captured_pmkid.pcapng
-rw-r--r-- 1 labex labex 159 Dec 12 21:10 hostapd.conf
此文件现在包含来自 TestAP 网络的 PMKID。在实际攻击中,下一步将是把此文件转换为哈希格式,并使用密码破解工具来查找原始密码。
总结
在此实验中,你已成功学习了通过捕获 PMKID 来进行无客户端 WPA/WPA2 攻击的基础知识。
你首先安装了必要的 hcxtools 和 hcxdumptool 软件包。然后,你使用 hcxdumptool 在监控模式接口 (monitor-mode interface) 上进行监听,识别出 [FOUND PMKID] 消息以确认成功捕获,并理解了此方法相较于传统的基于握手的攻击的关键理论优势。最后,你将捕获的 PMKID 保存到 pcapng 文件中,为安全审计的下一阶段(即离线密码破解)做好准备。这项技能是任何无线安全测试人员工具箱中的宝贵补充。
