Kali虚拟机加USB网卡:WiFi渗透测试从环境搭建到WPA2破解实战
2026/9/16 18:03:57 网站建设 项目流程

1. 环境准备:Kali虚拟机与无线网卡的搭桥之路

1.1 为什么选择虚拟机方案做WiFi渗透

说句大实话,接触Kali Linux的朋友十个里有八个是从虚拟机开始的。原因很朴素:不想折腾双系统,怕把主力机搞坏,或者说单纯想先试试水。我自己的第一套WiFi渗透环境也是在VMware里搭起来的,一直用到现在,稳定得让人忘记它的存在。

虚拟机方案真正的优势在于“快照”功能。渗透测试过程中难免把系统配置改乱,或者装了一堆依赖后环境变得不可控,这时候一个快照回滚,十分钟前干干净净的系统立刻恢复,比什么都省心。另一个优势是隔离性:Kali里跑的各种工具、下载的字典包、测试用的脚本,全都封在虚拟机内部,不会污染宿主机环境。

但这套方案也有一个很大的坑,就是无线网卡的直通问题。WiFi渗透的本质是让无线网卡进入监听模式(Monitor Mode),而虚拟机本身无法直接控制物理网卡,需要把USB无线网卡从宿主机“透传”给虚拟机。这块如果没弄明白,后面抓包抓不到、监听模式一开就断网,都是意料之中的事。

1.2 VMware虚拟机安装Kali的完整步骤

先说安装。官方推荐的方式是直接下载VMware镜像文件,不用走一遍完整的ISO安装流程,省时省力。

第一步,去Kali官网的Downloads页面找“Virtual Machines”板块,下载VMware版本的镜像压缩包。文件大概是7-Zip格式,体积在3GB左右,解压后得到一个包含.vmx文件的文件夹。这个.vmx就是VMware的虚拟机配置文件,双击它就能直接导入。

第二步,打开VMware Workstation或者Player,选择“打开虚拟机”,定位到刚才解压的文件。导入过程中记得改一下虚拟机的硬件配置,我这里给出一个实测比较顺手的参考:

配置项推荐值备注
内存4GB以上低于2GB跑工具会明显卡顿
处理器2核以上抓包和跑字典时CPU占用很高
磁盘40GB以上Kali全工具安装后大约占20GB,留点余量
网络适配器NAT模式后续配置网卡时再改桥接

第三步,启动虚拟机,默认登录账号为kali,密码也是kali,登录后第一件事是换源和新系统更新。Kali官方源在国内速度很慢,换到国内镜像源后速度能提升十倍不止。修改/etc/apt/sources.list文件,把官方源注释掉,换成可用的镜像源,然后执行:

sudo apt update sudo apt upgrade -y

这个过程建议放到最后做,因为系统更新和网卡透传配置互不冲突,但在渗透环境搭建阶段优先保证工具链完整更重要。

1.3 网卡透传的两种实现方式

Kali虚拟机装好后,无线网卡分为两种情况:笔记本内置无线网卡和外接USB无线网卡。

笔记本内置网卡:理论上可以在VMware的“虚拟机设置 → 网络适配器”里把模式改成“桥接模式”,让虚拟机直接使用物理网卡。但实测下来,内置网卡在虚拟机里往往只能作为普通上网网卡使用,进入监听模式时经常报错或者抓不到包。原因是VMware对内置网卡的驱动支持有限,尤其是Intel系列网卡,几乎无法进入Monitor Mode。

USB无线网卡:这才是正路。买一块支持监听模式的USB网卡,比如大家推荐的MT7612U芯片网卡或者Atheros AR9271芯片的网卡,插到宿主机上,然后在VMware里做透传。具体操作步骤是:

  1. 点击虚拟机窗口右下角的USB图标,选择“连接”该USB设备。
  2. 如果提示“虚拟机已捕获USB设备”,说明透传成功。
  3. 在Kali里执行iwconfig命令,如果看到wlan0或者类似接口,说明网卡已经被识别。

这里有个容易忽略的细节:USB网卡透传必须在虚拟机关机状态下先设置好USB控制器。VMware的“虚拟机设置”里有一个“USB控制器”选项,默认是“USB 2.0”,但对很多现代无线网卡来说,USB 3.0兼容性更好。建议把USB控制器改为“USB 3.1”,避免因控制器版本不匹配导致设备无法识别或频繁掉线。

