使用 airolib-ng 数据库破解 WPA 握手

Beginner
立即练习

引言

在使用 aircrack-ng 破解 WPA/WPA2 握手包时,标准方法是测试字典中的每个密码。对于每个密码,aircrack-ng 都必须计算一个 Pairwise Master Key (PMK) 并将其与捕获的握手包进行比对。这种即时计算可能非常耗时,尤其是在使用大型字典时。

airolib-ng 工具提供了一种强大的优化方法。它允许你预先计算特定网络 (ESSID) 和给定字典的所有 PMK,并将它们存储在数据库中。当你运行破解攻击时,aircrack-ng 可以使用此数据库来查找 PMK,而不是进行计算,从而显著提高破解速度。

在本实验中,你将学习如何使用预先构建的 airolib-ng 数据库来破解 WPA 握手包,并将其性能与基于标准字典的攻击进行比较。

捕获数据库中 ESSID 的 WPA 握手包

在此步骤中,我们将检查提供的捕获文件,以确认它包含一个有效的 WPA 握手包。在本实验中,一个名为 wpa.cap 的捕获文件已放置在你的 ~/project 目录中。此文件包含我们将要针对的网络捕获的四次握手。

让我们使用 aircrack-ng 来查看此文件的内容。此命令不会启动攻击;它仅解析文件并显示其中包含的网络摘要。

在你的终端中运行以下命令:

aircrack-ng wpa.cap

你应该会看到列出捕获文件中找到的无线网络的输出。请注意 ESSID(网络名称)以及已捕获握手的确认信息。

Opening wpa.cap
Read 1 packets.

   ##  BSSID              ESSID                     Encryption

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

Choosing first network as target.
(press CTRL+C to abort)

你可以按 CTRL+C 退出 aircrack-ng 提示符。重要的是我们获得了 ESSID teddy 的握手包。这就是我们将要针对的网络。

构建攻击的 aircrack-ng 命令

在此步骤中,我们将开始构建攻击的 aircrack-ng 命令。WPA 攻击的基本语法是 aircrack-ng [options] <capture file>

为了提高攻击效率,尤其是在捕获文件包含多个网络时,我们可以使用 -e 参数后跟 ESSID 来指定目标。根据上一步,我们的目标 ESSID 是 teddy

让我们将此添加到命令中:

aircrack-ng -e teddy

此命令尚未完成。aircrack-ng 仍然需要知道从哪里获取要测试的密码或 PMK。在标准攻击中,我们将使用 -w 标志来提供字典。但是,在本实验中,我们将使用我们预先计算好的 airolib-ng 数据库。我们将在下一步添加数据库的参数。

使用 -r 参数指定数据库

在此步骤中,我们将通过告知 aircrack-ng 使用 airolib-ng 数据库来完成我们的命令。用于此目的的参数是 -r(代表“read database”)。

在本实验的设置过程中,一个名为 mydb 的数据库已在你的 ~/project 目录中创建。此数据库包含 ESSID teddywordlist.txt 中密码的预计算 PMK。

现在,让我们将所有部分组合起来:aircrack-ng 命令、目标 ESSID(-e teddy)、数据库(-r mydb)和捕获文件(wpa.cap)。

最终命令是:

aircrack-ng -e teddy -r mydb wpa.cap

此命令指示 aircrack-ng

  1. 将目标网络设置为 ESSID 为 teddy
  2. 使用数据库 mydb 中的预计算 PMK。
  3. 将这些 PMK 与 wpa.cap 中找到的握手包进行比对测试。

在下一步中,我们将执行此命令并观察结果。

运行攻击并观察破解速度

在此步骤中,是时候使用我们构建完整的命令来运行攻击了。通过使用预计算的数据库,我们预计破解过程将极其快速。

在你的终端中执行以下命令:

aircrack-ng -e teddy -r mydb wpa.cap

程序将启动,打开数据库和捕获文件,并几乎立即找到正确的密钥。

你的输出应该与此类似:

Opening mydb
Opening wpa.cap
Read 1 packets.

   ##  BSSID              ESSID                     Encryption

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

Choosing first network as target.

Opening mydb
Attack will be restarted every 5000 PMKs.
Starting attack on ESSID teddy...

                                KEY FOUND! [ biscotte ]


Master Key     : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
                 ...

Transient Key  : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
                 ...

EAPOL HMAC     : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

请注意 KEY FOUND! 消息出现的速度有多快。密码是 biscotte。由于 PMK 已经预先计算并存储在 mydb 数据库中,aircrack-ng 只需执行快速查找和比较,而无需进行密集的加密计算。

与标准字典攻击进行性能对比

在此步骤中,为了充分体会 airolib-ng 数据库方法的速度,我们将使用传统的字典方法执行相同的攻击。这将使我们能够亲身体验性能差异。

在标准攻击中,我们使用 -w 参数来指定字典文件。然后 aircrack-ng 将读取文件中的每个密码,计算其 PMK,并进行测试。

设置过程为此目的创建了一个名为 wordlist.txt 的文件。让我们使用此文件运行攻击。

执行以下命令:

aircrack-ng -e teddy -w wordlist.txt wpa.cap

你将看到 aircrack-ng 启动并开始测试密钥。请注意状态显示,它会显示已测试的密钥数量和当前的每秒密钥测试速度(k/s)。

Opening wpa.cap
Read 1 packets.

   ##  BSSID              ESSID                     Encryption

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

Choosing first network as target.

Opening wpa.cap
Opening wordlist.txt
Reading passwords from wordlist.txt

                                     [0:00:00] 2 keys tested (XXXX.XX k/s)

                                KEY FOUND! [ biscotte ]


Master Key     : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
                 ...

Transient Key  : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
                 ...

EAPOL HMAC     : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

虽然由于我们的字典非常小,密钥仍然很快被找到,但请注意,有一个可衡量的密钥测试过程。如果使用包含数百万个密码的大型字典,这个过程将花费大量时间。相比之下,数据库攻击几乎是瞬时的,因为计算量大的部分已经完成。

总结

在此实验中,你成功使用预计算的 airolib-ng 数据库破解了一个 WPA 握手。你学会了如何使用 -r 参数构建 aircrack-ng 命令来指定数据库,并观察了其近乎瞬时的性能。

通过与使用 -w 参数的标准字典攻击进行比较,你亲眼目睹了预计算 PMK 的显著速度优势。这项技术对于安全专业人员来说非常宝贵,当他们针对具有大量潜在密码字典的特定网络时,它可以将耗时的计算阶段与最终的破解阶段分开。