使用 aircrack-ng 对 WPA 握手执行字典攻击

Beginner
立即练习

介绍

在本实验中,你将学习如何对 WPA/WPA2 握手执行字典攻击。当设备连接到受 WPA/WPA2 保护的 Wi-Fi 网络时,会发生一个 4 步握手来认证设备。通过捕获这个握手,可以尝试离线破解网络的密码。

字典攻击是一种通过系统地将列表(称为字典或单词列表)中的每个单词作为密码来破解密码保护系统的方法。我们将使用 aircrack-ng,一个强大的 Wi-Fi 安全审计工具,来执行此攻击。你将获得一个捕获的握手文件 (.cap) 和一个单词列表,以模拟真实场景。

在本实验结束时,你将能够使用 aircrack-ng 从捕获的握手文件中找到 Wi-Fi 密码。

定位捕获的握手 .cap 文件

在此步骤中,你将定位预先捕获的 WPA 握手文件。在本实验中,一个名为 wpa_handshake.cap 的样本捕获文件已放置在你的 ~/project 目录中。此文件包含网络流量,包括攻击所需的关键 4 步握手。

首先,让我们列出当前目录中的文件,以确认捕获文件是否存在。使用 ls -l 命令。

ls -l

在输出中,你应该能看到 wpa_handshake.cap 文件以及其他文件。

total 8
-rw-r--r-- 1 labex labex 11 Mar 25 10:00 rockyou.txt
-rw-r--r-- 1 labex labex 985 Mar 25 10:00 wpa_handshake.cap

现在你已确认捕获文件的存在,可以继续下一步了。

查找单词列表文件,例如 rockyou.txt

在此步骤中,你将查找并检查单词列表文件。字典或单词列表是一个简单的文本文件,其中包含潜在密码列表,每行一个。aircrack-ng 将使用此列表将每个密码与捕获的握手进行测试。

一个名为 rockyou.txt 的小型单词列表已为你创建在 ~/project 目录中。让我们使用 cat 命令查看其内容。

cat rockyou.txt

输出将显示文件中包含的潜在密码。

password
12345678
biscotte
qwerty

在真实场景中,单词列表可能非常庞大,包含数百万甚至数十亿个密码。在本实验中,我们的小型列表包含正确的密码,这将使攻击能够快速成功。

使用 .cap 文件构建 aircrack-ng 命令

在此步骤中,你将使用 aircrack-ng 来检查捕获文件。在发起攻击之前,最好检查 .cap 文件是否包含有效的 WPA 握手。aircrack-ng 可以为你完成此操作。

运行 aircrack-ng 并将捕获文件 wpa_handshake.cap 作为参数提供。

aircrack-ng wpa_handshake.cap

aircrack-ng 将分析文件并显示其找到的网络信息。

Opening wpa_handshake.cap
Read 13 packets.

   ##  BSSID              ESSID                     Encryption

   1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)

Choosing first network as target.
Opening wpa_handshake.cap
Please specify a dictionary (option -w).

请密切关注 WPA (1 handshake) 这一行。这证实了网络 "teddy" 的完整 WPA 握手已成功捕获并存在于文件中。这是我们继续进行字典攻击所需的确认。该工具还会提示你指定一个字典,你将在接下来的步骤中进行此操作。

使用 -w 参数指定单词列表

在此步骤中,你将学习如何使用 -w 参数为攻击指定单词列表。此参数告诉 aircrack-ng 使用哪个文件作为其潜在密码字典。

完整的命令语法是 aircrack-ng <capture_file> -w <wordlist_file>

为了理解它是如何工作的,让我们先尝试使用一个不存在的单词列表来运行命令。这将帮助你了解 aircrack-ng 如何处理错误。尝试使用 nonexistent.txt 作为单词列表来运行命令。

aircrack-ng wpa_handshake.cap -w nonexistent.txt

你将收到一条错误消息,因为找不到该文件。

Opening wpa_handshake.cap
Read 13 packets.

   ##  BSSID              ESSID                     Encryption

   1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)

Choosing first network as target.
Opening wpa_handshake.cap
The file 'nonexistent.txt' doesn't exist.
Please specify a dictionary (option -w).

这证实了 aircrack-ng 需要一个有效、存在的文件的 -w 参数。在下一步中,你将使用正确的单词列表文件来运行攻击。

运行攻击并分析 'KEY FOUND' 输出

在此步骤中,你将使用正确的单词列表运行完整的字典攻击并分析输出以找到密钥。既然你已经知道如何指定捕获文件和单词列表,你就可以发起攻击了。

执行 aircrack-ng 命令,将 wpa_handshake.cap 作为捕获文件,将 rockyou.txt 作为单词列表。

aircrack-ng wpa_handshake.cap -w rockyou.txt

aircrack-ng 现在将开始运行。它将测试 rockyou.txt 中的每个密码与握手进行匹配。由于我们的单词列表很小并且包含正确的密码,因此过程将非常快速。

Opening wpa_handshake.cap
Read 13 packets.

   ##  BSSID              ESSID                     Encryption

   1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)

Choosing first network as target.
Opening wpa_handshake.cap
[00:00:00] 3 keys tested (23.08 k/s)


                                     KEY FOUND! [ biscotte ]


      Master Key     : ED A5 79 22 E5 5F 56 64 74 CB 89 98 44 6A 18 25
                       E0 E3 44 86 8A F3 89 84 55 4A D3 94 03 19 28 79

      Transient Key  : 6A 84 A9 58 52 2E 61 30 62 50 2B 88 46 1B 2A 8A
                       ...

      EAPOL HMAC     : 4E 1A E7 74 52 86 C5 29 A3 43 54 B2 1B 2D 34 18

输出中最重要的一行是 KEY FOUND! [ biscotte ]。这表明攻击已成功。aircrack-ng 测试了单词列表中的密码,并发现 biscotte 是 "teddy" 网络的正确密码。

总结

在此实验中,你成功使用 aircrack-ng 对 WPA 握手执行了字典攻击。

你学会了如何:

  • 定位并识别捕获文件 (.cap) 和单词列表。
  • 使用 aircrack-ng 检查捕获文件并确认 WPA 握手的存在。
  • 使用 -w 参数为攻击指定单词列表。
  • 执行字典攻击并解释结果以找到网络密钥。

这个练习展示了 Wi-Fi 安全审计中的一项基本技术,并强调了使用强大、复杂的密码的重要性,这些密码不易被字典攻击猜中。