ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Kali Linux WiFi安全测试:从抓包到字典爆破的完整实战指南

Kali Linux WiFi安全测试:从抓包到字典爆破的完整实战指南 说实话Kali Linux 里最能让人产生“我在做安全测试”实感的就是这套 WiFi 抓包爆破流程。终端里跑几条命令附近所有无线网络的 BSSID、信道、加密方式全列出来锁定目标后等一个客户端重连四次握手包一到手字典一跑密码直接明文打在屏幕上。这套操作在安全圈里属于入门必修课也是很多人装 Kali 之后第一个想试的功能。先说清楚边界这篇文章写的是 WiFi 安全测试的标准方法只适用于你自己的路由器、实验室环境或者经过明确书面授权的项目。没有授权跑去抓别人的包这是违法边缘的试探不是技术问题。技术本身不分好坏但用来干什么决定了性质。我下面所有操作建议直接对着自己家的路由器练练熟了自然知道这套流程的每一个环节是怎么回事。整个过程拆开看其实就三板斧让网卡进入监听模式、抓到合法用户的四次握手包、用字典跑出密码。但就是这三板斧几乎每个环节都有新手会踩的坑。这篇文章我会把完整流程、背后的原理、还有实际测试时总结的排查经验全写出来尽量让你照着走一遍就能通。1. 动手前的准备工作网卡、虚拟机和 Kali 环境1.1 为什么必须选择一款支持监听模式的无线网卡很多人第一步就卡住了打开 Kali 发现无线网卡根本没法进入监听模式airmon-ng 直接报错或者没反应。这大概率不是你操作问题而是硬件不支持。监听模式需要网卡驱动和芯片支持 RFMON 模式不是所有无线网卡都能干这事。笔记本内置的 Intel 无线网卡非常典型它支持正常连 WiFi但在 Kali 里开监听就会各种异常或者干脆 AP 模式都不认。这里我直接给结论想省心买一块外置 USB 无线网卡芯片认准 Atheros AR9271 或者 Realtek RTL8812AU。AR9271 是很多入门教程里的老朋友便宜、驱动在 Kali 里开箱即用但只支持 2.4GHz速度一般。RTL8812AU 贵一点支持双频5GHz 也能抓缺点是部分版本需要手动装驱动。我自己测试的结论是你只是练习、想跑通流程AR9271 足够想认认真真做无线安全评估RTL8812AU 起步。注意不要买那种号称“免驱”的淘宝爆款网卡很多芯片方案在 Linux 下根本没有驱动买回来插上只能干瞪眼。如果你把 Kali 装在虚拟机里那还要多一步把 USB 网卡直通给虚拟机使用物理机和宿主机之间不能共用这个网卡。这一步很多教程都不讲导致虚拟机里iwconfig根本看不到 wlan0 接口。1.2 虚拟机还是实体机网卡直通的常见坑Kali 装在虚拟机里做实验完全没有问题我用 VirtualBox 和 VMware 都跑通过整个流程。关键在于把 USB 无线网卡“直通”给虚拟机而不是让宿主机把它抢走。VirtualBox 的操作路径是虚拟机设置 - USB 设备 - 添加 USB 设备筛选器选择你的无线网卡。VMware 则是虚拟机设置 - USB 控制器 - 连接 USB 设备把网卡从列表里选中。直通之后虚拟机的lsusb能看到这个网卡设备iwconfig才能识别到无线接口。这里有个非常常见的问题宿主机先把网卡占用了虚拟机里怎么都识别不到。解决思路是先拔掉网卡在虚拟机设置里添加筛选器再插入网卡让虚拟机直接捕获设备。如果虚拟机里还是看不到检查一下是不是 VMware 的“自动连接”选项被别的设备抢了。实操心得VirtualBox 的 USB 筛选器偶尔会失效我遇到过一次怎么直通都失败后来发现是扩展包版本和 VirtualBox 版本不匹配。重装 Oracle VM VirtualBox Extension Pack 就好了。如果你是直接用物理机装 Kali那就没这么多破事。但多数人不愿意为了一个功能折腾主力机所以虚拟机直通是最常见的选择。老老实实把 USB 直通这一步搞定后面才开始进入正题。1.3 Kali 环境快速确认与基础配置装好 Kali、网卡也直通成功之后建议先跑三个命令确认环境sudo airmon-ng这个命令会列出当前系统里所有的无线网卡接口和驱动状态。能看到你的外置网卡说明环境基本就绪。iwconfig这里确认无线接口的名称一般会显示为 wlan0。如果你的机器里还有别的无线设备也可能是 wlan1后面所有命令都要跟着实际名称走不要盲目照抄教程里的 wlan0。sudo airmon-ng check kill这个命令会搜索并结束可能干扰监听模式的进程尤其是 NetworkManager。注意执行之后系统网络管理会中断你的 Kali 可能从有线网络上也掉线操作前要有心理准备。这一步不是必须的但如果后面进入监听模式后频繁掉线或网卡无响应那就回来执行一下。另外提醒一点Kali 默认的wordlists目录里自带一份 rockyou.txt 密码字典的压缩包路径是/usr/share/wordlists/rockyou.txt.gz。这个字典非常经典后面爆破时大概率要用到建议先解压好sudo gunzip /usr/share/wordlists/rockyou.txt.gz解压后的大小大概 140MB 左右里面包含了一百多万条真实泄漏的密码跑弱密码绰绰有余。2. 抓包原理为什么 WPA2 四次握手是破解的关键2.1 WPA2-PSK 认证流程速览你可能会好奇为什么抓包爆破不是直接“拦截数据”然后“解出密码”而是要费劲抓一个叫“四次握手”的东西。这里用生活化的方式解释。WPA2-PSK 的加密体系可以理解成路由器和手机要建立一条加密隧道但它们不能直接明文通信因为那样就等于在大街上喊暗号。于是双方先协商一个”临时会话密钥“这个密钥由三部分组成双方各生成一个随机数ANonce 和 SNonce再加上双方的 MAC 地址最后再加上一个”预共享密钥“也就是你路由器后台设置的 WiFi 密码术语叫 PSK。关键来了这个 PSK 并不直接在网络里传输。它只是用来参与运算最终生成一个会话密钥 PMK。攻击者抓到的四次握手包里包含 ANonce、SNonce、双方的 MAC 地址还有一串用于校验的 MIC 值。因为 PMK 实际上是基于 PSK 推导出来的所以只要字典里有一个密码能通过同样的运算过程计算出和握手包里一致的 MIC 值那这个密码就是 WiFi 密码。这就像一个保险箱钥匙不直接出现在现场但现场留下了锁的构造图。你只要把字典里每个候选密码都做成一把钥匙去试能打开的就是真钥匙。2.2 字典爆破为什么能成功既然要一个一个试密码为什么不直接用纯暴力把所有 8 到 63 位的可能性都跑一遍我算过一笔账WPA2 密码最短 8 位如果纯数字是 1 亿种组合听起来不多但加上大小写字母和符号以后8 位密码的空间量级是 10 的 14 次方以上。就算 GPU 跑得非常快这也是天文数字。但现实中绝大多数家用 WiFi 密码根本没有那么复杂。很多人用的是手机号、生日、纯数字 8 位或者是 “12345678” 这种 Level。字典爆破的原理就是把人类最可能设置的密码先试一遍。这是一个概率游戏不是穷举游戏。一个好的字典配上合理的规则可能在几万条甚至几百条的时候就撞出密码而暴力破解可能跑到天荒地老。这就是为什么字典是整个流程里的灵魂。工具只是执行者字典才是决定成败的关键。后面我会专门写一节怎么准备和生成字典。2.3 WPA3 和新型网络对传统方式的限制如果你在扫描时看到 ESSID 旁边加密方式标着 WPA3或者 WPA2/WPA3 混合模式那下面这套抓握手包爆破的方法就要打个问号了。WPA3 引入了 SAESimultaneous Authentication of Equals协议设计目标之一就是抵御离线字典攻击。它不再像 WPA2 那样可以抓一个握手包慢慢跑字典每次尝试都需要和路由器实时交互这就让离线爆破基本失效了。所以这套传统流程的适用场景是目标网络是 WPA2-PSK 加密或者 WPA2/WPA3 混合模式下客户端被迫降级到 WPA2。随着时间推移这套方法会越来越局限但在目前存量路由器里WPA2 依然占据了非常大的比例。这也是为什么这个教程在 2026 年的今天依然有实际价值。3. 完整实操流程从监听模式到密码到手3.1 开启监听模式与扫描目标环境确认无误后第一步是让网卡进入监听模式sudo airmon-ng start wlan0执行成功后原来叫 wlan0 的接口会变成 wlan0mon注意名字变了后面所有工具都要用这个新名字。如果你的接口本来就叫别的名字也是一样处理airmon-ng 会在返回信息里告诉你新的接口名。接下来开始扫描周围的无线网络sudo airodump-ng wlan0mon屏幕上会不断刷新附近所有 Wi-Fi 网络的信息主要有几个字段值得关注BSSID接入点的 MAC 地址每个路由器唯一的标识。PWR信号强度负数绝对值越小信号越强。太弱的信号抓包会很不稳定。CH信道Wi-Fi 在 2.4GHz 和 5GHz 频段里分了很多信道监听需要锁定到目标所在信道才能收到数据。ENC / AUTH加密方式和认证方式看到 WPA2 / PSK 组合的目标才适合走爆破流程。ESSID网络名称就是你在手机里看到的 Wi-Fi 名字。扫描的时候不要着急多等 30 到 60 秒让列表尽量完整。如果目标在 5GHz 频段ar9271 这种只支持 2.4GHz 网卡是看不到的所以前面才强调网卡选型直接决定你的能力边界。3.2 锁定目标抓取握手包找到目标之后先按 CtrlC 停止扫描然后锁定目标信道和 BSSID 开始抓包sudo airodump-ng -c 6 --bssid XX:XX:XX:XX:XX:XX -w capture wlan0mon这里的-c 6是目标所在信道--bssid后面跟着目标路由器的 MAC 地址-w capture是保存的数据包文件名前缀。执行后它会一直监听这个特定网络等待抓取握手包。现在的问题是如果附近正好有一个手机连着这个 WiFi而且正好在传输数据那等一等就能抓到握手包。但很多时候环境比较安静或者目标网络没有活跃客户端那就要主动制造握手。这时候用 deauth 攻击让已连接的客户端强制掉线客户端会自动重连重连过程中就会重新执行四次握手我们趁机抓包sudo aireplay-ng --deauth 5 -a XX:XX:XX:XX:XX:XX -c YY:YY:YY:YY:YY:YY wlan0mon这里的--deauth 5是发送 5 个去认证帧-a后面是路由器 BSSID-c后面是目标客户端的 MAC 地址。如果不知道有哪些客户端连着可以先在 airodump-ng 界面上找 STATION 列表里的 MAC。客户端不必手动指定只要发送广播式的 deauth所有客户端都会掉线重连。不过定向攻击更精准也更不容易被察觉。deauth 攻击本身不加密这是 WPA2 协议早期设计就留下的特点。它只是让客户端和路由器暂时断开不会造成任何数据损坏也不会改写系统的任何东西。但在授权测试之外对着别人家网络发 deauth 包同样不合适这里再次提醒边界意识。当 airodump-ng 界面的右上角出现WPA handshake: XX:XX:XX:XX:XX:XX字样时说明握手包已经抓到了。这时候按 CtrlC 停止监听当前目录下会生成几个文件后缀分别是 .cap、.csv 等爆破要用的是 .cap 文件。3.3 使用 airckrack-ng 配合字典完成爆破握手包到手选字典开始爆破sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap-w指定字典文件后面是抓到的握手包文件。如果网络里不止一个目标aircrack-ng 会先让你选择一个 BSSID 进行破解选对应序号就行。如果只有一个目标它会直接开始跑。此时终端里会显示一个进度条每秒尝试的密钥数量、当前测试的钥匙都会刷出来。整个过程的速度取决于 CPU 或者 GPU。纯 CPU 跑的效率确实不高aircrack-ng 默认用单核我之前在虚拟机上跑 rockyou 字典大概每秒只有几百到一两千次一百多万条密码硬生生跑了二十多分钟。物理机上会快一些但依然不算快。如果运气好密码就在字典里跑完后终端会显示KEY FOUND! [ 密码内容 ]直接明文打出来非常直白。如果字典跑完没有结果终端会提示KEY NOT FOUND说明你的字典里没有这个密码需要换字典或者生成自定义字典。实操心得跑字典之前可以先瞄一眼目标的 ESSID 或者路由器品牌很多时候密码规律和人的习惯强相关不一定非得把整个大字典跑完。比如家用 TP-Link 路由器的 WiFi 密码经常是纯数字 8 位我就直接生成一个纯数字 8 位的字典几百 MB 跑到一半就出了结果。3.4 提速思路hashcat 与 GPU如果你有信心跑更大的字典aircrack-ng 的 CPU 效率可能会成为瓶颈。这时候可以把手包转给 hashcat用 GPU 来跑。hashcat 识别的是它自己的 hash 格式需要先把 cap 文件转换一下。Kali 里有一个工具叫hcxpcapngtool命令大致是这样hcxpcapngtool capture-01.cap -o hash.hc22000转换成功后用 hashcat 跑hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt纯 GPU 模式下跑百万级字典可能只需要几十秒到几分钟提速效果非常明显。注意 hashcat 对驱动要求比较高虚拟机上很难把 GPU 直通进去实体机或者双系统场景下用起来才顺手。对于刚入门的朋友我建议先把 aircrack-ng 流程跑通理解每一步在干什么之后再研究 hashcat 提速。工具可以换但思路是一样的。4. 字典决定成败的关键一环4.1 常见字典来源与基本用法字典就是一堆密码文本文件的集合每一行是一个候选密码。最常见的来源有三个第一是 Kali 自带的 rockyou.txt前面说过了一百多万条真实密码覆盖了大量常见弱口令。适合第一次练手也适合对目标不了解的情况。第二是各个安全社区发布的密码集合经常更新会包含近几年数据泄漏中出现的组合比 rockyou 更新鲜。第三是自己生成的定制字典基于目标的具体信息比如手机号段、生日年份、门牌号、姓名拼音等。这种字典通常体积不大但命中率非常高。字典文件本质上就是普通文本不存在什么特殊格式。你可以直接查看、编辑、合并cat dict1.txt dict2.txt | sort -u merged.txtsort -u会去掉重复项避免同一个密码被跑两次浪费时间。4.2 用 crunch 按规则生成自己的字典Kali 自带一个叫 crunch 的工具专门用来按规则生成密码字典。其基本语法是crunch 最小长度 最大长度 字符集 -t 模板 -o 输出文件举个例子生成所有 8 位纯数字密码crunch 8 8 0123456789 -o digits8.txt这个文件会有 1 亿行超过 400MB不大也不小但已经可以覆盖非常常见的纯数字弱密码。更聪明的做法是使用-t模板。假设你怀疑目标是 138 开头的 11 位手机号crunch 11 11 0123456789 -t 138%%%%%%%% -o phone.txt这里的%表示此处需要一个数字所以这条命令生成的是从 13800000000 到 13899999999 的十亿种组合。这个文件会很大但如果你手里有手机号的一部分信息比如前 7 位就能把范围压缩到几百几千条跑起来就快得多。再比如生日组合可以用 8 位模板其中前 4 位是年份 19 或 20中间是月份和日期crunch 8 8 0123456789 -t 19%%%%%%% -o birth19.txt这种定制字典看起来土但非常有效。因为大多数人设置 WiFi 密码时都爱用某个好记的数字而好记的数字往往和生日、手机号、地址有强相关。注意生成字典前先估算文件大小crunch 会在开始时告诉你生成多少行、多少字节。动辄几十 GB 的字典不仅生成慢爆破时更慢绝大多数情况下完全没必要。4.3 高命中率的密码规则与实战心得跑了这么多年的无线测试我可以给出一份经验性的优先级排序按命中概率从高到低纯数字 8 位尤其是 12345678、88888888、66666666 这类重复或连续数字。手机号138、139、150、186 开头的 11 位数字。生日组合常见格式是 19880101、880101、010288 等。姓名拼音 数字比如 zhangsan123、lisi888。常见英文单词 数字比如 password123、admin888。路由器品牌默认密码的弱变形很多厂家出厂密码有一定规律。我不太建议一上来就跑 100GB 的“全宇宙密码合集”那个看着很猛实际效率极低。更合理的做法是分两步先跑一个小而精的定向字典比如几百 MB 的常用密码集合没中再跑 rockyou 这种大字典还不行再上规则和 GPU。这里顺便说一个和“字典”相关的概念搜索词里有人问“字典树”。字典树Trie是一个数据结构用来高效存储和查找字符串集合。在爆破工具里如果把几百万条密码预加载成字典树查找一个密码是否存在的时间复杂度可以做到和密码长度成正比比线性扫描快得多。实际工具不一定都这么做但理解这个思想有助于你明白为什么不同工具在跑同一个字典时速度差距很大。优化数据结构就是在减少无效查找。5. 实战中常见的坑与排查技巧5.1 抓不到握手包的排查这是整个流程里最磨人的阶段我列几个高频原因和对应的排查方向没有客户端连接目标网络deauth 攻击只能影响已经连接的客户端如果这个 WiFi 是空的就没有人会触发重连自然没有握手包。这时候只能在 airodump-ng 的 STATION 列表里等什么时候看到有设备连上了再动手。信号太弱监听模式下网卡接收能力也会受距离和遮挡物影响。把网卡拿远一点、靠近路由器方向通常是凑效的。网卡没有真正进入监听模式airmon-ng start成功之后用iwconfig确认接口模式是 Monitor。有时候 NetworkManager 会抢回网卡跑一遍airmon-ng check kill再重新 start。信道不稳定如果你的网卡只支持 2.4GHz而目标在 5GHz那就别折腾了硬件限制。如果目标在同一个信道但干扰大可以换个物理位置或者增加天线增益。抓包文件保存错误airodump-ng 保存的 .cap 文件路径和文件名前缀要确认有时候 CtrlC 之后文件写到一半或保存路径不对aircrack-ng 会提示无法读取握手包。还有一个很容易忽略的问题aiorodump-ng 的--bssid参数必须用小写 MAC 地址复制粘贴时不小心带了大写字母会导致过滤失败抓了半天全是別家的包。这个我踩过一次印象极其深刻。5.2 爆破速度慢与字典选择跑大字典时经常有人怀疑人生怎么跑了半小时还在 2%。这里有几个实际建议第一先看aircrack-ng显示的速度指标。如果是几百 keys/s说明纯 CPU 模式真的太慢可以关掉虚拟机 GPU 加速看看能不能利用宿主机的 CPU 多核。aircrack-ng 的低版本不支持多核必要时用hashcat替代。第二不要死磕一个大字典。合理做法是先跑小字典热热身再跑中等体量的字典实在不行再换大字典。我在实际测试中试过目标密码就是一个纯数字 8 位rockyou 里反而没有因为 rockyou 主要是字符型密码。换一个纯数字字典几秒就出来了。第三如果允许定向爆破先用 crunch 生成目标信息相关的字典。哪怕只有几千条命中概率也远高于随机大字典。5.3 环境与合规注意事项最后这部分很重要请一定看完。Kali 装虚拟机、买外置网卡、跑渗透工具本身都是合法的网络安全学习行为。但一旦把目标指向你没授权的网络问题就变了。国内关于非法侵入计算机信息系统的法律边界非常清晰未经许可测试别人的网络即使是抓包这一步也有可能被认定为违法。所以我的建议是在自己家里练习拿着自己的路由器随便折腾。在实验环境里搭建测试网络或者买一个几十块的旧路由器专门用来练习。参与授权的渗透测试项目在该项目的授权范围内操作。不要用这些工具去测公司、学校、邻居的 WiFi更不要抱着“我就试一下”的心态。技术学习从来没有捷径但也不需要靠踩法律红线来获得成就感。把这套流程跑通之后你会对无线网络的安全机制有更深的理解这比单纯拿到一个密码有用得多。我在实际测试中最大的体会是这套流程的每个环节都在提醒我安全不是靠一个复杂的密码就能解决的。WPA2 的弱点在于它允许离线爆破而人的密码习惯又让字典攻击总有发挥空间。真正有效的防护其实是两层一层是网络层能升级 WPA3 就升级用复杂的随机密码另一层是人的层不在公共场合用弱密码热点也不把自己习惯用的密码重复使用在多个地方。最后分享一个小技巧测试完之后记得把网卡从监听模式切回来跑一下sudo airmon-ng stop wlan0mon然后重启 NetworkManager。我见过不少人测完直接拔网卡下次再插上发现网卡无法正常连接 WiFi其实是之前 NetworkManager 被 kill 后没恢复。收好摊子下一次测试才能顺手。
返回列表