
1. 先划清楚这条线Kali 下的 WiFi 密码测试能做什么、绝对不能做什么几年前我在一个内网安全兴趣小组里第一次看到有人用 Kali 抓到隔壁办公楼的握手包然后跑了两小时字典什么都没出来。当时大家笑他网卡不行但真正的问题不是网卡——是他压根没搞清楚自己在做什么。很多人搜Kali 暴力破解 WiFi 密码脑子里想的是输入一条命令、等几分钟、密码自己跳出来。现实是这套流程有明确的适用前提、有非常硬的算力天花板而且一旦用错对象性质就完全变了。这篇东西写给两类人一类是想在自己搭的无线实验环境里搞懂 WPA2 认证到底怎么被攻防的、准备考安全相关认证的另一类是自己路由器密码忘了、或者怀疑自家网络被蹭、想从防守侧理解风险点的。如果你打算拿它去试别人家的网后面所有内容对你都没意义——那不是技术问题是法律问题。先把结论摆在最前面省得有人跳过前面直接翻到命令部分在没有书面授权的网络设备上抓包、重放、跑字典属于未经授权访问他人网络的行为绝大多数地区都有明确的法律后果。我在实际工作里接触过的合规做法只有三种场景一是自己名下的路由器或自己搭建的测试 AP二是客户签了授权书、明确了测试范围和时段、有联系人待命的渗透测试项目三是纯离线的实验靶场比如用树莓派做个独立热点跟任何真实生产网络物理隔离。除了这三种别碰。1.1 WPA2-PSK 的四次握手到底保护了什么要理解暴力破解这四个字为什么有点名不副实得先知道 WPA2-PSK 在认证那一刻发生了什么。家用路由器绝大多数跑的是 WPA2-PSK也就是预共享密钥模式——所有设备共用一个口令这个口令本身从不上网传输所以你在空中接口上永远抓不到它。流程是这样的客户端和 AP 各自拿口令 SSID经过 PBKDF2-HMAC-SHA1 迭代 4096 次算出一个 256 位的 PMK成对主密钥。这一步是纯本地的、确定性的——同样口令和 SSID算出来永远是同一个 PMK。然后四次握手里AP 发一个随机数 ANonce客户端回一个 SNonce双方用 PMK 加上两个随机数和双方 MAC 地址推导出 PTK。最后客户端发一个带 MIC 校验值的 EAPOL 帧AP 验证通过就建立连接。关键就在这个 MIC。它是用 PTK 算出来的而 PTK 依赖 PMKPMK 依赖口令。所以攻击者抓到的不是口令而是 ANonce、SNonce、两个 MAC 和一个 MIC 这一组数据。接下来做的是离线穷举猜一个口令——算 PMK——算 PTK——算 MIC——跟抓到的 MIC 比对。一样口令就对了。这里面没有任何在线攻击的成分纯粹是本地算力对撞。这个机制的好处是抓包只需要一瞬间攻击者拿到握手包之后可以在自己机器上慢慢算受害者毫无察觉。坏处是它把安全性完全押在口令的熵上。口令弱握手包一抓等于密码交出去了口令强握手包抓到了也就是个 300 字节的废数据。1.2 授权测试和非法入侵中间那条模糊的线很多人会自我安慰我只是抓个包又没真正连进去。这条线其实没那么模糊。在大多数司法管辖区未经授权干扰无线电通信、截取通信内容、尝试获取网络访问权限各自都可能是独立的违规项——你可能连算出密码这一步都没走到光是在别人的信道上发去认证帧就已经越界了。我在做授权测试时有个习惯把授权范围打印出来放在桌上写上 SSID、BSSID 前六位、测试时间窗口、紧急联系电话。这不是形式主义。有次我测一个客户的办公区隔壁公司用的是同型号路由器、默认 SSID 前缀都一样扫出来十几个 AP靠 BSSID 才能确定哪个是授权目标。要是一时手快把隔壁的也给去认证了那场面很难看。还有个容易被忽略的点去认证攻击本质上是干扰服务。即使你有授权测自己的 AP实验期间那台 AP 上的其他设备家人的手机、电视、智能音箱会被反复踢下线。所以做实验最好用一台没有任何业务设备连接的独立热点别拿家里正在用的主路由折腾。1.3 这套流程真正能解决的三个现实问题说到底学这套东西的价值在哪我总结下来是三个。第一理解风险从哪来。你不是为了黑别人是为了知道自己家网络被盯上时对方大概会怎么做、卡在哪一步、什么防护措施真正有效。知道了 PBKDF2 迭代和 MIC 比对的原理你就明白为什么改个复杂密码比换个贵路由器有用得多。第二评估自己的口令强度。你可以用自己抓的握手包和不同的字典去测直观感受到我那个 8 位生日密码在字典面前撑了几秒。这种体感比看任何安全建议都有说服力。第三排查自家网络异常。频繁掉线、网速莫名其妙变慢、路由器后台出现陌生设备——这些现象背后可能是蹭网也可能是信道干扰或者设备故障。掌握扫描工具的基本用法至少能让你在投诉宽带之前先看一眼周围有几个 AP、自己占的信道挤不挤。注意本文所有操作步骤均以自己拥有或已获书面授权的无线设备为前提。任何针对非授权网络的操作本文不提供支持也不建议尝试。2. 把实验室框在自己路由器上Kali 环境与网卡的坑环境这一块我见过太多人卡在第一天。不是 Kali 装不上就是网卡不认、监听模式起不来。这些问题跟破解本身没关系但会消耗掉你 80% 的耐心。所以先把地基打牢。2.1 Kali 的四种装法按实验需求选Kali 装法大概有这么几种选哪种取决于你要不要 USB 直通无线网卡——这是核心变量。安装方式适合场景无线网卡直通主要坑虚拟机VMware/VirtualBox日常学习、课程实验、随时快照回滚需要 USB 直通配置稍麻烦USB 控制器版本选错网卡认不到物理机双系统长期做无线实验要跑满网卡性能原生支持最省事分区风险、驱动缺失U 盘 Live 模式临时应急、一次性实验原生支持重启后配置和抓包文件全丢WSL / 容器纯命令行工具链练习基本不可能直通无线网卡没内核无线子系统监听模式免谈如果你只是想把命令跑一遍看输出虚拟机最省事快照一下随便折腾。但要做真正的无线抓包WSL 这条路直接排除——它跑在 Windows 内核的兼容层上没有独立的无线子系统iw这类工具基本没戏。U 盘 Live 模式我踩过坑有一次抓了两小时的包重启全没了因为 Live 环境的文件系统是内存盘。要用 U 盘务必配合持久化分区。虚拟机的 USB 直通是重灾区。以 VMware 为例你得在虚拟机设置里把 USB 兼容性调到 3.x然后把外置网卡从宿主机断开、连线到虚拟机里。这里有个细节如果你直接勾选连接宿主机和虚拟机可能会抢设备表现为网卡在虚拟机里一闪就消失。正确做法是先让宿主机把设备弹出不是拔掉再在虚拟机的可移动设备菜单里选连接。VirtualBox 类似需要装扩展包才有 USB 2.0/3.0 支持。2.2 无线网卡才是决定成败的硬件笔记本自带的无线网卡99% 做不了这件事。不是驱动问题是芯片本身不支持监听模式和帧注入——厂商为了省电和合规把这些能力在固件层面阉割了。所以你必须要一块外置 USB 网卡而且得挑芯片。判断标准就两条能不能进监听模式monitor mode能不能注入帧packet injection。前者让你能收到不属于自己的所有帧后者让你能发出伪造的去认证帧。市面上常见的方案里基于 Atheros AR9271 的芯片兼容性最好、价格便宜但只支持 2.4GHzRalink 的 RT3070 系列也是老牌选择如果想要同时覆盖 5GHz得找支持双频且驱动开放的芯片通常贵不少而且 Kali 里可能要额外编译驱动。还有个隐蔽的坑接口带宽。USB 2.0 在高速抓包时会丢帧尤其是周围 AP 多的时候。建议优先用 USB 3.0 口并且在虚拟机里也确保走的是 USB 3.x 控制器。我有次怎么都抓不全握手包换了个口就好了——后来发现是插在了 USB 2.0 的延长线上。2.3 监听模式跑通前的三次确认进系统之后别急着敲工具先按顺序确认三件事。第一步看网卡认没认出来。iwconfig或者ip link能看到接口名通常是wlan0这种。如果根本没有无线接口说明驱动没加载或者 USB 直通没成功。这时候别去网上乱找教程先回虚拟机设置确认设备连接状态。第二步检查是否支持监听。iw list输出里搜 Supported interface modes看到monitor才算过关。这一步能过滤掉一大半看起来能用其实不能用的网卡。要是这里没有 monitor后面所有操作都是白费。第三步起监听模式。传统做法是airmon-ng start wlan0它会创建一个wlan0mon之类的接口。不过现在有些驱动直接支持iw dev wlan0 set monitor none方式更干净。起完之后用iw dev确认接口类型变成了 monitor。这里有个经验airmon-ng 有时会把 NetworkManager 搞挂表现为监听模式起来了但网卡完全收不到包。原因是 NetworkManager 在后台抢管理接口。稳妥的做法是先airmon-ng check kill把可能干扰的进程停掉用完再重启服务。别嫌麻烦这一步能省掉你半小时的困惑。3. 一次完整的握手包捕获扫描、逼认证、判断完整性环境搞定之后真正的操作其实只有三步但每一步都有判断标准不是敲完命令等结果就完事。3.1 扫描阶段读懂 airodump-ng 那一屏信息启动扫描的命令是airodump-ng wlan0mon。屏幕上会刷出一堆 AP 和客户端信息第一次看会觉得眼花。挑几个关键列说清楚。BSSID是 AP 的 MAC 地址这是唯一标识SSID 可以重名但 BSSID 不会。做授权测试时就是你确认目标的依据。CH是信道2.4GHz 常用 1、6、11 三个互不重叠的周围 AP 多了之后这里会非常拥挤。ENC是加密方式WPA2是目标WEP基本已经绝迹了真有的话处理方式完全不同OPN是开放网络。CIPHER是加密算法一般是 CCMP。AUTH是认证方式PSK就是预共享密钥。下半屏是客户端列表STATION列是已连接设备的 MACBSSID列是它连着哪个 AP。这一列非常关键——后面逼认证需要一个在线客户端做靶子这里就是找靶子的地方。实际操作里我一般会加参数筛一下airodump-ng --band a wlan0mon只扫 5GHz或者--channel 6锁定单一信道。锁定信道是必须的因为网卡一次只能待在一个信道上跳频扫描虽然能看到更多 AP但抓握手包时如果正好跳到别的信道关键帧就错过了。确定目标后立刻用-c锁死信道。3.2 抓包阶段为什么非得逼客户端重新认证确定目标之后命令变成这样airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon。这会锁定信道 6、只盯这一个 AP把抓到的包写进capture开头的文件里。问题是握手包只在设备连接的那一刻产生。如果你只是安静地监听很可能等半天一个握手都抓不到——因为周围设备早就连上了不会无缘无故重新认证。这时候就需要去认证环节。原理很直白给已连接的客户端发一个伪造的、来自 AP 的断开帧客户端信以为真掉线然后自动重连重连过程就是一次完整的四次握手。工具是aireplay-ng命令形如aireplay-ng -0 5 -a AP的BSSID -c 客户端MAC wlan0mon-0表示去认证5是发送次数。这里有几个必须知道的点。第一发送次数别贪多5 到 10 次足够狂发只会干扰周围一片设备还容易触发部分路由器的防护机制。第二-c指定单个客户端比广播式去认证干净得多广播会把所有连着的设备全踢掉在授权测试里这是很不专业的做法。第三如果目标启用了 802.11w管理帧保护去认证帧会被丢弃这招就失效了——这恰恰是 WPA3 的默认配置之一后面防守那节会再展开。去认证之后回到 airodump-ng 的界面右上角会有一个提示大致是WPA handshake: AA:BB:CC:DD:EE:FF。看到这行才算成功。没看到就再试一次但别连续试超过两三分钟反复踢同一个设备会很明显。3.3 握手包到底完整不完整抓到提示不等于抓全了。四次握手由四个 EAPOL 帧组成做离线比对至少需要包含 MIC 的那个帧通常是第 2 帧或第 4 帧。如果只抓到前半段后续跑字典会直接报错说没有有效的握手。判断方式有这么几种。最直接的是看 airodump-ng 的提示现代版本会显示抓到的是完整握手还是部分。其次是用aircrack-ng capture-01.cap检查它会列出所有识别到的网络和握手状态。再进一步可以用tshark或 Wireshark 打开过滤eapol看有几个包、哪个带 MIC。我踩过一个坑同一次捕获里有多个 AP 的握手包混在一起因为早期没锁信道。这时候 aircrack-ng 会让我选编号选错了就是给别的网络跑字典白费算力。所以从抓包那一刻起就锁信道、锁 BSSID是最省事的做法。还有一个细节捕获文件是分卷的-01.cap、-02.cap……跑字典时要针对正确的那个文件或者干脆用带前缀的通配。文件名混乱是这个环节最常见的低级错误。4. 从握手包到明文字典和算力的真实较量到这一步最难的部分其实已经过去了。剩下的就是纯粹的算力问题——也是大多数人对暴力破解这个词误解最深的地方。4.1 PBKDF2 的 4096 次迭代慢在哪前面提过每个候选口令都要先算 PMK这个过程是 PBKDF2-HMAC-SHA1迭代 4096 次。这意味着什么如果你用一块普通 CPU单核每秒大概只能算几十到几百个候选。一块主流显卡靠并行计算能跑到每秒几十万个候选具体数字取决于显卡型号和哈希实现。看起来挺快我们把密钥空间摆出来就明白了。口令构成密钥空间按 20 万次/秒估算现实结论纯 8 位数字10^8约 500 秒字典覆盖到位的话几分钟内出结果6 位小写字母26^6 ≈ 3.1 亿约 26 分钟也很脆弱8 位小写字母26^8 ≈ 2.1e11约 12 天单独穷举性价比很低8 位小写字母数字36^8 ≈ 2.8e12约 160 天基本不考虑纯穷举10 位大小写数字62^10 ≈ 8.4e17天文数字不必想这张表是我自己实测后整理的量级估算实际速度受显卡、驱动、系统负载影响可能有数倍偏差但数量级不会错。看到160 天这几个字你就该明白所谓暴力破解99% 的情况下并不是真的穷举而是字典命中。也就是说这套流程能不能成功几乎完全取决于受害者的口令是否落在一个精心构造的候选列表里。纯随机 12 位口令用家用设备是算不出来的——这就是 WPA2 至今没有被彻底打穿的原因。4.2 字典决定成败真实口令的分布规律既然靠字典那字典质量就是命门。常见的字典来源大概有这几类。泄露口令集是最基础的原料包含大量真实世界的弱密码比如各种password变体、12345678、qwerty之类。这类字典的问题是有明显的年代特征和语言偏向对非英语地区的用户命中率会打折。数字模式字典在特定地区特别有效。比如 8 位或 11 位手机号、生日年月日各种拼接格式、门牌号、身份证后几位。我做过一次统计一个地区里被蹭网成功的案例口令是纯数字的占了相当大比例——因为很多人图省事直接拿手机号当 WiFi 密码。规则变形是把基础词库用规则引擎扩展。比如拿一个常见词套上首字母大写末尾加 123中间插年份这些规则能生出一个数量级更大的候选集。这套思路比单纯堆词库高效得多。路由器默认口令表也值得单独列出来。有些型号的默认密码是固定的或者有可预测的生成规则如果用户从没改过字典里几行就能覆盖。我的经验是不要指望下载一个万能字典先分析目标场景再选字典。如果目标是个家庭网络用户很可能是普通家庭成员优先上生日、手机号、姓名拼音加数字这几类如果是小公司重点在店名、地址、电话号码。盲目堆一个几十 GB 的大字典跑起来几天几夜还不一定命中性价比极低。4.3 aircrack-ng 还是 hashcat工具怎么选抓完包之后跑字典的主流工具是两个。aircrack-ng capture-01.cap -w wordlist.txt是最经典的组合。优点是直接读.cap文件不需要转换格式CPU 就能跑适合小字典快速验证。缺点是 CPU 效率低大字典跑起来非常慢。hashcat是性能路线。它把抓包文件转成自己的格式新版本用hcxpcapngtool转成.hc22000然后交给 GPU 并行计算。同样一块显卡hashcat 的速度可能比 aircrack-ng 高一个数量级以上。代价是环境配置麻烦一点要装显卡驱动、OpenCL 运行时有时候还要处理驱动版本冲突。我的实际做法是分两段先用小字典加 aircrack-ng 快速筛一遍几万条的字典几十秒就出结果能中就中了不行再上 hashcat 和大字典跑通宵。这样既省时间也省电。hashcat 有几个参数值得说。-m 22000是指定 WPA-PBKDF2 的哈希模式老版本是 2500现在更新了格式。-w 3是工作负载档位日常用 2 或 3别直接拉 4容易把机器跑到过热降频。还有--session参数长任务一定要起个会话名中断了可以--restore恢复不然跑了十小时断电一次全白费。4.4 关于成功率的心理预期说个可能让人扫兴的现实这套流程的成功率跟目标口令强度强相关而且随着路由器固件的演进在持续下降。我做过几十次实验都是自己的 AP 或授权设备大概的分布是这样的默认口令或者纯数字口令基本秒破常见的姓名拼音123这类字典到位的话几分钟到几小时稍微有点随机性的 8 位混合口令成功率断崖式下跌一旦超过 10 位且有大小写和符号家用设备就别想了。还有个容易被忽略的因素SSID 参与 PMK 计算。这意味着你不能把 A 网络跑出来的字典结果套到 B 网络哪怕口令完全一样。有些工具支持预计算 PMK 表来加速但表的大小和 SSID 数成正比实际意义有限。提示如果字典跑了几小时毫无动静别怀疑工具先怀疑字典。换个思路从目标的可获取信息名字、生日、店名、手机号重新构造候选列表命中率比堆量高得多。5. 把同一套知识反过来用给自己的网络加几道锁学攻击的最终目的是防守。下面这几条是我给别人做网络加固时必查的清单也是我从实验里得到的最有用的部分。5.1 WPA3、802.11w 和 WPS三个开关要认清WPA3 是第一优先级。它把认证换成了 SAE对等实体同时认证握手过程不再能被离线字典攻击——因为每次尝试都要跟 AP 实际交互速率被物理限制死。如果你的路由器支持 WPA3哪怕只是 WPA2/WPA3 混合模式也建议开起来。混合模式有个妥协为了兼容老设备WPA2 那条路仍然可被攻击但至少新设备走的是安全通道。**802.11w管理帧保护**是另一个关键项。开启之后去认证帧会被加密验证前面那招逼客户端重连直接失效。WPA3 默认要求开启WPA2 模式下手动开启有时会导致个别老旧设备连不上需要权衡。WPS 必须关掉。这个功能本意是方便用户一键配网但它的 PIN 码机制存在设计缺陷PIN 的尝试次数可以被绕过理论上几小时内能穷举出来。很多路由器默认开启且藏在高级设置里。进了后台第一件事就是找到它、关掉。5.2 什么样的口令才算够结合前面的密钥空间表我给的建议很具体至少 12 位包含大小写字母、数字最好再加一到两个符号而且不能是任何有意义的词或它们的简单变形。为什么是 12 位因为从算力角度看12 位随机混合字符的密钥空间已经远超家用设备的处理能力字典又不可能覆盖随机串两条路都堵死了。为什么强调不能有意义的词因为字典和规则引擎最擅长的就是捕捉人脑可记忆的模式——你觉得自己想了个很妙的组合可能正好落在某个规则的第 37 条上。一个实用技巧用四个不相关的词拼起来中间插符号和数字。比如把几个毫不相干的词组合长度够、好记、还不在任何字典里。这种口令短语的思路在业界已经推了很多年比强行记一串乱码靠谱得多。5.3 家庭和小型办公网络的加固清单除了上面三项还有几条低成本高收益的改掉默认 SSID。不是为了隐藏而是避免暴露路由器型号同时减少跟邻居撞名导致的连接混乱。关闭远程管理。很多路由器有云管理远程访问后台功能默认开着这是比 WiFi 口令更大的风险面。固件保持更新。厂商会修补认证相关的漏洞老固件可能连已知问题都没修。访客网络隔离。给客人单独开一个访客 SSID并且开启客户端隔离避免访客设备互访你家内网设备。定期看设备列表。路由器后台一般能看到当前连接设备发现陌生物理地址就查一下必要时改口令并踢掉。不要用隐藏 SSID当安全措施。隐藏只是不发广播扫描工具照样能通过客户端探测帧发现而且会给自己的设备连接带来麻烦收益几乎为零。6. 我在实验里踩过的那些坑以及对应的排查思路这部分是最脏的但也是最值钱的。上面所有流程听起来顺实际动手时八成会卡在某个环节而且报错信息往往毫无指向性。我把自己反复遇到过的几类问题整理出来。6.1 网卡认得到但起不了监听模式现象是iwconfig能看到接口但airmon-ng start之后没生成 mon 接口或者生成了却收不到任何包。排查顺序是这样先用iw list确认芯片固件是否报告支持 monitor如果不支持换网卡没有别的办法。如果支持但起不来检查是不是 NetworkManager 在抢——airmon-ng check kill一下再试。还有一种情况是接口被 rfkill 软屏蔽rfkill list能看到rfkill unblock all解决。虚拟机的场景更复杂。USB 直通后网卡在虚拟机里可能出现两个接口一个虚拟的、一个真实的监听模式必须起在真实那个上。判断方法是看驱动名虚拟接口通常是virtio之类。6.2 提示抓到了握手跑字典却说无效这个我遇到过至少三次原因各不相同。最常见的是捕获文件搞错了——抓包时生成了-01.cap、-02.cap跑字典时指向了不含握手包的那个。解决办法是先对每个文件都跑一次aircrack-ng检查看哪个报告有有效握手。第二种原因是握手不完整只有前两帧没有带 MIC 的帧。这时候只能重抓建议多踢几次、并且保证抓包设备和目标之间的信号质量。信号弱的时候丢帧率极高握手包本身就是两三帧的事丢掉关键帧的概率不小。第三种比较隐蔽同一信道上有多个 BSSID工具识别错了目标。用--bssid明确指定能规避这个问题。6.3 跑字典跑到一半系统卡死或重启hashcat 把显卡跑到满载散热跟不上就会降频甚至触发保护性关机。我在笔记本上跑过一次通宵第二天早上发现机器重启了进度全丢。对策有三条。一是限制负载用-w 2或者手动限制功率速度损失一部分但能跑完。二是用会话恢复机制--sessionxxx加定期检查点中断后能续上。三是监控温度跑之前先看看散热环境笔记本垫高、清灰别放在床上或者沙发上。台式机的话机箱风道比显卡型号更重要。还有一种假卡死内存不够系统开始疯狂换页。大字典加规则引擎展开后候选数量可能爆炸式增长内存吃满。这时应该分段跑把大字典拆成几个小文件依次处理而不是一次性喂进去。6.4 虚拟机里一切正常物理机换过去就不行反过来也常见。原因是虚拟机和物理机的驱动栈不同同一个网卡在两个环境下的表现可能完全不同。我的建议是实验环境选定一个就别乱换。如果你在虚拟机里跑通了全流程就一直用虚拟机快照功能在反复实验时太香了。如果确实需要更好的性能比如要跑 GPU 字典那就把字典计算放到物理机上抓包环节留在虚拟机里两边通过共享文件夹交换.cap文件。共享文件夹这块也有个坑虚拟机里挂载的共享目录hashcat读文件时可能因为权限或者文件锁报错。稳妥做法是把文件复制到本地磁盘再跑别直接跑共享目录里的文件。6.5 关于时间和心态最后说点技术之外的。这套流程从环境搭建到跑出结果第一次做很可能花掉一整个周末而且大概率以没跑出来告终。这不是你操作错了是这件事本身就这样——弱口令秒破强口令永远破不了中间地带靠字典质量碰运气。我自己最有收获的一次不是成功跑出了一个口令而是拿自己的路由器做实验时发现我自以为挺复杂的密码用针对性构造的字典跑了不到十分钟就出来了。那一刻的震撼比任何安全培训都管用。后来我把家里和工作室所有网络的口令全换成 15 位以上的短语组合访客网络做了隔离WPS 关掉固件更新到最新。如果你也打算动手记得把范围框死在自己名下或者有书面授权的设备上。测完记得把监听模式关掉、NetworkManager 重新启起来别留下一个半残的网络栈影响日常使用。抓包文件也别随手乱放里面包含你网络的 BSSID、客户端 MAC 和握手数据——哪怕是自己的处理完删掉也比留着安心。