另外补充一句,买网卡前一定确认芯片型号是否被Kali内核支持。很多便宜的免驱网卡芯片是RealTek的,虽然Windows下免驱,但在Linux下要么完全没有驱动,要么驱动不完善,监听模式支持极差。选网卡的核心标准就是:芯片是否被aircrack-ng套件原生支持。Atheros AR9271是经典选择,MT7612U是新一代里的热门款。

2. WiFi安全的基础认知与渗透测试的底层逻辑

2.1 802.11协议与路由器的认证方式

在动手之前,得先把WiFi认证的原理讲清楚,否则整个过程就变成了“对着教程敲命令”的盲操作,出了问题完全不知道从哪里排查。

WiFi网络最常用的加密协议是WPA2(现在逐渐过渡到WPA3),它的全称是Wi-Fi Protected Access II。WPA2又分为两种认证模式:一种是个人版(WPA2-PSK),家用路由器基本都用这个,它靠一个预共享密钥(也就是WiFi密码)来认证所有设备;另一种是企业版(WPA2-Enterprise),常见于办公场景,使用802.1X认证服务器做身份验证。

对家庭WiFi渗透来说,目标锁定在WPA2-PSK上。它的认证流程核心是四次握手(4-way Handshake):客户端(Station)和接入点(Access Point)之间通过四次消息交换来确认双方都持有正确的预共享密钥(PMK)。关键点在于,这个PMK是由“WiFi密码 + SSID”通过PBKDF2算法计算出来的,密码长度越长、越复杂,PMK空间就越大,破解难度也随之增长。

为什么要说四次握手?因为整个渗透流程的目标就是抓到这四次握手的数据包。只要抓到了包含PMKID或四次握手的数据包,攻击者就能在本地反复尝试不同的密码,离线暴力破解。

2.2 WiFi渗透的完整攻击链路

一条完整的WPA2-PSK攻击链路是清晰且固定的:

  1. 网卡监听模式:将无线网卡切换到Monitor Mode,使其可以接收附近所有无线信号,而不只是连接到某个路由器上的网络数据。
  2. 探测目标网络:扫描附近的AP(接入点),收集BSSID、信道、加密方式等信息。
  3. 抓取握手包:持续监听目标信道的流量,直到有合法客户端连接到路由器时自动捕获握手包;如果没有客户端连接,则主动发起Deauth攻击(里面讲)强制断开客户端,逼迫其重新连接,从而制造抓包机会。
  4. 离线破解:拿到握手包后,用密码字典进行暴力破解,也就是用字典中的每一个词去尝试计算出PMK,与抓到的握手包进行比对,匹配成功即为WiFi密码。

这条链路看起来简单,但每一步展开都有坑。比如监听模式下别随便换信道、Deauth攻击发太多了会惊动目标用户、握手包抓到后要确认其完整性等。这些细节后面逐一详细说明。

2.3 为什么WPS是最大的突破口

在做WiFi渗透时,很多人的第一反应是“硬刚WPA2密码”,但实操老手会先探测目标是否开启了WPS(Wi-Fi Protected Setup)。WPS这项功能本来是为了简化连接而设计的——按一下路由器上的物理按钮,或者输入一个8位数PIN码就能快速连接。

问题就出在这个PIN码上。WPS PIN码是8位数字,但它的校验机制将其分成了前4位和后4位两组分别验证,后4位中最后一位还是校验位。这样一来,攻击者只需要暴力破解前4位(10000种组合)加后3位(1000种组合),总共最多11000次尝试就能试出正确的PIN码。相比之下,直接暴力破解8位纯数字密码要1亿种组合。11000 vs 100000000,这个差距就是WPS成为突破口的原因。

工具是reaverbully。用reaver对准某台开了WPS的路由器开跑,运气好时几分钟出PIN码,再通过PIN码直接算出现成的WiFi密码。当然,现在许多新路由器默认关闭了WPS或加入了锁定机制,但这个思路依然是评估WiFi安全性的第一步。

3. 实操环节:从监听模式到握手包破解全流程

