WiFi密码破解教程
WiFi密码破解教程
lololowe1. 前言
请在获得相关设备和网络所有者的许可下进行Wi-Fi渗透测试!
本次实验使用aircrack-ng工具包进行WiFi渗透测试。aircrack-ng是一个用C语言开发的无线网络安全工具, 主要功能有:网络侦测, 数据包嗅探, WEP和WPA/WPA2-PSK协议的离线破解。
官网:https://aircrack-ng.org/
开源地址:https://github.com/aircrack-ng/aircrack-ng
Windows对aircrack-ng的兼容性很差, 本次实验在Linux环境下进行。我使用的是Ubuntu 22.04 LTS, 没有内置aircrack-ng, 需要手动安装。如果你使用的是kali linux, 内置了aircrack-ng, 可以跳过安装步骤。其他Linux发行版以及MAC OS也可以使用aircrack-ng, 请自行查阅项目的README。
如果你是用的是虚拟机, 请确保你有一个外置的USB无线网卡, 并且虚拟机可以识别。原因是虚拟机无法直接使用电脑内置的无线网卡。没有的话可以去电商平台搜索“Linux 免驱无线网卡”, 有很多选择(价格基本在35左右)。下单前一定要问客服支不支持Linux, 否则买来后可能需要自行下载编译驱动。
2. 安装
1 | sudo -i # 切换到root用户执行, 否则安装完成后aircrack-ng无法使用(会提示缺少库文件) |
3. 工具包使用
操作无线网卡属于高危行为, 因此以下aircrack-ng的相关命令都需要root权限执行。
3.1. 查看无线网卡名称
1 | iwconfig |
名称后面带着IEEE 802.11
(无线网络标准)的, 就是无线网卡。
3.2. 停止可能会干扰测试的程序
1 | airmon-ng check # 查看哪些进程可能会干扰测试 |
在进入监视模式之前, 要使用此命令来自动停止一些进程。防止被更改信道或者将接口恢复为托管模式而干扰WiFi的监控。
3.3. 开启监听模式
1 | airmon-ng start wlp1s0 |
此命令用于开启无线网卡的监听(monitor)模式并禁用托管模式以及修改网卡名称。这将使得无线网卡能够捕获网络中传送的所有数据包, 而不只是直接发给当前设备的数据包。
3.4. 扫描无线网络
1 | airodump-ng wlp1s0mon |
此命令用于扫描无线网卡可以监听范围内的所有2.4GHz频段的无线网络(扫描5GHz频段的网络需要加上-C 5180-5885
参数指定频段)。
注意这里的无线网卡名称是wlp1s0mon
, 而不是wlp1s0
。因为刚刚开启了监听(monitor)模式。
找到目标网络(test)后, 按ctrl + c
停止扫描, 然后记录下BSSID(mac地址)和CH(信道)。
出于隐私码去相关MAC地址的OUI
图中各字段含义:
BSSID:无线接入点的MAC地址
PWR:信号强度(负数越大信号越强)
Beacons:接入点广播的信标帧数量
#Data:接入点传输的数据包数量
#/s:接入点每秒传输的数据包数量
CH:无线网络信道
MB:接入点传输速度(单位Mbps)
ENC:加密方式, aircrack-ng支持抓取WPA, WPA2和WEP加密的数据包
CIPHER:加密算法
AUTH:认证协议, 只支持PSK
ESSID:无线网络名称
STATION:连接到接入点的客户端MAC地址
Rate:传输速率
Lost:丢包数量
Frames:抓包总数
Notes:抓包状态信息
Probes:探测请求
3.5. 监听目标网络, 抓取握手包(被动方式)
1 | airodump-ng -c 13 --bssid XX:XX:XX:68:09:F8 -w /root/handshake_packet wlp1s0mon |
-c 13
: 指定信道--bssid XX:XX:XX:68:09:F8
: 指定目标网络的BSSID-w /root/handshake_packet
: 指定保存抓取到的握手包的文件名
注意: 开始抓包后, 如果Beacons字段的值始终没有变化, 则需要重新开启监听。
命令执行完成后可以看到已经连接到接入点的客户端的MAC地址。但是没有握手包, 表现为Notes字段下没有显示EAPOL
, 握手包中包含的EAPOL(可扩展认证协议)数据, 在WiFi网络中的WPA/WPA2认证过程中起到关键作用, 是密码握手过程中的一部分。可以理解为抓到了哈希值,但也可能是认证失败的握手包。
请坐和放宽, 耐心等待新用户去连接目标网络, 并完成握手过程。
注意:认证失败的握手包也可能被抓取到并显示EAPOL(很少见),建议多次抓取。
3.6. 监听目标网络, 抓取握手包(主动攻击)
如果长时间没有用户连接到目标网络, 那么可以尝试主动攻击, 使目标网络中的客户端断开连接, 然后重新连接, 从而抓取到握手包。
保持监听状态不要停, 记下已连接的客户端的BSSID, 新开一个终端执行:
1 | aireplay-ng -0 1 -a XX:XX:XX:68:09:F8 -c YY:YY:YY:20:4C:27 wlp1s0mon |
-0 1
: 0表示发送deauthentication(去认证)数据包, 1表示发包数量(1个就够了, 也可按需要发送多个),如果需要无限发包,使用-0 0
-a XX:XX:XX:68:09:F8
: 指定接入点的BSSID-c YY:YY:YY:20:4C:27
: 指定已连接的客户端的MAC地址, 不加此参数则会广播去认证数据包, 所有连接的客户端都会断开连接
此时可以看到成功抓取到了握手包。
注意:如果出现下图的错误, 则说明监听时没有指定信道, 需要重新加上
-c
参数指定信道进行监听,再进行攻击。
3.7. 暴力破解握手包
1 | aircrack-ng -w /root/passwd-CN-Top10000.txt -b XX:XX:XX:68:09:F8 /root/handshake_packet-0*.cap |
-w /root/passwd-CN-Top10000.txt
: 指定密码字典文件-b XX:XX:XX:7D:EB:F8
: 指定接入点的BSSID/root/handshake_packet-0*.cap
: 指定抓取到的握手包的文件名, 由于每次抓包都会生成抓包文件, 因此这里使用了通配符*匹配多个握手包
上图可以看到已经成功破解了握手包, 并获取到了密码123654789
。
推荐使用hashcat进行破解, 因为hashcat支持GPU加速破解, 速度更快。使用 https://hashcat.net/cap2hashcat/ 将握手包转换为hashcat支持的格式(.hc22000), 然后使用hashcat进行破解:
1 | hashcat -m 22000 -a 3 handshake.hc22000 ?d?d?d?d?d?d?d?d # 掩码攻击(假设密码为8位纯数字) |
hashcat的详细使用教程可以看我的另一篇博客:https://blog.lololowe.com/posts/f502
若以上方法都未破解出密码,并且密码对自己很重要,那么可以带上 RMB 和握手包去找万能的某宝…
3.8. 恢复网卡管理模式,连接新的WiFi
关闭监听模式(Monitor),恢复网卡管理模式(Managed):
1 | airmon-ng stop wlp1s0mon |
3.8.1. iwd
使用iwd工具连接WIFI:
1 | apt update && apt install iwd # 安装iwd |
3.8.2. impala
使用iwd的TUI前端工具impala连接WIFI。
impala基于Rust开发, 需要安装Rust环境, 安装方法如下:
1 | echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup' >> ~/.zshrc |
接着使用Rust包管理器cargo安装impala:
1 | # cargo换国内源 |
impala用法:
输入impala
进入impala交互模式,然后可以看到窗口分成了4个板块,分别是:Device, Station, Known Networks, New Networks
注意:如果impala启动失败,请尝试重启iwd:
systemctl restart iwd
每个板块的可用操作如下:
全局
Tab
或 Shift + Tab
: 切换不同板块。
s
: 开始扫描网络。
j
或 Down
: 向下滚动。
k
或 Up
: 向上滚动。
ctrl+r
: 切换适配器模式。
?
: 显示帮助。
esc
: 关闭不同的弹出窗口。
q
或 ctrl+c
: 退出应用。
Device(设备)
i
: 显示设备信息。
o
: 切换设备电源。
Station(网卡连接状态)
s
: 开始扫描网络。
Known Networks(已知网络)
Space
: 连接/断开网络。
a
: 启用/禁用自动连接。
d
: 从已知网络列表中移除网络。
New Networks(新网络)
Space
: 连接新网络。
参考:
https://aircrack-ng.org/doku.php?id=cracking_wpa
https://www.cnblogs.com/micr067/p/12496753.html
https://wiki.archlinuxcn.org/wiki/Iwd
https://rustup.rs/
https://github.com/pythops/impala