描述
注入测试用来判断我们的网卡是否能对接入点进行注入。也用来判断对接入点的ping反应时间。如果我们拥有两个无线网卡,则可以利用注入测试来判断哪一个网卡更适合用来进行注入攻击。
基本的注入测试也能提供其他一些有用的信息。首先,能为我们列出所在范围内,所有对广播探针有反应的接入点信息。其次,对于每一个接入点,它都会进行一个30个包的测试,用来判断连接质量。(连接质量衡量的是我们的网卡接收和发送测试数据包的能力)。接收到接入点反应数据包的百分比能够很好地衡量连接质量。
我们可以指定接入点名称以及MAC地址,这样就可以去测试一个特定的接入点,或者一个隐藏的网络。接下来,简单地说明一下注入测试的工作原理。
首先,程序将发送广播探针请求。这些请求会要求所有接收到请求的接入点都作出反应(当然,实际上并不是所有的接入点都会反应)。然后,所有做出反应的接入点会被罗列出来(通过beacon包识别的接入点也会被列入到上述列表之中),用于后续的测试。实际上,只要有任何一个接入点做出反应,屏幕上都会显示一条信息,来提示我们网卡可以用来进行注入测试了。
然后,对上述每个接入点,都会发送30个定向探针请求。对探针请求反应的数目及百分比会被显示出来,用来衡量我们是否能和某个接入点通信,以及同每个接入点进行通信的质量。如果指定了两个网卡,则会尝试每一种攻击模式,然后把结果显示在屏幕上。
注入测试还有一个功能,就是用来测试同airserv-ng的连接。一但基本测试完成,便开始通过和airserv-ng连接来进行标准测试。
用法
aireplay-ng -9 -e teddy -a 00:de:ad:ca:fe:00 -i wlan1 wlan0
其中:
- -9 表示注入测试。完整形式是–test
- -e teddy 表示网络名称(BSSID),可选。
- -a 00:de:ad:ca:fe:00 ath0 表示接入点的MAC地址,可选。
- -i wlan1 是第二个网卡的接口名称。如果我们想判断网卡适合哪种攻击,这时这个接口将充当接入点接收数据包,可选。
- wlan0 是接口名称或者airserv-ngIP地址和端口数。这个接口用来发送数据。(例: - 127.0.0.1:666,强制参数)
注意:在进行任何测试命令之前,必须用airmon-ng命令将网卡设置到monitor模式,和特定的信道。
用法实例
基本测试
下面是一个最基本的测试,可用来判断网卡是否支持注入:
aireplay-ng -9 wlan0
屏幕会出现:
16:29:41 wlan0 channel: 9
16:29:41 Trying broadcast probe requests...
16:29:41 Injection is working!
16:29:42 Found 5 APs
16:29:42 Trying directed probe requests...
16:29:42 00:09:5B:5C:CD:2A - channel: 11 - 'NETGEAR'
16:29:48 0/30: 0%
16:29:48 00:14:BF:A8:65:AC - channel: 9 - 'title'
16:29:54 0/30: 0%
16:29:54 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
16:29:55 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
16:29:55 27/30: 90%
16:29:55 00:C0:49:E2:C4:39 - channel: 11 - 'mossy'
16:30:01 0/30: 0%
16:30:01 00:0F:66:C3:14:4E - channel: 9 - 'tupper'
16:30:07 0/30: 0%
其中:
- 16:29:41 wlan0 channel: 9 告诉我们正在使用的接口以及所在的信道
- 16:29:41 Injection is working! 表明网卡可以注入
- 16:29:42 Found 5 APs 通过广播探针或者beacons所搜索到的接入点
- 16:29:42 00:09:5B:5C:CD:2A - channel: 11 - ‘NETGEAR’ 可以看到这个接入点在信道11而不是在我们的网卡所在的信道9上。相邻信道的溢出现象是很正常的。
- 16:29:55 27/30: 90% for teddy 这是唯一一个网卡可以成功进行通信的的接入点。也从另一个方面证明了我们的网卡可以进行注入。可以看到,其他所有的接入点都是0%
隐藏或指定的SSID
如果想要检查一个隐藏的SSID或者一个特定的SSID,需使用下面的命令:
aireplay-ng --test -e teddy -a 00:14:6C:7E:40:80 ath0
屏幕会显示:
11:01:06 ath0 channel: 9
11:01:06 Trying broadcast probe requests...
11:01:06 Injection is working!
11:01:07 Found 1 APs
11:01:07 Trying directed probe requests...
11:01:07 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
11:01:07 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
11:01:07 30/30: 100%
这表明:网卡可以成功地注入并同特定的网络进行通信。
攻击测试
这个测试需要两个处于monitor模式的网卡,跟在参数”-i”后面的网卡充当接入点:
aireplay-ng -9 -i wlan1 wlan0
其中:
- -9表示注入测试
- -i wlan1是模仿接入点的接口,用来接收数据包
- wlan0是注入接口
屏幕会显示:
11:06:05 wlan0 channel: 9, wlan1 channel: 9
11:06:05 Trying broadcast probe requests...
11:06:05 Injection is working!
11:06:05 Found 1 APs
11:06:05 Trying directed probe requests...
11:06:05 00:de:ad:ca:fe:00 - channel: 9 - 'teddy'
11:06:05 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
11:06:07 26/30: 87%
11:06:07 Trying card-to-card injection...
11:06:07 Attack -0: OK
11:06:07 Attack -1 (open): OK
11:06:07 Attack -1 (psk): OK
11:06:07 Attack -2/-3/-4: OK
11:06:07 Attack -5: OK
分析:
- 11:06:05 wlan0 channel: 9, wlan1 channel: 9 需要保证两个网卡处在相同的信道,否则会导致测试的失败
- 输出的第一部分同前面的解释相同
- 最后一部分表示wlan0的网卡能够进行所有种类的攻击
- 如果attack 5是失败的,并不一定表示我们的网卡不能进行该种攻击。有可能是因为驱动的原因,可尝试一下将注入的MAC地址和当前网卡的MAC地址设置相同。
Airserv-ng测试
运行Airserv-ng:
airserv-ng -d wlan0
屏幕会显示:
Opening card wlan0
Setting chan 1
Opening sock port 666
Serving wlan0 chan 1 on port 666
然后运行如下命令:
aireplay-ng -9 127.0.0.1:666
其中:
- -9 表示注入测试
- 127.0.0.1:666 是airserv-ng的IP地址和端口数,并不一定像例子中一样是本地回环地址,可以是任何IP地址
屏幕会显示:
14:57:23 Testing connection to injection device 127.0.0.1:666
14:57:23 TCP connection successful
14:57:23 airserv-ng found
14:57:23 ping 127.0.0.1:666 (min/avg/max): 0.310ms/0.358ms/0.621ms
Connecting to 127.0.0.1 port 666...
Connection successful
14:57:24 127.0.0.1:666 channel: 9
14:57:24 Trying broadcast probe requests...
14:57:24 Injection is working!
14:57:25 Found 1 AP
14:57:25 Trying directed probe requests...
14:57:25 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
14:57:26 Ping (min/avg/max): 1.907ms/38.308ms/39.826ms
14:57:26 30/30: 100%
分析:
- Connection successful 表示连接成功。一定要将两个网卡设置到相同的信道,否则容易导致测试失败
- 第二部分同先前解释的一样
常见问题及解决方法
一般来讲
- 保证自己使用了正确的接口名。对于mac80211驱动,通常是mon0;对于madwifi-ng驱动,通常是ath0。同样,需要注意不能有多个monitor模式接口,如mon0,mon1等。如果有,需要将它们都关掉,再重新进行测试命令。
- 保证网卡都处在了接入点所在的信道上,并将其锁定。在将网卡置于monitor模式时,确保使用airmon-ng指定了信道。我们可以使用iwconfig命令来判断当前网卡处在什么信道上。
- 要保证网卡没有处在信道跳跃的模式上。一个很常见的错误就是这样,让airodump-ng运行在跳跃的信道上。如果使用airodump-ng,一定要注意带上-c这个参数,来指定信道。
- 最后,结束掉所有的网络管理员进程 (airmon-ng check kill)
错误信息”Network is down”
如果对于Atheros的网卡,madwifi-ng的驱动,有类似于下面错误信息:
aireplay-ng -9 -e teddy -a 00:14:6C:7E:40:80 -B ath0
Interface ath0 -> driver: Madwifi-NG
12:36:30 ath0 channel: 10
12:36:30 Trying broadcast probe requests...
write failed: Network is down
wi_write(): Network is down
解决方法:将-B 比特选项从命令中移去。在madwifi-ng驱动下,使用该选项会有一些问题,虽然官方也正在解决这个问题,但在解决之前,我们都不能使用这个参数。
Airodump-ng显示了接入点但是它们没有反应
注入测试使用的是广播探针请求,所以并不是所有的接入点都会对此反应。也有可能,我们离接入点的距离有些远,导致我们可以接收到接入点的信号,却不能将数据包发送到接入点。两种情况,都可以尝试换到其他的信道,或者尝试特定的SSID测试。