3.1 检查无线网卡是否支持监听模式

进入正题前,先确认网卡能否支持监听模式。插上USB网卡并透传给Kali虚拟机后,打开终端执行:

iwconfig

如果输出中有一个wlan0wlan1之类的接口,说明网卡已识别。接下来检查它能不能进入监听模式:

sudo airmon-ng

这个命令会列出当前可用的无线接口和PID信息,同时会提示是否有进程会干扰网卡进入监听模式。如果有进程干扰,就用sudo airmon-ng check kill杀掉这些进程。这里请注意,执行完毕后Kali的网络连接会断开,因为NetworkManager被停掉了,属于正常现象。

接着启动监听模式:

sudo airmon-ng start wlan0

成功的标志是输出中提示(monitor mode enabled),并且iwconfig里出现一个名为wlan0mon或类似的接口。如果这里就报错,大概率是网卡芯片不被Kali内核支持,或者VMware的USB透传没做好。

3.2 抓取目标的详细参数

监听模式起来后,用airodump-ng扫描周围环境,这个步骤和“扫描周围有哪些WiFi热点”本质上一样,只不过信息更全。

sudo airodump-ng wlan0mon

屏幕会滚动显示附近所有的AP信息,重点是这几列:

参数含义使用场景
BSSIDAP的MAC地址锁定目标
CH信道精确监听该信道
ENC加密方式(WPA2等)确认目标是WPA2-PSK
CIPHER加密算法(CCMP/TKIP)判断破解方式和字典需求
AUTH认证类型(PSK)确认可离线破解
ESSIDWiFi名称易于识别目标

Ctrl+C停止扫描,然后选定目标,继续用airodump-ng锁定在该目标所在信道,并把抓包结果保存到文件中:

sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon

-c 6表示锁定信道6,-w capture表示抓包结果保存在以capture开头的文件中(会生成.cap.csv等多格式文件)。此时屏幕右上角会显示“WPA handshake”字样,这是关键指标——如果出现了,说明已经抓到了四次握手包。但更多时候目标网络没有客户端在线,握手包永远等不来。

3.3 用Deauth攻击强制握手

如果目标AP下没有活跃的客户端,或者客户端一直在线不重新连接,就永远抓不到握手包。这时就需要主动制造一次“断线重连”,最直接的方式是Deauthentication攻击(简称Deauth攻击)。

Deauth攻击的原理是利用802.11协议中一个比较真实的设计:AP可以单方面取消一个合法客户端的连接。攻击者伪造AP发送Deauth帧给客户端,客户端收到后就会断开连接;大多数设备会自动重新连接,在重连的瞬间,四次握手过程就会发生,攻击者就能在空中截获它。

实操命令如下:

sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan0mon

参数含义:-0表示Deauthentication攻击,5是发送次数,-a后跟AP的BSSID,-c后跟客户端MAC地址。发送完攻击后,回到前面的airodump-ng窗口,观察右上角是否出现了“WPA handshake”提示。

这里有一个经验技巧:发送次数不要太多-0 5发5个包就够了,目的是让客户端掉线并重连。有些新手一上来就-0 10000,结果整个WiFi瘫痪,目标用户开始排查网络问题,反而增加暴露风险。另外,如果目标AP下有多个客户端,可以把-c参数去掉,对全部连接的客户端广播Deauth帧:

sudo aireplay-ng -0 10 -a AA:BB:CC:DD:EE:FF wlan0mon

抓到握手包后,airodump-ng窗口右上角的“WPA handshake”后会显示出目标的BSSID,同时Ctrl+C停止抓包,检查capture-01.cap文件是否生成且不为空。

3.4 离线破解与字典策略

拿到握手包后的破解环节,本质上是一个计算问题:本地设备不断读取字典中的单词,为每个候选密码计算PMK,然后与握手包中的信息比对,匹配即成功。

sudo aircrack-ng -w /path/to/wordlist.txt -b AA:BB:CC:DD:EE:FF capture-01.cap

-w指定字典文件,-b指定目标BSSID,capture-01.cap是抓包产物。如果密码在字典里,很快就跑出来了;如果不在,就是跑一辈子也无解。

