
做无线网络实验第一步不是打开终端而是先把环境折腾明白。前阵子我把笔记本装了双系统又开了台虚拟机跑 Kali Linux从 VMware 到无线网卡直通再到 Wireshark 里看到四次握手那四个 EAPOL 帧整个过程踩了不少坑。今天把整个流程完整还原出来从零开始搭一台能抓 WIFI 握手包的 Kali Linux 实验机整个过程只针对自家路由器、实验网络或者你有授权的测试目标合法合规是底线。这篇文章适合三类人一是刚开始接触 Kali Linux、不知道怎么在虚拟机上装系统的安全新手二是准备考无线安全相关认证、需要亲手抓到握手包做实验的选手三是做网络运维、想理解 WPA2 认证过程和 802.11 帧结构的人。我会把虚拟机配置、Kali 安装、无线网卡接入、monitor 模式切换、airodump-ng 抓包、Wireshark 验证这条链路全部走一遍每一步都讲清楚为什么这么做以及我实测中遇到的问题和解决办法。1. 为什么用虚拟机做无线安全实验整体方案怎么选1.1 实验环境规划先说我最终跑通的环境配置宿主机Windows 1122H2内存 32GB虚拟机软件VMware Workstation Pro 17Kali Linux 版本2024.2内核 6.8无线网卡Ralink RT3070 芯片 USB 网卡MTK 芯片组实测也能用目标 AP自建实验室 TP-Link 路由器WPA2-PSKAES WPA3 混合模式这块后面有坑下文细说如果你内存只有 16GB跑 Windows Kali 虚拟机也能顺畅分配 4GB 给 Kali 就行。CPU 建议虚拟机里给 2 核以上因为 aircrack-ng 跑字典的时候多核优势明显。存储至少给 40GBKali 默认装完 20GB 出头抓包、装驱动、存 cap 文件都要空间。有人问为什么非要用虚拟机直接在物理机上装 Kali 不就行了确实物理机方案在无线网卡兼容性上没有 USB 直通这些额外障碍。但虚拟机的好处是快照功能。你在系统里装坏一个驱动一份快照回滚省掉重装系统的整个晚上。我是在 VMware 里长期保持一个刚装好、未装无线工具的快照一个已配好网卡驱动的工作快照这样实验环境永远可以回到干净状态。1.2 虚拟机方案的优势与取舍虚拟机方案有个核心争议点无线网卡的直通。VMware 默认情况下USB 无线网卡插入宿主机后会先被 Windows 的无线服务接管wlanAutoConfig 服务可能会自动连接网络这就导致 Kali 虚拟机里看不到网卡。需要先做断开连接再到 VM 里连接设备顺序错了就各种摸不到网卡。我的建议是宿主机有线网络连接路由器无线网卡专供虚拟机抓包使用。这样宿主机和虚拟机网络通道互不干扰。如果宿主机本身就是无线连网那 USB 无线网卡每次插入都会被 Windows 抢走你必须进网络连接里手动禁用这个无线网卡的 Windows 管理才能让 USB 直通给虚拟机生效。这个操作我在后面实操部分会详细展开。另外虚拟机软件的选择上我最终还是用 VMware Workstation Pro而不是 VirtualBox。原因有二一是 VMware 对 USB 3.0 直通的支持更稳定我测试 RT3070 网卡在回环模式下不掉线二是 VMware 的 NAT/桥接网络管理界面对新手更友好。VirtualBox 免费开源也能做实验但如果你手头是 Broadcom 或 Intel 卡的话USB 直通后的驱动兼容问题会让你折腾到怀疑人生。2. 从镜像下载到 Kali 系统装进虚拟机2.1 Kali Linux 版本选择与镜像下载Kali Linux 是滚动发布Rolling Release没有传统意义上的稳定版。下载的时候认准官网别去第三方站点下载精简版或者中文版那些打包镜像我遇到过篡改源和预置后门的先例。用官方 ISO 最稳Kali 官方对中文的支持本来就不错装完再手动配置 fcitx 输入法就行。选择镜像时有个细节如果你是 Intel 网卡比如 AX200 之类或者要在 ARM 设备上实验建议先跑一下uname -r看看内核版本因为新款无线网卡的驱动经常要靠新内核才带得上。镜像站实际下载的就三种Installer ISO完整离线安装、Network Installer网络安装、Live ISO试用安装二合一。我建议下 Full Installer 版本的 ISO离线包装完就能用省得装系统时到处联网找依赖包。下载完镜像后先做一件事校验 SHA256。Kali 官网每个镜像文件都附了 SHA256 哈希值Windows 下用certutil -hashfile kali-linux-2024.2-installer-amd64.iso SHA256核对一下确认下载文件没有被劫持。安全实验第一步是保证自己的实验环境可信这个习惯值得养成。2.2 VMware 虚拟机配置参数创建虚拟机时建虚拟机硬盘这一步有几个关键参数。磁盘类型选 SCSINVMe 也可以容量给 50GB选将虚拟磁盘存储为单个文件这个选项在后续做快照、迁移时速度更快。内存给 4GB 起步处理器给 2 核。网络适配器先选 NAT装系统阶段不需要桥接。这里要重点说的是处理器虚拟化设置。VMware 编辑虚拟机设置 → 处理器下默认开启了虚拟化 Intel VT-x/EPT 或 AMD-V/RVI。这个选项如果你的 BIOS/UEFI 里没有打开 CPU 的虚拟化功能BIOS 里 Intel 平台叫 VT-xAMD 平台叫 SVM虚拟机启动时会直接蓝屏或者报无法启用虚拟机平台。排查思路放在后面第五章但这里提前做一次检查任务管理器 → 性能 → CPU看虚拟化这一项是否为已启用。不是的话重启进 BIOS 打开 CPU 虚拟化这是 VMware 安装的常见翻车点。还有一个容易忽略的配置CD/DVD 驱动器里加载 ISO 镜像后在虚拟机设置 → 选项 → 高级里把固件类型设为 UEFI 而不是 BIOS。新版 Kali 默认以 UEFI 模式安装跟 VMware 默认的 BIOS 不匹配直接导致开机黑屏没法进引导菜单。我实测 UEFI 没问题改完就好了。2.3 Kali 安装过程与环境初始化Kali 安装过程比较顺按照界面点下去就行。分区选使用整个磁盘向导会帮你把 EFI 分区和根分区自动建好。到软件选择那一步默认选了Kali Desktop EnvironmentXFCE 桌面和standard system utilities这两个一定要勾上。如果你之后要用 GNOME需要额外选但我建议 XFCE轻量不卡无线工具。装完之后重启进入系统第一件事开终端更新软件源。sudo apt update sudo apt upgrade -y sudo apt install -y kali-linux-wirelesskali-linux-wireless 元包会装上 airmon-ng、airodump-ng、aireplay-ng、wifite 等无线工具集这些工具在完整版镜像里部分是自带但通过元包安装能保证依赖完整。升级过程大概 10 到 20 分钟取决于网络。就在这段等待时间里我发现两个环境初始化小坑第一个是中文输入法。Kali 默认不带中文输入法框架需要装 fcitx5sudo apt install -y fcitx5 fcitx5-chinese-addons装完后在设置 → 区域和语言里把输入法添加为拼音重启一次系统。注意别装 ibus跟 XFCE 的兼容性很差我踩过这个坑。第二个是 VMware Tools或者 open-vm-toolssudo apt install -y open-vm-tools open-vm-tools-desktop这个包解决虚拟机和宿主机之间的剪贴板共享、窗口自适应分辨率。没装之前Kali 的分辨率永远锁定在 800x600终端里命令都写不全极其折磨。3. 无线抓包的核心原理理解 WPA 握手包和工具链3.1 WPA/WPA2 四次握手是怎么工作的在跑无线抓包命令之前必须先理解你抓的是什么。WPA2-PSK 网络里客户端Station和 AP 之间建立会话时会执行一次四次握手4-Way Handshake。参考下面这个简化时序第一次握手AP 向客户端发送 ANonce随机数 第二次握手客户端用自身生成的 SNonce加上密码PSK派生的 PMK一起生成 PTK 并回传给 AP 第三次握手AP 确认 PTK并向客户端安装密钥 第四次握手客户端确认密钥安装完成之后开始用加密数据通信握手包就是在抓包文件里体现为四个 EAPOL 帧。只要抓到了这四个帧中的任何一个Wireshark 过滤规则eapol就说明这个 AP 和某个客户端之间正在建立或重新建立会话。你后续用字典验证某个 PSK 是不是正确关键就是这四个帧里携带的 ANonce、SNonce 和 MIC 校验值。有个实操细节现在很多路由器默认开启 WPA2/WPA3 混合模式称为 Transition Mode在这种模式下抓包会发现频率上出现两个 BSSID一个 WPA2 一个 WPA3。WPA3 的握手机制完全不同于 WPA2你抓到的握手包套用 aircrack-ng 验证不了。所以实验时建议把 AP 单独设为 WPA2-PSKAES或者至少知道混合模式下要对着 WPA2 那个 BSSID 抓。这是我第一次实验没抓到有效握手包的直接原因。3.2 工具链Aircrack-ng 套件的逻辑关系Aircrack-ng 套件的关系是这样的airmon-ng把无线网卡从受管模式managed切换到监听模式monitor并创建一个 wlan0mon 接口airodump-ng扫描周围 AP 和客户端也能监听指定信道、指定 BSSID 并抓包写入 cap 文件aireplay-ng可以注入 deauth 帧解除客户端认证强制在线客户端重新发起握手加速抓包aircrack-ng验证破解密码也常用来检查 cap 文件里是否有握手包还有 Wireshark用来人工分析抓到的帧结构确认 EAPOL 四次握手是否完整。这套工具链设计的核心逻辑是监听模式 → 扫描并锁定目标 → 抓取握手帧 → 验证握手有效性。每一步都有单独的职责你不需要每次全跑但理解他们之间的数据流会帮你省很多排查时间。4. 完整实操从虚拟机到真正抓取握手包4.1 无线网卡准备与接入虚拟机这是整个实验最容易卡住的一环。无线网卡芯片选型上我实测稳定的两款是 Ralink RT3070 和 Realtek RTL8812AU 芯片组的 USB 网卡。它们天生支持 monitor 模式和包注入Kali 内核自带驱动插上去直接识别。Intel 的 AX200 这类网卡虽然性能好但驱动要装 debian firmware-iwlwifi 包而且部分芯片的 monitor 模式支持很差容易在抓包中途掉帧不建议拿来起步。先说宿主机一侧插入 USB 无线网卡前先把 VMware 的可移动设备菜单打开这个菜单在虚拟机窗口右下角。插上网卡后底下的设备列表里会多出一个 USB 设备右键选择连接Connect。如果连接之后 Kali 里还是lsusb看不到多半是 USB 兼容性问题要在虚拟机设置里把 USB 控制器改为 USB 3.1。这个控制器设置很容易被忽略但它直接影响直通稳定性。还有一个前置坑如果宿主机 Windows 正通过这块无线网卡上网直通给虚拟机后宿主机就断网了。Windows 自动重新连接时虚拟机的直通连接会被强制打断。解决办法就是前面说的宿主机用有线网无线网卡专门给 Kali 抓包。没有条件用有线的就去网络连接里右键这块无线网卡的属性禁用Internet 连接共享以及当此设备连接网络时自动连接之类的自动连接机制保证 Windows 不主动碰这块网卡。接入后在 Kali 里确认设备lsusb应该能看到类似Ralink Technology, Corp. RT2870/RT3070的条目信息。如果看不到重新在 VMware 菜单里断开再连接一次注意顺序。4.2 开启 monitor 模式确认网卡可见后用它查看当前接口名称ip a通常 USB 网卡显示为 wlan0 或 wlan1。接下来先做完备检查杀掉可能占用网卡的进程sudo airmon-ng check kill这一步会停止 NetworkManager 等无线网络管理服务避免它们把网卡重新切回 managed 模式。如果跳过这步你会发现网卡刚进入 monitor 模式几秒后又被系统自动拉回受管模式抓包日志里全是噪音。然后启用监听模式sudo airmon-ng start wlan0提示信息会告诉你创建了新接口wlan0mon。这里有个版本差异新版的 aircrack-ng1.7有时直接复用原接口名而不是新建 mon 后缀接口实际以输出信息为准。启动后看接口状态iwconfig确认 wlan0mon 的 Mode 一栏显示为 Monitor。如果显示的是 Managed说明切换失败重新检查网卡驱动和 suck 服务占用。如果 airmon-ng start 一直报 Failed to start monitor mode可以用 iw 手动切换作为备选sudo ip link set wlan0 down sudo iw wlan0 set monitor control sudo ip link set wlan0 up注意切换后接口名可能仍然叫 wlan0不影响后续使用。4.3 扫描目标与抓取握手包监听接口就绪后先扫一遍周边环境sudo airodump-ng wlan0mon这个命令会把周围所有 AP 列出来。表格里有几列信息需要看懂BSSIDAP 的 MAC 地址、CH信道、ENC加密方式WPA2、CIPHER、AUTH、PWR信号强度。你要找的目标应该是你自己实验路由器对应的 BSSID注意别对着WPA3的条目抓。锁定目标后单独对这个 BSSID 和信道抓包。假定目标 BSSID 是AA:BB:CC:DD:EE:FF信道是 6sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w lab wlan0mon-w lab表示以 lab 为前缀把抓包结果写入当前目录会生成lab-01.cap文件。这个命令窗口不要关让它持续抓包。刚开始抓的时候 cap 文件里基本没有说话因为抓包是等客户端和 AP 之间发生握手才留下帧。如果你的实验网络里没有设备正在连接可以打开一台手机连一下这个 WIFI就会触发新的握手。如果不想等还可以主动加速开一个终端窗口对这个目标发送 deauth 帧强制客户端断开重连。airodump-ng 窗口别动新终端执行sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF -c 44:44:44:44:44:44 wlan0mon-0 5表示发送 5 个 deauth 帧-a指定目标 AP 的 MAC-c指定要踢的客户端 MAC可以从 airodump-ng 客户端列表里看。客户端被踢下线后它会自动重连重连的那一瞬间就是握手抓取的最佳时机。等 airodump-ng 窗口右上角出现WPA handshake: AA:BB:CC:DD:EE:FF的字样说明握手已经抓到了。注意发送 deauth 帧这个操作在真实公共网络上属于干扰行为在你的实验环境里没问题在别人的网上这么做就是不合规的行为了。我反复强调这个是因为这类工具设计出来就是用来测试你自己网络的边界一定要清楚。4.4 验证握手包有效性并用 Wireshark 分析抓包完成后 CtrlC 停掉 airodump-ng先用 aircrack-ng 验证一下sudo aircrack-ng lab-01.cap输出结果里会显示1 handshake或者0 handshake。如果显示 0说明没抓到重新看 4.3 步通常是客户端没有重新连接。如果显示 1握手包有效可以用自己设的密码跑一遍验证整个链路闭合。验证密码这一步有个正确姿势如果你知道实验路由器设的密码是Test123456把密码写入文件然后echo Test123456 pass.txt sudo aircrack-ng -w pass.txt lab-01.cap正常会看到KEY FOUND! [ Test123456 ]。注意这里字典里必须刚好有这个密码或者包含它才能真正验证如果你是用随机密码做实验那 airckrack-ng 输出会显示未找到。至于用大字典暴力跑邻居家网络密码的玩法不是这篇文的方向也强烈不建议碰。用 Wireshark 打开 cap 文件是个很有价值的分析习惯wireshark lab-01.cap过滤栏输入eapol你会看到四次握手的四个帧每条帧的 Info 标签都有序号Message 1/2/3/4。重点关注 Message 1 和 Message 2 里的 Nonce 字段、Message 2 里的 MIC 校验值。这四个 EAPOL 帧才是后续密码验证的数据基础。过滤条件也可以换成wlan.fc.type_subtype 0x08看管理帧里的 Beacon观察 AP 广播的加密能力是否符合预期。5. 常见问题排查与实操速查表5.1 高频报错与解决手段把我在整个流程里碰到的高频问题汇总成一张速查表方便你踩坑时快速定位现象可能原因排查手段虚拟机启动蓝屏报无法启用虚拟机平台宿主 BIOS/UEFI 未开启 CPU 虚拟化重启进 BIOS开启 Intel VT-x 或 AMD SVM虚拟机分辨率固定在 800x600终端字体巨大open-vm-tools 未安装sudo apt install -y open-vm-tools-desktopUSB 网卡在 Kali 里 lsusb 看不到VMware USB 控制器版本低或没点连接设置 USB 3.1虚拟机右下角手动连接设备网卡在 monitor 模式几分钟后自动掉回 managedNetworkManager 服务抢占执行sudo airmon-ng check killairodump-ng 扫描列表里找不到目标 AP网卡被锁定在某个信道airmon-ng stop 后重新 start不指定信道扫描airodump-ng 抓了很久没有 WPA handshake客户端没有重新连接或 AP 开 WPA3 混合模式改用 aireplay-ng 发 deauthAP 侧关闭 WPA3aircrack-ng 报 Zero handshakecap 文件里只有 beacon没有 EAPOL 帧Wireshark 过滤 eapol 确认重抓网卡支持 monitor 但无法注入包aireplay 超时驱动不支持 raw injection换 RT3070 或 RTL8812AU 芯片网卡Kali 无法上网apt update 超时虚拟机 NAT 网卡 IP 冲突删除 VMnet8 重新设置子网段如 192.168.88.0/24这里面 VMware 的 VMnet8 问题值得多说一句。Kali 装完后你可能会想把网络从 NAT 改成桥接模式但 VMware 桥接默认桥接到宿主机有线网卡如果宿主机实际是靠无线连接的那桥接后 Kali 直接失联。解决办法是桥接设置里手动指定绑定的物理网卡或者干脆保持 NAT 模式。抓包实验本身走的是无线网卡直通跟虚拟机的上网方式没有关系NAT 完全够用。5.2 驱动相关为什么有些网卡一插就灵有些折腾一晚上新手最痛苦的就是无线网卡驱动。我实测下来Kali 对比较新的网卡芯片支持并不总是即插即用。比如 Intel AX210系统能识别但 firmware 可能提示掉线。这就是为什么我建议起步就选老牌 Ralink/Realtek USB 网卡。它们的驱动内核里就有monitor 模式支持也验证充分。如果想实时查看驱动加载状态dmesg | grep -i firmware dmesg | grep -i rt3070看到Firmware is ready之类字样就说明固件加载成功。遇到 WiFi 设备被 RF kill 开关禁用的情况有些笔记本有硬件开关注意执行sudo rfkill list如果显示Soft blocked: yes先sudo rfkill unblock all。5.3 抓不到握手包的一种隐蔽场景有一种隐蔽场景值得记录实验 AP 和客户端之间已经建立了会话且双方都保存了密钥此时客户端不会重新启动四次握手airodump-ng 就会一直显示 0 handshake。发 deauth 踢一次是标准解法但如果你的网卡注入能力差deauth 帧发不出去客户端根本不会掉线。这种情况下可以从 airodump-ng 的表中找一个信号强的客户端 MAC然后精准地只踢它一次sudo aireplay-ng -0 1 -a AA:BB:CC:DD:EE:FF -c CLIENT_MAC wlan0mon发送 1 个帧就够踢多了反而容易被客户端漫游到隔壁信号更好的路由器上导致它从另一个 AP 重新连接白等半天。还有一个就是信道问题。2.4GHz 频段的 AP 之间相互干扰如果目标 AP 实际在信道 6但 airodump-ng 扫描时显示它在另一个信道有些 AP 开了自动信道优化扫描期间信道跳变抓包就会失焦。解决方法是锁定--band bg或者在扫描时留意 CH 列的变化。5GHz 频段同理网卡必须支持对应频段的 monitor 模式否则看着在扫其实一片空白。6. 一些实在的体会写这篇文章时的实验环境我家路由器后来被我调成了纯 WPA2-PSK 模式手机连上一瞬间airodump-ng 窗口右上角跳出了WPA handshake几个字那一刻整个链路才算彻底闭环。之后我拿 Wireshark 把四次握手逐帧点开看才真正理解了 EAPOL 那几行关键字段到底起了什么作用。几个建议放在最后。第一实验完了别把网卡留在监听模式里sudo airmon-ng stop wlan0mon然后重启 NetworkManager 服务不然你自己的虚拟机可能断网。第二cap 文件注意保存路径我因为-w lab直接写在 /root 下后来做快照回滚时丢过一次实验数据最好固定一个目录比如 ~/captures 存放。第三多花点时间学 Wireshark 的过滤器eapol、wlan.fc.type_subtype 0x08这类过滤条件才是真正理解无线协议的门把手。整个流程走下来本质上就是一次标准无线安全审计的前半段环境隔离、监听、取证。至于抓到握手包之后的密码验证环节我只建议在明确授权的网络里做。给自己家的路由器测试密码强度你会学到比任何人教的都多的细节。