描述
aireplay-ng是一个注入帧的工具。它的主要作用是产生数据流量,而这些随后将会被用于aircrack-ng破解WEP和WPA/WPA2秘钥。aireplay-ng里包含了很多种不同的攻击方式用来获取WPA握手包。如:解除认证攻击(-0)、伪造认证攻击(-1)、交互式数据包重放攻击(-2)、手动ARP请求注入攻击(-3)、ARP请求重放注入攻击(-4)。而且,通过与packetforge-ng一起,我们可以创造出任何想要的数据包。大部分的驱动需要补丁才能支持数据包注入,可参见此处安装驱动。
攻击类型
aireplay-ng当前支持的攻击种类如下:
- Attack 0:解除认证攻击
- Attack 1:伪造认证攻击
- Attack 2:交互式注入攻击
- Attack 3:ARP请求包重放攻击
- Attack 4:chopchop Korek攻击
- Attack 5:碎片交错攻击
- Attack 6:Cafe-latte 攻击
- Attack 7:面向客户的碎片攻击
- Attack 8:WPA迁移模式
- Attack 9:数据包注入测试
用法
以下只是通常情况下的用法,命令格式并不能涵盖所有的攻击模式。如果想要了解更详细的用法,可以参见每一种攻击各自的用法说明。
命令格式:
aireplay-ng <options> <replay interface>
除了解除认证攻击(-0)和伪造认证攻击(-1)以外,其他所有攻击都可以使用下面的过滤选项来限制数据包的来源。-b是最常用的一个过滤选项,它的作用是指定一个特定的接入点。通常,我们可能只会用到-b一个选项。
过滤选项:
- -b bssid :接入点的MAC地址
- -d dmac:目的MAC地址
- -s smac:源MAC地址
- -m len:数据包最小长度
- -n len:数据包最大长度
- -u type:含有关键词的控制帧
- -v subt:含有表单数据的控制帧
- -t tods:到目的地址的控制帧
- -f fromds:从目的地址出发的控制帧
- -w iswep:含有WEP数据的控制帧
当我们重放(注入)数据包时,会用到以下的选项。注意,不是每一种攻击都能使用所有的选项。具体请参见每一种攻击各自的详细说明。
重放选项:
- -x nbpps:设置每秒发送数据包的数目
- -p fctrl:设置控制帧中包含的信息(16进制)
- -a bssid:设置接入点的MAC地址
- -c dmac:设置目的MAC地址
- -h smac:设置源MAC地址
- -e essid:虚假认证攻击中,设置接入点名称
- -j:ARP请求攻击,向目标注入数据包
- -g value:修改缓冲区的大小(默认值:8)
- -k IP:设置目标IP加入注入文件
- -l IP:设置目标源IP加入注入文件
- -o npckts:每次攻击含数据包的数量
- -q sec:设置持续活动时间
- -y prga:包含共享秘钥的关键数据流
- -Bor –bittest:比特率测试(仅适用于测试模式)
- -D:禁止接入点嗅探
- -F or –fast:选择第一次匹配的数据包
- -R:禁止 /dev/rtc 的使用
Aireplay-ng有两个获取数据包来源。第一个是无线网卡的实时通信流,第二个则是pcap文件。大部分商业的或开源的流量捕获与分析工具都可以识别标准的Pcap格式文件。从pcap文件读取数据是Aireplay-ng一个经常被忽视的功能。这个功能可以使我们从捕捉的其他会话中读取数据包。注意,有很多种攻击会在攻击时生成pcap文件以便重复使用。
来源选项:
- iface:从指定网卡捕获数据包
- -r file:从指定pcap文件获取数据包
下面的选项用来指定程序运行哪一种攻击模式。前面我们提到的选项并非在所有攻击模式下都适用,选项是否可用基于当前指定的攻击模式。
攻击模式:
- –deauth count:解除一个或所有工作站与接入点之间的认证(-0)
- -fakeauth delay:向接入点发起伪造的认证(-1)
- -interactive:交互式注入攻击(-2)
- -arpreplay:标准ARP请求包重放(-3)
- chopchop:解密WEP包
- -fragment:碎片包攻击模式
- -test:注入测试
Fragmentation和Chopchop的比较
以下是fragmentation和chopchop攻击的差别比较:
Fragmentation
优点:
- 通常会得到1500byte长的完整数据包,这就使我们随后可以创建任意大小的数据包。即便当我们收集的数据包小于1500byte,也足够我们用来产生ARP请求
- 有时可用在chopchop不能使用的情况中
- 速度非常快。成功时产生xor流文件的速度非常快
缺点:
- 需要更多的输入信息来发动攻击(即IP地址信息)。通常,这能够被猜测出来。而且在没有指定时,aireplay-ng会将源地址和目的地址默认为255.255.255.255。在大多数情况下这样都不会有问题,所以这个缺点并不是很大的问题。
- 发动攻击更容易受限于网卡驱动。例如,对于Atheros,如果不将网卡的MAC地址设定为我们要欺骗的MAC地址,就不能够产生正确的数据包。
- 我们需要距离接入点更近,因为一个数据包的丢失都会导致攻击的失败
- 攻击在不正常处理碎片包的接入点上会失败
ChopChop
优点:
- 有时可用在fragmentation不能使用的情况中
- 不需知道任何IP信息
缺点:
- 不是所有的接入点都能被攻击
- 最大的xor流长度受限于我们chopchop的包长度。尽管理论上,我们可以获得1500byte长的xor流,而实际中却很少
- 比fragmentation要慢很多
用法指导
优化注入速度
优化注入速率更像是一门艺术。首先我们可以尝试按照默认的设定运,如果效果欠佳,则可以使用-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)。