所以字典的选择和构造很有意思。网上到处有“256G超全字典下载”,但实际很少用到那么大。从统计结果看,普通人设置WiFi密码的思维局限明显:手机号、生日、固定电话、姓名拼音+数字、常见弱密码。“25个常见wifi密码”能大批量命中家庭网络,就是这个原因。

我自己的做法是构造定向字典,按目标用户的可能习惯生成。比如从对方社交账号信息里提取生日、数字组合、姓名拼写,用crunch工具按规则批量生成:

crunch 8 8 0123456789 -o 8-digit.txt

这条命令生成所有8位纯数字组合,用于暴力破解简单数字密码。更聪明的做法是用cupp工具,根据用户信息自动生成定制字典。

破解速度主要取决于CPU/GPU性能。CPU跑WPA2的运算速度大概在每秒几百到几千次,GPU则能到每秒几十万次甚至更高。用显卡跑是正式做法,笔记本CPU只适合针对很小的字典做验证。

3.5 WPS攻击的实操补充

前面提到WPS是一大突破口,这里把实操补上。工具是reaver

sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -K 1

-K 1表示使用已知的Pixie Dust攻击方式,这个漏洞利用了某些路由器WPS实现中随机数生成器的不安全特性,可以在几分钟内计算出PIN码。如果-K 1失败,尝试普通暴力模式:

sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -N

-N表示不发送NACK信号,针对某些路由器做了优化。

需要注意,reaver的攻击效率依赖于信号质量。目标路由器信号太弱时,PIN码传输过程中经常出现丢包,攻击会停滞甚至卡死。这时候调整网卡位置、外接天线或者改用信号更好的网卡,比在软件层面调参数更有效果。

4. 常见问题与排查实操记录

4.1 网卡无法进入监听模式

这是出现概率最高的问题,我一开始也在这里卡了很久。具体的表现是执行airmon-ng start wlan0后,提示接口已进入监听模式,但运行airodump-ng wlan0mon时一个AP都扫不到,或者运行过程中网卡直接掉线。

排查的第一步是确认芯片是否被支持。执行lsusb查看USB设备的芯片信息,然后去aircrack-ng官网查兼容性列表。不被支持的芯片即使显示接口存在,实际也无法接收无线帧数据,这是硬伤,换网卡是最省事的解法。

第二步是确认VMware的USB透传是否完整。有时USB网卡在宿主机和虚拟机之间反复被抢占,表现为虚拟机里网卡接口时有时无。解决办法是:在VMware菜单栏的“虚拟机 → 可移动设备”里手动选中该USB设备并“连接”,同时在“虚拟机设置”中将USB兼容性调成USB 3.1。

第三步是确认网卡本身的供电问题。USB 2.0接口最大供电电流有限,有些高功率网卡插在前置USB口上会供电不足,导致工作不稳定。解决办法是插在主机背面接口,或者用带供电的USB Hub。

4.2 抓取握手包时WPA handshake迟迟不出现

airodump-ng已经锁定了目标信道,Deauth攻击也发了不少,但“WPA handshake”就是不出现。这个现象常见于客户端重连速度极快,攻击包发出后还没等客户端完成四次握手,抓包窗口就已经错过了。

我的处理方法是开启同时监听多个信道的模式,在airodump-ng启动时增加--band和信道列表参数:

sudo airodump-ng -c 1,2,3,4,5,6 --band bg wlan0mon

这样在Deauth攻击期间,网卡会在这些信道之间快速轮询,抓取握手包的成功率大幅提升。

另一个细节是不要将Deauth攻击和airodump-ng放在同一个终端里跑,它们的输出会互相干扰。正确做法是开两个终端,一个跑airodump-ng持续抓包,另一个跑aireplay-ng发送Deauth帧。

还有一个小技巧:如果客户端数量太稀少,试着等待目标客户的自动重连行为。有些手机即使没掉线,每隔一段时间也会进行一次漫游扫描或重连,安静的等待有时候比主动攻击更有效。

4.3 破解到一半显卡温度过高或内存不足

跑大型字典时,GPU持续满载很容易导致显卡温度飙升,尤其在笔记本上。长时间高温运行可能导致系统强制关机,前功尽弃。

