实验原理:WPA密码其实叫PSK(pre-shared key),它加上ssid通过一定的算法可以得到PMK(pairwise master key):
$$ PMK=SHA_1(ssid,psk) $$
PMK的长度是定长的,都是64字节。由于计算PMK的过程开销比较大,是我们破解花费时间长的关键,所以采用以空间换时间的原则把PMK事先生成好,这个事先生成好的表就是常说的HASH表,这个工作就是用airlib-ng这个工具来完成。
目前的破解方法是我们获得握手包后,用我们字典中的PSK+ssid生成PMK,然后结合握手包中的(客户端MAC,AP的BSSID,$A_NONCE$,$S_NONCE$)计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥。
airolib-ng
airolib-ng是Aircrack-ng套装里的又一个工具,用来存储和处理网络名和密码表。通过计算PMK,用于WPA/WPA2的破解。其语法格式如下:
1 | airolib <database> <operation> [options] |
选项 | 说明 |
---|---|
database | 表示数据库文件,可以是绝对路径。 |
operation | 指定了我们要对数据库进行的操作。 |
–import {essid|passwd} {file} | 导入含有网络名或者秘钥列表的文本文件。文件每行需含一个网络名或者密码,以换行符结束(这样读入时就会被当做“enter”)。 |
–batch | 开始计算所有网络名和密码的组合。此命令需用在aircrack-ng破解之前。当数据库添加了新的SSID或者密码时,也许重新计算。 |
–export cowpatty [essid] [file] | 导出为cowpatty文件。 |
–sql {sql} | 执行所给的SQL语句。 |
airolib-ng –help | 查看帮助文档。 |
1.创建包含ESSID的文档
创建包含ESSID的文档,每行含有一个ESSID。创建名称为gryffinbit(名称自取)的数据库,向数据库插入ESSID。
1 | airolib-ng gryffinbit --import essid /root/ssid.txt |
2.创建包含密码的文档,并向rainbow数据库插入密码。
1 | airolib-ng gryffinbit --import password /root/password.txt |
3.批量生产PMK数据。
1 | airolib-ng gryffinbit --batch |
查看数据的状态
1 | airolib-ng gryffinbit --stats |
可以看到,当前数据库中有11个ESSID和16个密码,并且已成功对其进行了计算。
4.使用aircrack-ng进行破解
1 | aircrack-ng -r gryffinbit -e helloworld handshake-01.cap |
选项 | 说明 |
---|---|
-r | 指定PMK数据库 |
-e | 指定ESSID |
也可以选择使用Cowpatty工具进行破解。Cowpatty是一款Linux下用于破解WPA-PSK加密的工具。其语法格式如下:
1 cowpatty [options]
选项 说明 -d Hash表 -r 含有握手包的cap文件 -s AP的ESSID 在使用Cowpatty之前,需要先提取用于cowpatty跑的hash 表。
1 airolib-ng gryffinbit --export cowpatty helloworld R_table然后就可以使用Cowpatty工具。
1 cowpatty -s kong -d R_table -r .cap
使用airolib-ng生成PMK数据后,可以对该数据进行管理,比如导入第三方数据、校验数据和清理数据。
导入ssidlist.txt 文件中的ESSID到数据库。
1 airolib-ng gryffinbit --import password /root/password.txt导入pword.txt 文件中的密码到数据库。
1 airolib-ng gryffinbit --import essid /root/ssidlist.txt使用–verify选项校验数据,以验证数据库的状态正常。也可以使用–clean选项进行数据清理。
1 airolib-ng gryffinbit --verify可以使用下面的命令行插入单个ESSID。插入单个密码也可类似操作。
1 echo Love | airolib-ng gryffinbit --import essid -
hashcat工具
hashcat一款强大的开源密码恢复工具。该工具可以利用CPU或GPU资源,破解多种hash类型的密码。当捕获握手包以后,可以使用该工具快速的破解出WPA密码。使用hashcat工具破解WPA的语法格式如下:
1 | hashcat -m 2500 [pcap file ] [words] --force |
选项 | 说明 |
---|---|
-m | 指定使用的hash类型,与WPA相关的hash如下图。 |
Words | 指定要使用的字典。 |
–force | 忽略警告信息。 |
hashcat –help | 查看帮助文档。 |
1.使用aircrack-ng将捕获的握手包文件转换为hccapx格式。
1 | aircrack-ng test-01.cap -j hashcattest |
2.使用hashcat工具进行破解。
1 | hashcat -m 2500 hashcattest.hccapx /root/password.txt --force |