aireplay-ng是一个注入帧的工具。它的主要作用是产生数据流量,而这些随后将会被用于aircrack-ng破解WEP和WPA/WPA2秘钥。aireplay-ng里包含了很多种不同的攻击方式用来获取WPA握手包。如:解除认证攻击(-0)、伪造认证攻击(-1)、交互式数据包重放攻击(-2)、手动ARP请求注入攻击(-3)、ARP请求重放注入攻击(-4)。而且,通过与packetforge-ng一起,我们可以创造出任何想要的数据包。大部分的驱动需要补丁才能支持数据包注入,可参见此处安装驱动。
aireplay-ng当前支持的攻击种类如下:
以下只是通常情况下的用法,命令格式并不能涵盖所有的攻击模式。如果想要了解更详细的用法,可以参见每一种攻击各自的用法说明。
命令格式:
aireplay-ng <options> <replay interface>
除了解除认证攻击(-0)和伪造认证攻击(-1)以外,其他所有攻击都可以使用下面的过滤选项来限制数据包的来源。-b是最常用的一个过滤选项,它的作用是指定一个特定的接入点。通常,我们可能只会用到-b一个选项。
过滤选项:
当我们重放(注入)数据包时,会用到以下的选项。注意,不是每一种攻击都能使用所有的选项。具体请参见每一种攻击各自的详细说明。
重放选项:
Aireplay-ng有两个获取数据包来源。第一个是无线网卡的实时通信流,第二个则是pcap文件。大部分商业的或开源的流量捕获与分析工具都可以识别标准的Pcap格式文件。从pcap文件读取数据是Aireplay-ng一个经常被忽视的功能。这个功能可以使我们从捕捉的其他会话中读取数据包。注意,有很多种攻击会在攻击时生成pcap文件以便重复使用。
来源选项:
下面的选项用来指定程序运行哪一种攻击模式。前面我们提到的选项并非在所有攻击模式下都适用,选项是否可用基于当前指定的攻击模式。
攻击模式:
以下是fragmentation和chopchop攻击的差别比较:
Fragmentation
优点:
缺点:
ChopChop
优点:
缺点:
优化注入速度
优化注入速率更像是一门艺术。首先我们可以尝试按照默认的设定运,如果效果欠佳,则可以使用-x选项来改变注入速度。需要注意,有时降低注入速率反而会提高整体效率。我们还可以按照网卡本身的传输速率来设置注入速率。即:
iwconfig wlan0 rate 11M
通常默认的传输速率是1或11M,这取决于网卡驱动以及我们将它启动为monitor模式的方式。如果我们距离接入点比较近,则可以设定一个相对较高的值,如54M,这可以使我们每秒获取更多的数据包。如果相距较远,以至于数据包无法传输,则可以尝试将它降低到些,如1M。
以下说明适用于aireplay-ng所有的攻击模式。
aireplay-ng没有注入数据包
保证我们使用的是正确的monitor接口。使用iwconfig命令可以查看各个接口及它们的模式。对于mac80211驱动,monitor模式的接口名通常为”mon0”;对于ieee80211驱动,接口则通常为”ath0”。而其它,则因驱动而异。
对于madwifi-ng驱动,确保没有其他的VAP在运行
确保已经没有其他的VAP运行,因为当已经存在一个monitor模式的VAP时,再使用另一个managed模式的VAP会导致问题。我们需要先停掉ath0,再开启wifi0:
airmon-ng stop ath0
airmon-ng start wifi0
或者:
wlanconfig ath0 destroy
wlanconfig ath create wlandev wifi0 wlanmode monitor
aireplay-ng被挂起没有输出
我们输入了命令,但它看起来好像被挂起了没有任何输出。这种现象通常是因为我们的无线网卡与接入点工作在不同的频道。另一个可能的原因是我们在prism2芯片组上使用的固件版本过老。此时,需保证使用1.7.4或更高版本的固件。可参见此链接获得更多信息。这里介绍了升级固件所使用的指令。另外,如果我们在后台运行了另一个aireplay-ng进程,且两个进程之间选项有冲突,也会导致第二个进程被挂起。
aireplay-ng注入过程中卡住
参见这篇帖子,或者这篇。
写入失败:“Cannot allocate memory wi_write(): Illegal seek”
当我们使用的是broadcom芯片以及对应驱动时,可能会得到这样的提示信息:
“write failed: Cannot allocate memory wi_write(): Illegal seek”
这是因为bcm43xx原始补丁里的一个BUG。要解决这个问题,可以使用SuD修改过的补丁。此外,也可以使用B43驱动来代替bcm43xx。(B43对aireplay-ng的版本要求>1.0-beta2,推荐使用1.0 rc1或其子版本。)
注入缓慢:”rtc: lost some interrupts at 1024Hz”
症状:可以注入但是速度非常慢,每秒大概30个数据包(30pps)。每次注入数据包时,都会有类似于下面的提示信息:
rtc: lost some interrupts at 1024Hz
且随后这样的信息会不断重复提示。对此问题有多种解决方法,第一种是再开启一个新的aireplay进程,这样注入速度就能到大约300pps。第二种方法需要输入以下命令:
rmmod rtc
modprobe genrtc
如果内核可以用rtc-cmos,也可输入:
rmmod rtc
modprobe rtc-cmos
对这个问题,并没有彻底的解决方法。以上只是一些变通方法,可参见这篇文章。
注入速率低的一般情况
距离接入点太近会导致注入速率明显地降低。这主要是由数据包损坏或者接入点过载导致的。这篇文章是一个具体的例子。
错误信息:”open(/dev/rtc) failed: Device or resource busy”
此错误是由于同时运行两个或多个aireplay-ng进程造成的。虽然程序仍然可以运行,但是会导致时间变得不准确。
网卡的MAC地址与指定的MAC地址不匹配
当我们输入了一个类似于下面的命令:
aireplay-ng -1 0 -e horcer -a 00:50:18:4C:A5:02 -h 00:13:A7:12:3C:5B ath0
得到如下信息:
The interface MAC (06:13:F7:12:23:4A) doesn't match the specified MAC (-h).
ifconfig ath1 hw ether 00:13:A7:12:3C:5B
当用来进行注入的源MAC地址(由-h指定)与我们网卡的MAC地址不同时,会出现上述提示信息。在上面的例子中,用来注入的MAC地址是00:13:A7:12:3C:5B,而网卡的MAC地址是06:13:F7:12:23:4A。有时候,它们的不相同会导致注入的失败,这也是提示信息出现的原因。所以,我们一般需要将用以注入的MAC地址和网卡的MAC地址相匹配。改变网卡MAC地址的方法,参见此处。
隐藏SSID “
mon0 is on channel 1, but the AP uses channel 6
这表示一些原因导致我们的网卡发生了跳频。一个可能的原因是启动airodump-ng的时候没有将其指定到一个特定的信道(需带上-c参数)。另一个可能的原因是我们同时运行了会引起跳频的进程,比如:network manager、wpa_supplicant。此时必须杀死所有这些进程。可参见airmon-ng(airmon-ng check kill)。