ARTICLE DETAIL

资讯详情

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

WiFi密码字典攻击全解析:从抓包到防御实操指南

WiFi密码字典攻击全解析:从抓包到防御实操指南 1. 先搞清楚字典攻击到底是怎么一回事很多朋友问我WiFi密码到底是怎么被“弄到手”的。作为常年做无线安全测试的人我先把话说在前面本文所有内容只适用于测试你自己买的设备、自己搭的网络或者你拿到了明确书面授权的目标网络。未经授权的任何尝试都是在违法边缘反复横跳别拿自己的前途开玩笑。1.1 攻击原理与合法边界WiFi密码破解的本质不是像电影里那样输入几个代码就黑进去而是一个“猜测-验证”的过程。目前家庭和企业无线网络主流的加密方式是WPA2/WPA3其中WPA2-PSK这种个人模式安全性很大程度上取决于预共享密钥也就是你的WiFi密码的强度和随机性。攻击者抓到一个合法设备连接路由器时握手过程中产生的“四次握手包”然后在本地对这个握手包进行成千上万次的密码猜测计算。每尝试一个候选密码就把它和抓到的握手包里的信息做一次运算比对如果能算出匹配的校验值说明这个密码就是真正的网络密钥。这个过程专业叫法叫离线字典攻击。为什么叫“字典攻击”因为攻击者不是随机瞎猜而是拿一本预先准备好的“密码词典”里面按可能性从高到低排列了海量常见密码然后一条条去试。如果这本词典里恰好包含了你设置的密码那么攻破只是时间问题如果词典里没有那就算算到天荒地老也算不出来。所以从防御角度看只要你的密码足够冷门、足够长、足够随机字典攻击就拿你没辙。1.2 适用场景与工具选型我在实际工作中做这类测试通常是这些场景给客户做企业无线网络安全评估验证公司是否使用了弱密码帮朋友测试他自己家的路由器是否设置得当或者纯粹研究802.11协议栈的安全细节。离线字典攻击最大的优势是“一次性抓包无限次尝试”攻击过程中不需要和目标WiFi保持连接甚至可以关掉网卡慢慢算所以隐蔽性和效率都很高。工具选型方面我常用的组合是这样抓包阶段用Kali Linux自带的aircrack-ng套件这是无线安全的“瑞士军刀”从抓包到破解一条龙如果字典很大或者握手包是WPA2企业模式的我会切到Hashcat配合显卡GPU运算速度能快几个量级但配置门槛也高一些。至于网上那些所谓的“一键破解软件”我劝你还是别碰一是捆绑下载器一大堆二是这类闭源工具你敢往自己机器上装就得做好被装后门的心理准备。做安全的人反而最不信任不透明的破解工具。2. 密码字典从通用到定制一步步搭起来字典是整个攻击链路里最核心的部分。工具再强字典如果太拉胯跑出来的结果基本就是“No luck”。我见过太多人卡在这一步网卡能抓到包hashcat也调通了结果跑了几千万条密码全不对最后发现目标用户的密码就是“zhangshan1987”这种非常简单但字典里没有的组合。所以字典这件事值得单独拿出来仔细拆解。2.1 什么是高质量字典先说说“字典文件”长什么样。本质上就是一行一个候选密码的纯文本文件例如12345678 password admin123 qwerty123 password123 zhangshan1987每一行Hashcat或Aircrack就会当成一个候选密码去尝试。所谓“高质量字典”不是行数越多越好而是覆盖概率越高越好。比如你手上有一本10亿行的超巨型字典但全是纯数字组合另一个字典只有5000万行却精准覆盖了中国用户的常见密码习惯姓名拼音生日、手机号、英文单词数字、键盘顺序等后者在这个场景下反而更高效。从我的经验看给国内WiFi做测试最值得收集的字典类型有三类一是全球通用的弱密码Top100万这类是“人口基数”最大的二是中文互联网用户习惯密码库里面包含大量拼音、姓名组合、幸运数字这类特征三是针对特定目标的“社会工程学字典”比如知道对方是公司员工就把公司简称、部门、电话区号、成立年份等元素揉进去组合生成。前两类可以直接从公开的开源项目下载第三类需要自己写脚本生成。2.2 通用字典与自定义词表准备通用字典时有几个经典的公开词库建议收藏。比如danielmiessler的SecLists项目里的Passwords目录按语言、场景分得很细国内也有开源的“常用密码Top100万”之类的仓库虽然质量参差不齐但用来做初筛足够了。这些字典下载之后建议先做一次去重和清洗去掉包含空格的非法密码因为WPA2-PSK的密码要求是8到63个ASCII字符别在无效密码上浪费计算资源。自定义词表是拉开差距的地方。我常用的做法是写一个小脚本把目标相关的信息组合起来。比如你知道目标WiFi的SSID是“ZhangHome”主人姓张家里有2008年出生的小孩那么可以生成这些候选ZhangHome zhanghome Zhang2008 zhang2008 Zhang2008 ZH2008 zhang8888这些看起来“沾边”的密码恰恰是通用字典里永远不可能覆盖到的。虽然不能保证成功但在测试自己家网络时这类字典往往比下载的上亿行大字典更能碰出结果。2.3 规则生成让字典“活”起来这里要引入一个概念规则Rules。规则的本质是“变异”。一条基础密码“admin”通过规则可以派生出“admin123”、“Admin123”、“admin!#”、“admin2024”、“Admin2024”等几十上百种变体。Hashcat的规则引擎非常强大一行规则就能让一本1万行的字典膨胀成200万行的有效候选集而且这些候选都是大概率会被真实用户使用的变体。我最常用的规则组合有在密码尾部追加常见年份2020-2026、在密码头部或尾部追加特殊符号!、、#、首字母大写变化、键盘相邻字符替换比如把a换成s、生日数字组合8位、6位。Kali里默认带了一些规则文件比如best64.rule覆盖了64种最常见变形还有rockyou-30000.rule这种更激进的适合GPU跑。用规则的最大优势是用更小的字典体积覆盖更大的空间让有限的算力花在刀刃上。3. 实操流程抓握手包、喂字典、跑结果有了字典下一步就是把目标WiFi的握手包拿到手。这个过程对新手来说坑最多因为无线网卡和驱动的兼容性问题能把人逼疯。我按自己平时操作的顺序把这个流程完整捋一遍每个环节都会说到为什么这么做。3.1 环境准备与网卡选择要做无线抓包内置网卡基本不用想绝大多数笔记本内置无线网卡不支持监听模式Monitor Mode或者驱动在Linux下根本认不出来。我建议直接买一个USB外接无线网卡芯片优先选Atheros AR9271、Ralink RT3070或者Realtek RTL8812AU这几类芯片在Kali下的兼容性最好免驱或者只需极简配置就能进监听模式。某宝上几十块就能搞定一副别买太便宜的杂牌有些缩水版网卡的发射功率太低抓包距离惨不忍睹。另外确认一下你的Kali版本和内核建议跟到最新LTS版本。我之前遇到过RT3070网卡在旧内核下不稳定升级内核后问题消失。网卡到手后插上虚拟机时记得把USB设备直通给Kali虚拟机否则宿主机认到设备但虚拟机里看不到。3.2 抓取WPA握手包的步骤这个过程要分两步第一步让目标设备的连接“断一次”强制它重新认证第二步趁设备重新连接时把握手过程完整抓下来。具体命令如下# 1. 查看无线网卡接口名 iwconfig # 2. 启动网卡到监听模式 sudo airmon-ng start wlan0 # 3. 扫描周边WiFi网络 sudo airodump-ng wlan0mon # 4. 锁定目标BSSID和信道抓包并保存 sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon # 5. 另开一个终端发送解除认证帧强制客户端重连 sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF wlan0mon第一步的airmon-ng start会把网卡切换到监听模式接口名会变成wlan0mon。第三步看到目标网络后记录它的BSSID路由器MAC地址和信道。第四步的参数-c 6表示只监听6信道--bssid过滤目标路由器-w capture是保存抓包文件的前缀。第五步是核心操作aireplay-ng -0 5向目标AP发送5个Deauthentication帧这会让当前连接的所有客户端短暂掉线手机、电脑会自动重新连接重连瞬间的四次握手过程就会被我们抓下来。这里有个关键判断如何确认自己真的抓到了握手包注意看airodump-ng界面的右上角如果出现了“WPA handshake: AA:BB:CC:DD:EE:FF”的提示恭喜包已经到手。这个提示是最直接的成功信号。3.3 字典攻击的实操与参数调优到手的是.cap文件这是原始抓包文件还不能直接喂给Hashcat。需要先用aircrack-ng做一次转换提取出纯WPA握手数据# 转换cap文件生成hccapx格式旧版或直接导出为hashcat格式 aircrack-ng capture.cap -J convert_output # 如果要用Hashcat更推荐用hcxtools套件转换 hcxpcapngtool -o hash.hc22000 capture.cap然后就可以跑字典了。如果你只有CPU用aircrack-ng一键跑最简单aircrack-ng -w password.txt -b AA:BB:CC:DD:EE:FF capture.cap参数-w指定字典文件-b指定目标BSSID。如果密码在字典里很快会看到“KEY FOUND!”的提示和明文密码。如果你有好一点的NVIDIA显卡强烈建议用Hashcat跑速度快到难以置信hashcat -m 22000 hash.hc22000 password.txt --potfile-path pot.pot-m 22000对应WPA-PBKDF2-PMKIDEAPOL这种哈希类型是目前最通用的。--potfile-path指定结果保存文件跑完直接看pot文件就行。如果字典跑完没出结果Hashcat会显示状态“Exhausted”这时候要么换更大的字典要么上规则组合hashcat -m 22000 hash.hc22000 password.txt -r best64.rule --potfile-path pot.pot规则模式会把字典里每条密码按规则变形后再尝试覆盖范围立刻扩大几十倍。我一次实际测试中用300万行的基础字典配合best64规则大约半小时跑完了近2亿个候选密码——当然这是在显卡给力的情况下。4. 常见问题与排查技巧实录实操过程中基本都是问题连着问题。我把踩过的坑按出现频率从高到低整理成一个速查表你在测试时可以直接对应排查。4.1 网卡不支持监听模式怎么办这个是最常见的问题表现是执行airmon-ng start wlan0时提示“Unknown command”或者网卡没有任何反应。原因要么是网卡芯片不被驱动支持要么是驱动没加载。排查顺序先看lsusb确认网卡是否被系统识别再看dmesg | grep -i firmware有没有驱动加载报错最后去Aircrack-ng官网的“Compatibility”页面查这块网卡是否在支持列表里。如果确实不在别折腾了直接换网卡。我给学生的建议是把AR9271作为入门标配兼容性稳如老狗。还有一种情况宿主机把网卡占了。比如你用的是VMware或VirtualBox必须先关闭宿主机的无线管理工具再把USB网卡“从主机断开、连接到虚拟机”。如果不做这步Kali里能看到设备但始终切不进监听模式。4.2 握手包抓不稳、跑不出结果aireplay-ng -0 5发完攻击帧airodump-ng右上角却一直不出现“WPA handshake”提示。这可能是因为目标设备不在覆盖范围内或者客户端太智能、掉线后不自动重连。排查时先确认终端能看到附近的设备STATION列表里有MAC看不到说明对方信号太弱靠近一点再试。也有一种情况是目标路由器开启了PMF管理帧保护这种网络会丢弃伪造的Deauth帧攻击无效。应对思路是把WiFi密码认证类型切到WPA3混合模式或者干脆换用其他测试方法。这个有点超出新手范畴但确实存在遇到别死磕。4.3 字典体积与时间的取舍很多人一上来就下载50GB的字典结果跑了一晚上没结果还以为是密码太强其实是字典覆盖方向不对。我建议的策略是分轮次第一轮先用Top100万快速筛选通用弱密码第二轮用中等体积的中文习惯密码库第三轮再上规则变形最后一轮才考虑超大型字典配合GPU长时间跑。每一步都有明确的止损时间点比如第一轮30分钟没结果就换下一轮不盲目烧电费。对普通人来说如果前三轮都没命中那目标密码大概率不是常见弱密码继续跑只是在拼运气。还有一个容易忽略的点跑完记得看potfile或者用--show参数确认结果。有时候密码早就出来了只是你盯着终端没注意到“Cracked”状态。5. 防御视角怎样让自己的WiFi扛得住字典攻击讲完攻击侧我必须把防御侧讲透。本质上字典攻击能不能成功取决于你的密码是否出现在攻击者的字典里。所以防守的答案非常明确让你的密码成为字典之外的那个“意外”。5.1 密码策略长度与复杂度我给家里和公司的WiFi密码定的策略很简单不低于14位混合大小写、数字、特殊符号但不要求你必须记一堆乱码而是用“长句密码”的思路。比如“ZhngHome2024!Secure”这种长度足够、有大小写、有特殊字符、有数字、有年份看起来复杂但实际很好记。长度是字典攻击最头疼的维度因为每增加一位所需尝试的候选空间就爆炸式增长。WPA2-PSK强制最短8位但8位和14位的安全性差距不能用简单的“差一倍”来理解而是数量级碾压。另外别用那些“看起来像随机但其实有规律”的密码比如“qwerty1234”、“password2024”这些都在字典覆盖范围内。也别把家和公司的密码设置成一样的我们做渗透测试时最怕的就是“一把钥匙开两把锁”。5.2 协议与加密方式的选择如果你的路由器支持WPA3优先开启WPA3-SAE模式它在握手阶段引入了更安全的密钥交换机制很多针对WPA2的离线攻击手法在WPA3面前直接失效。如果设备老旧只支持WPA2至少把加密选项调整为AES而不是TKIP并关闭WPS功能。WPSWi-Fi保护设置是一个巨大的安全短板它允许通过8位PIN码连接而PIN码可以被暴力穷举通常几小时内搞定即使你设置了复杂的WiFi密码如果WPS开着防御等于形同虚设。关闭WPS后还要顺手定期更新路由器固件因为很多攻击目标其实是路由器自身的漏洞固件更新能堵住这些后门。我在实际评估中发现超过一半的家庭路由器固件停留在两三年前漏洞一抓一大把。最后分享一个我常用的预防性自测方法每年固件更新后拿自己的字典库给自己的WiFi跑一遍如果跑不出结果说明当前密码设置是达标的如果跑出来了赶紧改密码别等真出事再后悔。这套流程我从14年开始用到现在已经成了习惯强烈建议你也试试。
返回列表