WiFi密码破解教程
本文基于 Oracle VirtualBox
本文基于 kali-linux-2022.4-virtualbox-amd64
本文基于 RT3572(同时支持 2.4GHz 和 5GHz) 无线网卡
本文基于 Aircrack-ng 1.7
前置准备
虚拟机 VirtualBox
虚拟机的安装和 Kali-Linux 的安装不再赘述,读者可自行搜索安装教程。
Kali-Linux
我们不建议将 Kali-Linux 作为你的主力操作系统。俗话说的好: Kali 用的好,牢饭吃到饱😈
Kali-Linux 是基于 Debain 的 Linux 发行版,其内部预先安装了众多的安全审计工具,戳这里了解更多。
我们可以前去 Kali-Linux 下载系统镜像或者虚拟机安装包。我们一般推荐 Installer Images
和 Virtual Machines
这两个版本,当然你也可以根据自己的需要下载对应的版本。
无线网卡
网卡可以去某宝搜索
RT3070
和RT3572
关键词,几十块就可以搞定。笔记本的网卡、台式机的网卡和外置的台式机外卡一般都不可使用。
无线网卡需要事先被虚拟机托管。具体步骤为:设备->USB->选择你的网卡(一般以 WLAN 结尾)。
必须是可以使用监听模式的网卡,一般比较推荐 RT3572
型号的网卡(可以监听 2.4GHz 和 5GHz 网段的网络)。如果你不确定你的网卡是否支持监听模式,可以使用如下命令来查看:
查看当前的网卡和 IP 地址,找到以 wlan 开头的网卡,那就是我们外挂的无线网卡 |
预期结果
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 |
记下无线网卡的名称,查看此网卡是否支持监听模式,如果有内容输出则说明此网卡支持监听模式 |
预期结果
phy0 wlan0 rt2800usb Ralink Technology, Corp. RT3572 |
aircrack-ng
Kali-Linux 已经事先安装,但如果你没有 Kali-Linux 的话,也可以在你自己习惯的 Linux 上进行手动安装,具体参见这里。
关于 aircrack-ng 的详细的使用可以使用 aircrack-ng --help
来查看。
字典
字典是破解能否成功的关键,如果你的字典够好够大,那么你能够破解密码的概率也就越大。
Kali-Linux 自带字典
Kali-Linux 自带了几个字典在 /usr/share/wordlists
目录下,我们可以直接使用,但存在较大的局限性,只能跑一些弱密码,一些特殊需求的字典还是需要其他工具生成。
ll /usr/share/wordlists |
Crunch 生成字典
如果在情报侦测阶段,你获取了足够多的信息,比如名字,生日,孩子的名字,宠物,学校等,甚至还知道了密码策略,例如至少8位,必须包含大小写字母等。我们就可以自定义一个有针对性的字典,从而完成爆破的任务。
Crunch就是这么一个工具,我们利用它可以创建自定义的破解字典,可以和 Hashcat,Join the Ripper,Aircrack-ng 等工具一起使用。如果设置得当,势必能够节约时间。
更详细的说明和具体使用方法请使用 man crunch
命令来查看。
fk the WiFi
着手开始破解之旅
网卡开启监听模式
请确保无线网卡已经正确连接
使用如下命令还启动网卡的监听模式
sudo airmon-ng start wlan0 |
查看网卡信息 |
再次查看网卡信息可以发现原先的 wlan0
网卡变成了 wlan0mon
说明网卡已经开启了监听模式。
wlan0mon: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000 |
扫描周边 WiFi
2.4GHz 网段
优先寻找 2.4GHz 网段 WiFi
使用如下命令开始扫描周边的命令,如果只是扫描 2.4GHz 频段的 WiFi 可以使用以下命令
sudo airodump-ng wlan0mon |
执行完命令之后,网卡就会开始工作,扫描附近的 2.4GHz 的 WiFi,结果如下所示:
字段说明:
- CH 9]:当前信道,2.4GHz 一般有14(1~14)个信道。
- [ Elapsed: 12 s ]:表示已经扫描了多久。
- [ 2023-04-10 22:05 ]:当前时间。
- [ display ap+sta+ack:重要,在侦测到WPA/WPA2握手包的时候会显示
- BSSID:重要,接入点的MAC地址,在客户端部分,“(not associated)”表示客户端没有连接到任何接入点。在这种没有连接的状态下,它一直会搜寻接入点。
- PWR:网卡反馈的信号水平,它的数值是驱动决定的,但是离接入点或基站越近,信号数值就会变得越大。如果接入点的PWR是-1,则表示驱动不支持信号水平;如果部分station的PWR是-1,则表示网卡能接收到接入点的数据包,但是却超出了网卡的传输范围。这就意味着我们只能监听到1/2的信息交流。如果所有station都是-1,则表明驱动不支持显示信号水平。
- Beacons:接入点发出的公告报文的数量,每个接入点每秒大概发送10个公告包(以最低的速率1M),所以通常相距较远时也能收集到它们。
- #Data:捕捉到的数据包的数量(如果是WEP,则是不同IV的数量),包括数据广播包
- #/s:过去10秒每秒接收到的数据包数量
- CH:无线信道(从beacon包中得到),注意:即使固定了信道,有时也会捕捉到其他信道的数据包,这时由于无线电干扰造成的
- MB:接入点支持的最大速度。如果MB=11,就是802.1b,如果MB=22,就是802.1b+,更高的就是802.1g。
- ENC:表示使用的加密算法。OPN表示没有加密,“WEP?”表示不确定是WEP还是WPA/WPA2;WEP表示静态或者动态的WEP,TKIP或者CCMP表示WPA/WPA2。
- CIPHER:检测出的密码体系,CCMP,WRAP,TKIP,WEP,WEP40和WEP104中的一种。虽然不是必须的,但是TKIP通常用于WPA,CCMP常用于WPA2。当键字索引大于0时,会显示WEP40。(40位时,索引可以是0-3;104位时,索引需为0)
- AUTH:使用的认证协议。GMT(WPA/WPA2 使用单独的认证服务器),SKA(WEP共享密钥) ,PSK(WPA/WPA2 预共享密钥),或者OPN(WEP开放认证)
- ESSID:无线网络名称。也叫“SSID”,如果开启SSID隐藏模式,则此项为空。在这种情况下,airodump-ng会尝试通过探测响应和关联请求恢复SSID。
- STATION:每一个已连接或者正尝试连接用户的MAC地址,还没有连接上接入点的用户的BSSID是”not associated”。
- Lost:过去的10秒钟丢失的数据包数量
- Packets:用户发出的数据包数量
- Probes:用户探测的无线网络名称,如果还没有连接那么它是用户正尝试连接的网络名称
5GHz 网段
注意:破解 WiFi 时一般不选取 5GHz 网段,因为常规的 WiFi 攻击手段对 5GHz 无效,没办法实现效果,此处只作为展示使用。
如果你的网卡支持 5GHz 频段的 WiFi 可以使用以下命令扫描 5GHz 频段的 WiFi(可以使用 iw list
命令来查看网卡支持的 5GHz 频率,一般在 Frequencies
字段中):
sudo airodump-ng -C 5180-5825 wlan0mon |
扫描结果如下所示:
字段与 2.4GHz 的结果类似基本一致,唯一不一样的是 Freq 5540 ]
,这个字段表示当前正在扫描的 5GHz 频率。
抓取握手包
原理:所有的设备想要连接到路由器都需要进行一次握手的过程,在这个过程中路由器和连接设备会发送握手包,我们可以利用握手包来破解路由器的密码。首先就需要攻击路由器上正在连接的设备,使其掉线然后进行重新连接,重新连接时会产生握手包,我们抓取到握手包之后就可以进行后续的破解操作。
当扫描出周边的 WiFi 时,我们就可以挑选出我们的目标 WiFi 了,例如我们这里选择 理工彭于晏
这个小倒霉蛋,根据扫描结果拿到他的 BSSID 和当前哪个信道上有连接设备,使用如下命令来抓取握手包。
sudo airodump-ng -c 11 --bssid <your_target_mac_address> -w ./test wlan0mon |
这时我们可以另起一个终端窗口来进行 deauth 攻击,使用如下命令:
sudo aireplay-ng -0 20 -a <target_AP_mac> -c <station_mac> wlan0mon |
- -0:Deauth 攻击
- -a:目标路由器的 MAC 地址
- -c:表示目标路由器连接的设备 MAC 地址
效果如下:
在 Deauth 攻击下,我们最终会拿到握手包,如下所示:
握手包存放的位置为 airodump-ng
命令中 -w
选项的路径,我们可以进入该路径,文件夹里一般包含以下几个文件:
total 1820 |
其中 cap
文件最为重要。
破解密码
拿到握手包之后,我们就可以使用如下命令开始破解密码了。
sudo aircrack-ng -w /usr/share/wordlists/wifite.txt -b <yout_target_mac> test-01.cap |
- -w:字典位置
- -b:目标路由器 MAC 地址
- 握手包路径
执行完毕之后可以看到密码被成功破解,如下所示:
当然不是每次都这么幸运,如果目标路由器的密码比较复杂的话可能需要很长时间才能破解的出来或者根本破解不出来。
安全建议
- WiFi 密码越复杂越好
- WiFi 密码不要跟个人信息有关
- 把 WiFi 设置成隐藏
总结
WiFi 密码的破解过程其实不难,难的是密码的破解也就是字典的选取。目标路由器的密码越复杂那么破解起来将会越耗时也越难破解。并且只有暴力破解这一条路可以走,例如彩虹表、GPU 加速等技术只是加速破解的速度