我的习惯是在破解前做好三件事:一是在终端里跑nvidia-smirocm-smi监控显存和核心温度;二是用hashcat--cpu-devices--opencl-devices参数合理分配计算资源;三是把破解目标限定为“验证性的小字典优先”,先跑常见弱密码和定向字典,如果跑通了就没必要上大型字典。

对内存的占用主要发生在字典读取和排序环节。hashcat的--potfile-path可以指定结果保存文件,避免结果丢失。如果内存确实紧张,可以用--remove参数让hashcat在每次破解完一条后立即从字典中删除该条,减少内存占用。

4.4 Deauth攻击没效果的几类原因

  • 客户端和AP距离太远,信号强度过低:Deauth帧即使发出,客户端也不一定能收到。这种情况只能靠近目标或使用大功率天线,软件层面无法解决。
  • 目标路由器启用了802.11w管理帧保护:这是较新的路由器支持的安全特性,它能验证管理帧的合法性,Deauth攻击会被过滤掉。近几年的路由器开始逐步默认开启这个功能,遇到打不动的情况先看看对方是否开了管理帧保护。
  • 发送频率设置过高导致网卡驱动崩溃:有些网卡在持续发送Deauth帧时会驱动崩溃,表现为网卡从系统里消失。这时候只能物理拔插USB网卡,重启监听模式。
现象可能原因解决方案
扫不到AP网卡芯片不支持监听模式更换兼容网卡
能扫描但抓包不稳定USB供电不足换接口或使用供电Hub
握手包迟迟不到信道轮询太慢多信道同时监听
Deauth无效路由器开启管理帧保护换用其他攻击方式
GPU崩溃温度过高或驱动不稳定监控温度并限制资源

4.5 字典命中率太低的优化思路

破解出来的结果往往让人哭笑不得——很多密码根本不在字典里,或者字典列表巨大但命中率低得可怜。我的体会是,针对性强于规模大

比如目标是一个叫“ZhangWei_Family”的网络,屋主大概率姓张,密码里很可能嵌入“zhang”“wei”“家庭生日”等元素。结合常见弱密码规则和生日年份,构造一个几千条的小字典,命中率远高于从网上下载的几十个G的全量字典。

构造字典时可以借助hashcat自带的规则文件,比如best64.rule,它能对现有字典做变形(大小写替换、数字前后缀等),让常用密码的变体被覆盖。

另外还有一种思路是利用已在WPA3网络中暴露的PMKID漏洞。WPA3的过渡模式(Transition Mode)下,路由器同时开启WPA2和WPA3,可以通过抓取PMKID而非四次握手数据包来破解。PMKID抓取不需要等待客户端上线,对无人在线的目标网络也可以直接攻击。使用hcxdumptoolhcxpcapngtool处理抓包文件,再交给hashcat破解。

5. 关于WiFi安全与防御的额外提醒

写了这么多WiFi渗透的实操,最后想聊几句被大家忽略的方向——怎么防。

任何技术本身没有好坏之分,关键在用途。了解WiFi渗透的最正经意义,其实是评估自己的网络安全性。把自家路由器当成目标测试一遍,找出薄弱点,这是完全合理且应该做的事。测试完以后,顺手做几件事:

  1. 把WiFi加密方式升级到WPA2-AES或WPA3,关掉TKIP。
  2. 关闭WPS功能,这已经是被验证无数次的漏洞入口。
  3. 设置强密码。推荐12位以上,大小写字母加数字加特殊符号的组合。别再用纯数字生日了,我在实际破解中见到最多的就是这种。
  4. 调整路由器管理后台的登录密码,不要继续用admin/admin这类出厂默认凭据。
  5. 开启路由器的访客网络隔离。

最后分享一个原则:如果要做实验,只对自己家的设备和明确授权的目标测试。别人的WiFi网络,哪怕只是顺手破来免费用几天,都是明确的违法行为,而且定位非常简单——从路由器侧看到的不正常Deauth攻击记录就是直接证据。想做实验了,家里搭一个测试环境,用自己的路由器、自己的客户端,完全够摸索这套流程了。

技术学习最重要的是知道自己每一步在做什么,为什么这样做,边界在哪里。把这些想清楚了,跑通了流程,比单纯会敲几条命令有价值得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询