1. WPA简介
由于WEP的安全性较低,IEEE 802.11组织开始制定新的安全标准,也就是802.11i协议。但由于新标准从制定到发布需要较长的周期,而且用户也不会仅为了网络的安全性就放弃原来的无线设备,所以无线产业联盟在新标准推出之前,又在 802.11i 草案的基础上制定了WPA(Wi-Fi Protected Access)无线加密协议。
WPA使用临时密钥完整性协议(TKIP,Temporal Key Integrity Protocol),它的加密算法依然是WEP中使用的RC4加密算法,所以不需要修改原有的无线设备硬件。WPA针对WEP存在的缺陷,如 IV 过短、密钥管理过于简单、对消息完整性没有有效的保护等问题,通过软件升级的方式来提高无线网络的安全性。
WPA为用户提供了一个完整的认证机制,AP或无线路由根据用户的认证结果来决定是否允许其接入无线网络,认证成功后可以根据多种方式(传输数据分组的多少、用户接入网络的时间等)动态地改变每个接入用户的加密密钥。此外,它还会对用户在无线传输中的数据分组进行MIC编码,确保用户数据不会被其他用户更改。作为802.11i标准的子集,WPA的核心就是IEEE802.1x和TKIP。
WPA标准于2006年正式被WPA2 取代。WPA和WPA2之间最显著的变化之一是强制使用AES算法和引入CCMP(计数器模式密码块链消息完整码协议)替代TKIP。
目前,WPA2系统的主要安全漏洞很不明显(漏洞利用者必须进行中间人模式攻击,从网络内部获得授权,然后延续攻击网络上的其他设备)。因此,WPA2的已知漏洞几乎都限制在企业级网络,所以,讨论WPA2在家庭网络上是否安全没有实际意义。
不幸的是,WPA2也有着与WPA同样的致命弱点——Wi-Fi保护设置(WPS)的攻击向量。尽管攻击WPA/WPA2保护的网络,需要使用现代计算机花费2~14 h持续攻击,但是我们必须关注这一安全问题,用户应当禁用WPS(如果可能,应该更新固件,使设备不再支持WPS,由此完全消除攻击向量)。
2. 破解WPA
接下来尝试在没有大量流量的情况下破解WPA。
为了更好地理解破解的过程,不再使用集成了Aircrack-ng的Wifite,直接使用这个强大的Aircrack-ng套件来进行WEP破解。
首先开启无线网卡的Monitor模式,然后使用Airodump-ng wlan0mon寻找合适的目标,记录下目标的BSSID和信道。这里就以smart为例,如图1所示。
BSSID:28:6C:07:3E:ED:CA
CH:1
root@kail:~# airodump-ng--bssid28:6C:07:3E:ED:CA-c 1-w smart wlan0mon
图1 获取BSSID和信道
可以看到有一个用户连接,但是捕捉数据分组的速度非常的慢,可见这个用户并没有在上网,因此不能获得大量流量。
现在我们使用这个用户的BSSID来进行模拟发送数据分组,这样可以更快地取得数据分组。
root@kali:~#aireplay-ng-0 0-a 28:6C:07:3E:ED:CA-h 3C:46:D8:4D:0F:5D wlan0mon
-0 模式是指 Deauthentication(取消认证),向客户端发送数据分组,让客户端误以为是AP 发送的数据。而后面的数字 0 是指无尽发送,当然也可以指定发送的数据分组,选择无尽模式去发送是为了更快地获取握手分组。
如图2所示,可以看到发送了大量的数据分组。
图2 发送大量数据分组
然后回到Airodump-ng的页面,可以看到Frames数量在不断上升,在获得了握手分组后,就可以停止Aireplay-ng的分组发送行为了,如图3所示。
图3 获取握手分组
然后获得了smart的cap分组,这里可以使用Aircrack-ng来进行跑包,但是取决于密码在字典中的位置,也可以自己制作字典,由于目前的WPA2加密的密码长度可以设置得很长,因此破解需要时间。我们先使用aircrack-ng来跑一个常用字典,命令如下。
root@kali:~#aircrack-ng-w rockyou.txt smart-01.cap
这里的01是系统在设定了-w smart后自动生成的,因为可能之后还会捕捉分组,系统用以区分这是第几次捕捉分组。如图4所示,密码在字典里,并且密码在字典的很前面。
图4 WPA破解
3. 密码破解
Aircrack-ng 是使用 CPU 来破解的,如果运气不好,可能一个字典分组就要跑上好几个小时,这样的速度太慢了,这时可以借助显卡的计算速度来进行 GPU跑包,这样速度可以获得几倍的提升。借助GPU跑包可以使用更短的时间,可以说GPU是跑包的好手,但是CPU是集大成者,它能做的事情非常多,因为杂,所以慢,因为还要处理其他事项,因此,越来越多的人开始使用GPU来跑包。
Hashcat号称是如今最快的跑包软件。以前Hashcat分为Hashcat、Oclhashcat、Cudahashcat,Hashcat使用CPU跑包,而后两者是使用GPU跑包。不过目前这三者合并为Hashcat,并且官网上也不再提供其他两者的下载。
Hashcat 是一款在 github 上开源的密码破解软件,号称是世界上最快的密码破解者,也是世界上第一个也是唯一的内核规则引擎。
Hashcat系列软件在硬件上支持使用CPU、NVIDIA GPU、ATI GPU来进行密码破解。在操作系统上支持 Windows、Linux 平台,并且需要安装官方指定版本的显卡驱动程序,如果驱动程序版本不对,可能导致程序无法运行。
如果要搭建多GPU破解平台的话,最好是使用Linux系统来运行Hashcat系列软件,因为在Windows下,系统最多只能识别4张显卡。并且,Linux下的VisualCL技术,可以轻松地将几台机器连接起来,进行分布式破解作业。在破解速度上,ATI GPU破解速度最快,使用单张HD7970破解MD5可达到9000 Mbit/s的速度,其次为NVIDIA显卡,同等级显卡GTX690破解速度大约为ATI显卡的图片,速度最慢的是使用CPU进行破解。
Hashcat支持绝大多数的密码破解,在其帮助页面列出了所有支持的密码类型,如图5所示。
图5 Hashcat支持的密码类型
Hashcat 支持使用字典跑包,也支持自定义密码格式跑包,并且可以自定义规则,其用法太多,在此不做赘述。下图是官方提供的例子,如图6所示。
图6 Hashcat官方示列
在使用Hashcat破解WAP/WAP2时,需要先将cap文件转换成hccap文件。我们可以使用Aricrack-ng来进行转换,如图7所示。
root@kail:~# aircrack-ng smart.cap-J smart
图7 Hashcat破解WAP/WAP2