ARTICLE DETAIL

资讯详情

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

Aircrack-ng抓包实战:从四次握手到跑字典破解WPA/WPA2

Aircrack-ng抓包实战:从四次握手到跑字典破解WPA/WPA2 简介西南科技大学无线网络安全技术实验四报告以使用aircrack-ng完成WPA/WPA2密码破解为主题面向高校无线安全课程实验、网络攻防方向学生及安全爱好者。文档从实验目的出发明确认识WPA/WPA2安全原理、熟悉口令破解方法两项目标实验设计涵盖Kali Linux环境配置、开启无线网卡监听模式、字典文件生成、目标AP扫描监听、Deauth攻击抓取握手包及aircrack-ng离线破解等环节并提供airodump-ng、aireplay-ng、aircrack-ng等关键命令的参数说明与执行结果截图。内容还讨论分析破解原理以及家用WiFi弱密码、MAC白名单、管理口令隔离等安全加固建议并记录了目录参数理解偏差导致找不到握手包等典型问题与解决思路。资源共1个doc格式文档压缩包大小1.37MB整体为完整实验报告既可用于随步骤复现实验也可作为课程实验报告写作模板。已有812人学习适合边读边操作、对照排错。1. 用 aircrack-ng 做 WPA 破解大学实验里被追问最多的不是命令而是抓包时机很多高校的无线网络安全实验都会出现这个题目用 aircrack-ng 对 WPA/WPA2 做破解。西南科技大学那类课程把整个环节拆成三步——监听模式、抓握手包、跑字典看起来都是现成命令实际多数人卡在第二步包没抓到字典再大也白搭。aircrack-ng 不是一把“一键破解”的锤子它是一套无线报文分析工具核心价值是离线验证口令。这篇笔记按课程实验的顺序把环境、抓包、字典和常见翻车点讲透建议你在自己家里那台路由器上复现同样步骤并且只在你有权测试的设备上操作。2. WPA-PSK 四次握手破解对象不是密码而是握手中的“主会话密钥”2.1 从 WEP 到 WPA/WPA2破解思路为何从“嗅探”转向“离线字典”无线安全课上总要先讲 WEP。WEP 用 RC4 流密码初始向量只有 24 位客户端一忙就会重用 IV攻击者抓几十万个数据包就能靠统计相关性推出密钥整个过程几乎不需要碰“口令”这个概念。WPA/WPA2 出现后加密机制换成 AES-CCMP 或 TKIP单靠抓数据包反推密钥的路子基本被堵死于是攻击面转移到了口令本身。WPA2-Personal 的密钥体系里AP 与客户端共享一个预共享密钥PSK也就是你在路由器里设置的那串 8 到 63 字符的口令短语。这个 PSK 不是直接用来加密数据的它只是“种子”。真正加密数据用的是 PTKPTK 又由 PMK 派生。PMK 由 SSID 和 PSK 经过 PBKDF2-SHA1 算法迭代 4096 次生成固定输出 256 位。这里的关键在于SSID 和 PSK 都是可预测的输入只要 PSK 存在于某个字典里攻击者就能在本地把同样的 PMK 重新算出来。正因为如此破解 WPA-PSK 的思路从“在线嗅探”转成了“离线字典”。在线去猜一个 PSK 非常不现实因为一次认证失败后 AP 会拒绝重试频率限制加协议开销让在线尝试慢得可怕离线则不同你只要拿到一次合法握手之后每秒可以试几千甚至几十万个候选口令。aircrack-ng 做的事是把抓到的握手包与字典里的每个候选口令做“匹配验证”。2.2 四次握手做了什么PMK、PTK、Nonce、MIC 各自管什么WPA/WPA2 的认证过程叫四次握手4-way handshake目的是让 AP 和客户端各自确认对方确实知道同一个 PMK并协商出一份临时密钥 PTK。PTK 由五个输入算出来PMK、AP 的随机数 ANonce、客户端的随机数 SNonce、AP 的 MAC、客户端的 MAC。只要这五个输入一致双方就能算出完全相同的 PTK后续用 PTK 加密单播数据。四次握手的过程用浅白的方式拆开看消息方向内容作用第 1 条AP → 客户端ANonce让客户端开始构造 PTK第 2 条客户端 → APSNonce MIC客户端证明自己知道 PMK第 3 条AP → 客户端GTK MICAP 确认客户端身份并下发组播密钥第 4 条客户端 → AP确认 ACK客户端确认收到 GTK握手完成MIC 是消息完整性校验码它由 KCKPTK 的一部分对 EAPOL 帧内容计算得出。攻击者抓包时看不到 PSK也看不到 PMK但能看到 ANonce、SNonce、双方 MAC 和 MIC。于是验证一个候选口令的过程就变成了拿候选口令算出 PMK再结合抓到的 ANonce、SNonce、MAC 算出 PTK最后用 PTK 里的 KCK 去校验那个 MIC 是否一致。一致口令正确不一致继续试下一个。这就是为什么说“破解对象不是密码而是握手”。握手包如同一把锁字典里的每个候选口令都是钥匙aircrack-ng 只是快速试钥匙的人。你在实验里如果只抓到了 beacon 帧和数据帧没有抓到 EAPOL 握手消息那和没有锁是一样的——钥匙再多也没有验证对象。2.3 为什么 cap 文件里抓到握手包才能开始跑字典aircrack-ng 判断“抓到握手”的标准很明确在抓包文件里找到一对合法的 EAPOL 消息并且能从中提取出完整的 PTK 推导所需参数。airodump-ng 界面右上角出现“WPA handshake”字样时通常意味着已经抓到可以先跑字典的握手。有一个容易忽略的细节WPA2 和 WPA3 的握手行为不同。WPA3 引入 SAESimultaneous Authentication of Equals以后不再采用传统的 PSK 四次握手aircrack-ng 这种离线字典验证方式对 WPA3-Personal 基本失效。所以实验课上的目标绝大多数是 WPA/WPA2这是协议层面的选择不是工具选择。在做实验之前先确认你的路由器把无线模式设置成 WPA2-PSK而不是 WPA3 或“WPA2/WPA3 混合”否则第一步就白忙。cap 文件是原始报文容器。airodump-ng 用-w参数落盘时会把抓到的 802.11 管理帧、控制帧、数据帧全部写进 pcap 格式文件里后缀通常是-01.cap。之后 aircrack-ng 会自己扫描这个文件里的 AP 和 EAPOL 记录不需要你做任何预处理。但如果你是拿 Windows 下 Wireshark 抓的包那就得注意普通网卡抓不到 802.11 管理帧只有处于监听模式的网卡才能把 EAPOL 帧完整抓到这也是下一章要先解决环境问题的原因。3. 搭一个能“听”的实验环境无线网卡选型、Kali 启动与监听模式3.1 为什么课程实验推荐外接 USB 无线网卡而不是笔记本内置网卡很多同学第一次做这个实验直接拿笔记本内置网卡开抓结果airodump-ng跑起来一个 AP 都看不到或者能看到 AP 但发不出 deauth。问题不在命令在网卡。笔记本内置无线网卡大多使用 Intel 芯片驱动为 iwlwifi在监听模式下经常只能收不能发注入能力非常受限。实验环境里最省事的方案是外接 USB 无线网卡认芯片型号比认品牌重要。常见支持监听和注入的芯片如下芯片频段监听/注入说明Atheros AR92712.4GHz支持老牌实验卡兼容性最好Ralink RT30702.4GHz支持驱动 mt7601 或 rt2800usb 均可识别Realtek RTL8812AU2.4/5GHz支持支持 5GHz但需要装 8812au 驱动Realtek RTL8188EU2.4GHz支持廉价方案驱动偶尔需要 dkms 编译判断一张网卡能不能用不要看它宣传页写了多大的天线增益直接用iw list查看内核识别到的能力位。如果输出里包含Supported interface modes: monitor说明监听模式可用valid interface combinations里允许 monitor 与其他模式共存说明注入大概率没问题。内核不认的网卡aircrack-ng 全家桶再牛也白搭。3.2 最小命令airmon-ng 从 wlan0 到 wlan0monKali Linux 是无线安全实验最常见的系统因为 airmon-ng、airodump-ng、aireplay-ng、aircrack-ng 全部预装。如果你用的是 Ubuntu需要自己安装aircrack-ng软件包和网卡驱动。下面这组命令是把网卡切到监听模式的最小流程sudo airmon-ng check kill sudo airmon-ng start wlan0 iw devairmon-ng check kill会检查当前系统里与无线网络冲突的进程并临时停掉它们。最常见的是 NetworkManager它会周期性发起扫描和连接请求导致网卡被反复拉回 managed 模式。执行完这条命令后终端会列出一串被杀掉的进程名这属于正常现象。airmon-ng start wlan0把物理网卡 wlan0 切换到监听模式并把接口名改名为 wlan0mon。做完这一步后网卡不再参与正常的 Wi-Fi 连接它会持续监听空中的 802.11 帧。iw dev用来确认接口状态输出里只要看到type monitor就算成功。如果你的网卡驱动比较特殊接口名可能不变你只需要记住iwconfig显示 Mode:Monitor 即可。实验结束后想恢复正常联网执行sudo airmon-ng stop wlan0mon然后手动启动 NetworkManager命令因发行版而异Kali 下通常执行sudo systemctl restart NetworkManager。3.3 虚拟机里怎么把 USB 无线网卡传给 Kali课程实验最常见的拓扑是Windows 物理机跑 VMware 或 VirtualBox虚拟机里装 Kali。这种情况下 USB 无线网卡默认被宿主机占用必须手动把设备“直通”给虚拟机。VMware Workstation 的操作路径是虚拟机设置 → USB 控制器 → 添加设备 → 选择你的无线网卡。VirtualBox 则是设置 → USB → 添加 USB 过滤器。要注意宿主机上如果有某个软件正在使用这张无线网卡例如 Windows 的“移动热点”功能那么网卡不会出现在虚拟机的lsusb输出里。先到宿主机断开该网卡连接再直通虚拟机。直通后进入 Kali检查一下lsusb sudo airmon-ng如果lsusb能看到网卡的厂商 ID说明设备已在虚拟机内如果airmon-ng输出里对应该网卡的 Chipset 一栏是空的多半是驱动没装上后面抓包会频繁出错。此时优先回到物理机在 Kali 里用apt install realtek-rtl88xxau-dkms之类的方式补驱动而不是急着抓包。3.4 监听模式启动后先确认三件事切换监听模式后不要急着跑 airodump先做三件事确认接口名、确认信道、确认注入能力。接口名用iwconfig看信道用iw dev看注入能力用aireplay-ng --test看。sudo iwconfig wlan0mon sudo aireplay-ng --test wlan0monaireplay-ng --test会向空中发送注入测试帧并等待回显输出Injection is working!说明网卡注入没问题。如果卡死在这里常见原因是当前环境太嘈杂或网卡驱动不支持发送注入帧不要硬撑换一块网卡比调参数靠谱。这步测试只要几十秒但能把后面 deauth 失败的问题提前暴露出来属于血泪经验。4. 从扫描 AP 到抓到握手包airodump-ng 过滤、deauth 注入与 cap 落盘4.1 先看全场再锁目标airodump-ng 的输出怎么读监听模式就绪后第一件事是扫描周围环境里的 AP。这一步是“看全场”不锁定任何目标sudo airodump-ng wlan0mon输出会动态刷新每一行是一个 AP下面缩进行是对应的客户端。最关键的表头字段要会读字段含义怎么判断BSSIDAP 的 MAC 地址锁定目标的唯一标识PWR信号强度负数越接近 0 信号越强低于 -70 就不好抓CH信道锁定目标后必须用这个值过滤ENC / CIPHER加密方式和密码套件找 WPA/WPA2 的跳过 WEP 和 OPENAUTH认证方式PSK 开头的是我们要的目标ESSID无线网络名称方便人工识别从这里选一个信号强、信道不拥挤、明确是 WPA2-PSK 的 AP 做实验目标。初次实验可以只挑一个 AP不要贪多。多 AP 同时抓包会让后面 airmon-ng 对目标 BSSID 匹配时多出不少干扰排查起来比较闹心。信号弱的 AP 即使能抓到握手包跑字典时也容易因 EAPOL 帧不完整而失败。判断标准很朴素PWR 至少有 -60 左右最好距离路由器不要超过两三米别隔着承重墙做实验。4.2 锁定目标开始落盘-c、--bssid、-w 三个参数看到全场后CtrlC 停掉扫描然后用过滤参数重新开一轮只盯目标 AP同时把报文写入文件sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w lab wlan0mon这里的-c 6指定信道为 6Kali 会自动把网卡切成单信道监听。单信道比扫全频段抓包效率高得多因为网卡同一时刻只能监听一个信道扫全频段时每个信道停留时间很短很容易错过客户端重连瞬间的 EAPOL 帧。--bssid AA:BB:CC:DD:EE:FF是目标 AP 的 MACairodump-ng 收到这个参数后会隐藏其它 AP界面干净很多。-w lab是输出前缀程序会自动生成lab-01.cap、lab-01.csv等文件。再次 CtrlC 结束时如果继续用-w lab抓编号会变成lab-02.cap、lab-03.cap注意别把新老文件混在一起。落盘文件默认生成在当前目录。实验结束后回头整理时cap 文件里除了 EAPOL 帧还有大量无关报文aircrack-ng 会自动过滤但 Wireshark 打开时最好用过滤器只看 EAPOL避免眼晕。4.3 没有客户端在线deauth 注入如何“制造”一次握手WPA 握手发生的前提是客户端与 AP 建立关联。如果你实验时屋里没人在用这个 Wi-Fiairodump-ng 界面上客户端列表为空那就需要主动触发一次重连。经典做法是发 deauth 帧把现有客户端踢下线它会立刻自动重新关联关联瞬间就会重新完成四次握手。这个操作在课程实验里是标准动作但在真实公共网络里对陌生设备使用是越界行为请只对自家路由器操作。sudo aireplay-ng -0 3 -a AA:BB:CC:DD:EE:FF wlan0mon-0表示发送 deauth 帧3是发送数量-a指定目标 AP 的 BSSID。这个命令不加-c参数时向所有客户端的广播 deauth加上-c 00:11:22:33:44:55则定向踢某个客户端。广播方式简单有效但有的网卡对广播 deauth 支持不好定向方式更稳。如果发送后 airodump-ng 界面里#Data列数字明显增长说明客户端正在重新关联保持抓包窗口开着等待右上角出现握手提示。有的实验课里学生会用手机连上自家 AP然后反复开关手机 Wi-Fi 来制造握手这其实是最“温柔”的方式。deauth 是辅助不是必需品只要客户端有重连行为握手自然会发生。4.4 如何判断真的抓到握手包airodump-ng 界面右上角出现WPA handshake: AA:BB:CC:DD:EE:FF这是最直观的标志。但我习惯再用报文级验证确认一下避免只抓到半截握手。用 tcpdump 直接看 cap 文件里的 EAPOL 帧sudo tcpdump -r lab-01.cap -nn -c 20 eapol输出里如果能连续看到 EAPOL key 相关报文说明握手确实落盘了。如果你在 Windows 上更习惯用 Wireshark打开 cap 文件后显示过滤器填eapol效果一样。判断标准是至少看到一条客户端发出的 EAPOL 第 2 条消息和一条 AP 发出的 EAPOL 第 3 条消息。只有一条 EAPOL 帧时后面 aircrack-ng 能跑但经常因为 MIC 字段不完整而报错。如果右上角迟迟不出现握手多半是界面上没有一个活跃客户端。先确认 airodump-ng 客户端列表里有人再执行 deauth。别小看这个顺序很多翻车都是先发 deauth后开抓包窗口恰好错过了重连瞬间。5. 跑字典与踩坑排查破解命中率为什么这么低、总是“Waiting for beacon”或“0 handshake”5.1 aircrack-ng 的完整命令读 cap、指定字典、限定 AP 与客户端抓到握手包后跑字典的命令反而很短aircrack-ng -w /usr/share/wordlists/rockyou.txt -b AA:BB:CC:DD:EE:FF lab-01.cap-w指定字典文件Kali 自带rockyou.txt它在/usr/share/wordlists/下首次使用需要先解压rockyou.txt.gz。-b指定目标 BSSID这一步不是为了省时间而是防止 aircrack-ng 把 cap 文件里其它 AP 的握手一起拿来试。不加-b时它会对每个 AP 都跑一遍输出乱且慢还容易让人误判“破解成功”——其实成功的是另一个无关 AP。执行后输出会显示候选口令的进度条和每秒测试数。如果命中会直接打印出KEY FOUND! [ 口令内容 ]。如果整个字典跑完显示KEY NOT FOUND可以先换字典也可以检查下面这几类常见问题。5.2 现象一cap 文件里根本没有 EAPOL 帧提示“No matching network found”现象aircrack-ng 启动后显示No matching network found文件列表里看不到任何 AP。原因有两种可能一是-b指定的 BSSID 和 cap 文件里记录的不一致比如看错了一行二是抓包过程中 EAPOL 帧没有被正确写入cap 文件里只包含 beacon 和数据帧。解决方法是先用aircrack-ng lab-01.cap不带任何参数跑一遍让它列出文件里识别到的所有网络和握手状态。如果列表为空或全部是No handshake回到第 4 章重抓如果能看到多个网络再检查是不是 BSSID 抄错了。5.3 现象二deauth 一直发不出去客户端始终不掉线现象aireplay-ng命令执行后没有任何报错但 airodump-ng 界面上客户端纹丝不动。原因通常是网卡不支持注入或者监听模式没有被正确激活。有些便宜网卡号称“支持监听”实际驱动只能收不能发deauth 帧根本没到空中。解决方法是先用aireplay-ng --test wlan0mon做注入测试如果测试失败就换一块 AR9271 或 RT3070 芯片的网卡。另外现在的部分路由器默认开了管理帧保护PMF802.11wdeauth 帧会被客户端直接丢弃这种情况下发多少帧都没用只能等客户端自己重连。5.4 现象三右上角显示 WPA handshake但跑字典全是 KEY NOT FOUND现象抓包界面明明出现过WPA handshake字典也跑完了结果一个都没命中。原因有两大类第一密码确实不在字典里这是最常见也最无解的情况第二抓到的握手包不完整比如只抓到第 1、2 条消息或者客户端这一侧的 EAPOL 第 2 条消息丢了关键字段。解决方法是先自己造一个确定能命中的场景把路由器密码临时改成Test123456同时把这一行写进一个只有一行的test.txt再用 aircrack-ng 去跑。如果这样能出来KEY FOUND说明你的抓包链路没问题问题在字典覆盖范围。这种“最小验证”的办法养成了习惯后面排查任何无线问题都很省事。5.5 现象四字典里明明有正确密码偏偏破解不出来现象你确认密码就在字典里文件中也能搜到那行字符串但 aircrack-ng 就是显示KEY NOT FOUND。原因通常是文件格式问题Windows 下编辑过的字典可能带\r回车符或文件开头有 BOMaircrack-ng 按行读取时把\r当成密码的一部分。我一般顺手用head -5 dict.txt | cat -A看行尾如果末尾出现^M$就先把回车符清掉sed -i s/\r$// dict.txt清掉之后重新跑。还有一个容易忽略的点如果密码里有$、!这种特殊字符注意在 shell 里给字典路径加引号路径里的特殊字符被展开成变量或历史命令会产生各种很难排查的玄学现象。5.6 现象五虚拟机里的 USB 网卡中途掉线airodump-ng 界面卡死现象抓包抓了十几分钟airodump-ng 界面突然不刷新lsusb也看不到那枚无线网卡。原因大概率是虚拟机 USB 直通不稳定也有网卡长时间工作过热掉电的因素。解决办法是把虚拟机的 USB 控制器设置里“自动连接”关掉避免主机端抢占同时抓包时间尽量控制在几分钟内抓到手就停。同一个实验如果非要长时间挂着优先用物理机装 Kali而不是虚拟机。老生常谈但确实是“等待 beacon”问题时最容易被忽略的根因。6. 验证结果和防御视角这堂实验做完我会立刻改掉这三个配置6.1 先做一个最小验证拿到一次成功的破解结果后别急着收拾环境先做一个最小验证把自己的密码写进一个小字典验证链路完整性。echo MyLabPassword123 test.txt aircrack-ng -w test.txt -b AA:BB:CC:DD:EE:FF lab-01.cap这一步的意义是确认“抓包无误 命令无误 字典格式无误”。如果小字典能命中后面换大字典跑不中就只可能是字典覆盖问题如果小字典都跑不出来说明前面某一步错了换一万个字典也白搭。这个套路我一直用到现在花一分钟省一小时排查时间。6.2 从实验结果反推防御配置知道攻击者是怎么拿到握手包并跑字典的之后再回头看路由器配置很多默认设置都会让你后背一凉。我实验完立刻改了三个配置配置项常见默认值实验后的建议值Wi-Fi 密码8 位纯数字或纯字母不少于 14 位混合大小写与符号WPS开启关闭无线模式WPA2/WPA3 自动明确 WPA2-PSK开启 PMF密码长度是决定性因素。aircrack-ng 跑字典的速度取决于 CPU 和 GPU但一个 14 位随机口令的搜索空间已经远超大字典的能力WPS 关闭是为了堵住 PIN 码暴力破解这条路WPS 的 PIN 只有 8 位前四位和末位校验位还能分开爆破比跑 WPA 字典快得多PMF 则是把 deauth 注入的路也挡了。这三个改动都不影响日常上网体验但对暴力破解的阻力是数量级的提升。6.3 把验证留给 hashcat同一个 cap 文件的另一种跑法如果实验时间富裕可以再试一次 hashcat它对 GPU 利用得更充分跑长字典比 aircrack-ng 快不少。把 cap 文件转成 hashcat 格式hcxpcapngtool -o lab.22000 lab-01.cap hashcat -m 22000 -a 0 lab.22000 test.txt-m 22000是 WPA-PBKDF2-PMKIDEAPOL 的 hashcat 模式-a 0表示字典攻击。这不会取代 aircrack-ng而是给你一种“同一份证据、两种验证手段”的思路。课程实验的终点不是那个KEY FOUND而是你能解释清楚为什么 PSK 口令可猜、为什么握手包能离线验证、为什么 PMF 挡得住 deauth。做完整轮实验后我养成了两个习惯一个是所有破解实验只跑自己家里的路由器另一个是抓包文件和字典按日期归档方便事后复查。说句心里话这套工具链的边界比它看起来要窄得多——它考验的不是工具多强而是你对抓包时机的理解有多深。希望这些文字能帮你在下一次实验里少走点弯路也希望那份好奇心始终用在保护自己设备的方向上。本文还有配套的精品资源点击获取
返回列表