简介
Wired Equivalent Privacy或WEP(有线等效加密)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。
不过密码分析学家已经找出WEP好几个弱点,因此在2003年被Wi-Fi Protected Access(WPA)淘汰,又在2004年由完整的IEEE 802.11i标准(又称为WPA2)所取代。
操作步骤
(1)使用airmon-ng命令查看当前系统中的无线网络接口。执行命令如下所示:
kali:~#airmon-ng
Interface Chipset Driver
wlan0 Ralink RT2870/3070rt2800usb-[phy1]
输出的信息表示,当前系统中存在一个无线网络接口。从输出结果的Interface列,可以看到当前系统的无线接口为wlan0。
(2)修改wlan0接口的MAC地址。因为MAC地址标识主机所在的网络,修改主机的MAC地址可以隐藏真实的MAC地址。在修改MAC地址之前,需要停止该接口。执行命令如下所示:
root@kali:~#airmon-ng stop wlan0 #停止wlan0接口
Interface Chipset Driver
wlan0 Ralink RT2870/3070rt2800usb-[phy1]
(monitor mode disabled)
或者:
root@kali:~#ifconfig wlan0 down
执行以上命令后,wlan0接口则停止。此时就可以修改MAC地址了,执行命令如下所示:
输出的信息显示了wlan0接口永久的MAC地址、当前的MAC地址及新的MAC地址。
可以看到wlanl接口的MAC地址已经被修改。
(3)重新启动wlan0。执行命令如下所示:
输出的信息显示了无线网卡wlan0的芯片及驱动类型。
例如,当前系统的无线网卡芯片为Ralink RT2870/3070;默认驱动为rt2800usb,并显示监听模式被启用,映射网络接口为mon0。
有时候使用airmon-ng start wlan0命令启用无线网卡时,可能会出现SIOCSIFFLAGS:
Operation not possible due to RF-kill 错误。
这是因为Linux下有一个软件RF-kill,该软件为了省电会将不使用的无线设备(如WIFI和Buletooth)自动关闭。
当用户使用这些设备时,RF-kill不会智能的自动打开,需要手动解锁。
用户可以执行rfkill list命令查看所有设备,如下所示:
该列表中前面的编号,表示的是设备的索引号。
用户可以通过指定索引号,停止或启用某个设备。
如启用所有设备,执行如下所示的命令:
root@kali:~#rfkill unblock all
执行以上命令后,没有任何信息输出。
以上命令表示,解除所有被关闭的设备。
(4)使用airodump命令定位附近所有可用的无线网络。执行命令如下所示:
以上输出的信息显示了附近所有可用的无线网络。当我到用户想要攻击的无线路由器时,按下Ctrl+C键停止搜索。
从输出的信息中看到有很多参数。详细介绍如下所示。
- BSSID:无线的IP地址。口PWR:网卡报告的信号水平。
- Beacons:无线发出的通告编号。
- #Data:被捕获到的数据分组的数量,包括广播分组。
- #/s:过去10秒钟内每秒捕获数据分组的数量。
- CH:信道号(从Beacons中获取)。
- MB:无线所支持的最大速率。如果MB=11,它是802.11b;如果MB=22,它是802.11b+;如果更高就是802.11g。后面的点(高于54之后)表明支持短前导码。
- ENC:使用的加密算法体系。OPN表示无加密。WEP?表示WEP或者WPA/WPA2模式,WEP(没有问号)表示静态或动态WEP。如果出现TKIP或CCMP,那么就是WPA/WPA2。
- CIPHER:检测到的加密算法,是CCMP、WRAAP、TKIP、WEP和WEP104中的一个。典型的来说(不一定),TKIP与WPA结合使用,CCMP与WPA2结合使用。如果密钥索引值大于0,显示为WEP40。标准情况下,索引0-3是40bit,
104bit应该是0。 - AUTH:使用的认证协议。常用的有MGT(WPA/WPA2使用独立的认证服务器,平时我们常说的802.1x、radius和eap等)、SKA(WEP的共享密钥)、PSK
(WPA/WPA2的预共享密钥)或者OPN(WEP开放式)。 - ESSID:指所谓的SSID号。如果启用隐藏的SSID的话,它可以为空。这种情况下,airodump-ng 试图从proberesponses和associationrequests中获取SSID。
- STATION:客户端的MAC地址,包括连上的和想要搜索无线来连接的客户端。
如果客户端没有连接上,就在BSSID下显示“notassociated”。 - Rate:表示传输率。
- Lost:在过去10秒钟内丢失的数据分组,基于序列号检测。它意味着从客户端来的数据丢包,每个非管理帧中都有一个序列号字段,把刚接收到的那个帧中的序列号和前一个帧中的序列号一减就能知道丢了几个包。
- Frames:客户端发送的数据分组数量。
- Probe:被客户端查探的ESSID。如果客户端正试图连接一个无线,但是没有连接上,那么就显示在这里。
(5)使用airodump-ng捕获指定BSSID的文件。执行命令如下所示。
airodump-ng命令常用的选项如下所示。
16. -c:指定选择的频道。
17. -w:指定一个文件名,用于保存捕获的数据。
18. -bssid:指定攻击的BSSID。
下面将Bssid为14:E6:E4:AC:FB:20的无线路由器作为攻击目标。执行命令如下所示:
从输出的信息中可以看到ESSID为Test无线路由器的#Data一直在变化,表示有客户端正与无线发生数据交换。
以上命令执行成功后,会生成一个名为wirelessattack-01.ivs的文件,而不是wirelessattack.ivs。
这是因为airodump-ng工具为了方便后面破解的时候调用,所有对保存文件按顺序编了号,于是就多了-01这样的序号,以此类推。
在进行第二次攻击时,若使用同样文件名wirelessattack保存的话,就会生成名为wirelessattack-02.ivs文件。
(6)打开一个新的终端窗口,运行aireplay命令。aireplay命令的语法格式如下所示:
root@kali:~#aireplay-ng -1 0 -a 14:E6:E4:AC:FB:20 -h 00:11:22:33:44:55 -e Test mon0
(7)使用aireplay发送一些流量给无线路由器,以至于能够捕获到数据。语法格式如下所示:
aireplay-ng 3 -b[BSSID] -h[Our chosen MAC address][Interface]
执行命令如下所示:
输出的信息就是使用ARPRequests的方式来读取ARP请求报文的过程,此时回到airodump-ng界面查看,可以看到Test的Frames栏的数字在飞速的递增。
在抓取的无线数据报文达到了一定数量后,一般都是指IVsX值达到2万以上时,就可以开始破解,若不能成功就等待数据包文继续抓取,然后多尝试几次。
(8)使用Aircrack破解密码。执行命令如下所示:
从输出的结果中可以看到KEYFOUND,表示密码已经找到,为abcde。
参考书籍:《Kali Linux渗透测试技术详解》