Kali密码破解实战:从字典生成到GPU暴力破解全流程

发布时间:2026/10/13 7:40:49
Kali密码破解实战:从字典生成到GPU暴力破解全流程 1. 项目概述与核心思路做安全测试绕不开密码破解这个话题。Kali Linux 里集成了大量密码破解工具从字典生成到暴力破解整套链路都可以在同一个系统里完成。这篇内容围绕的是“如何从零开始利用 Kali 完成一次完整的密码破解流程”它不是单纯教你敲几条命令而是把背后“为什么这么做”讲清楚。先说清楚边界密码破解必须建立在合法授权的前提下。要么是你自己忘了密码需要恢复要么是你在客户书面授权范围内做渗透测试。没有授权的破解行为轻则违反服务条款重则触犯法律。我这边遇到的绝大多数正规项目都会把“弱口令检测”写进安全评估范围这才是密码破解技术的合法使用场景。这次实战涉及的核心环节包括三块字典怎么生成、哈希怎么识别、暴力破解怎么跑得又快又准。工具上我主要用了 Crunch、CeWL、John the Ripper、Hashcat 和 Hydra这几个是 Kali 里默认自带的开箱即用覆盖了“离线破解”和“在线密码尝试”两条路线。适合的人群是刚入门渗透测试的从业者、做安全运维的工程师以及想知道“密码是怎么被破掉的”系统管理员——了解攻击手法才能更好做防御。整个项目下来我的体会是密码破解拼的不是算力而是“对目标的了解程度”。一个精心构造的小字典命中率可能比几个 GB 的大字典还高。所以本文会把大量篇幅放在“字典怎么造”这件事上而不是简单堆命令。1.1 核心需求解析先说清楚密码破解的几种应用场景第一种是找回自己的密码比如你接手一台老设备管理员把密码忘了系统进不去数据在里面出不来这种场景下离线破解哈希是可行路径。第二种是授权安全测试这是我在项目中遇到最多的。客户要求检测内部系统是否存在弱口令比如某财务系统的登录页用了 admin/admin123 这种组合测试报告里就会给出明确风险等级。第三种是取证分析司法机关或企业内部审计拿到嫌疑设备后需要解出加密容器或压缩包的密码。不管哪种场景流程都是相似的先拿到“密码的痕迹”——要么是一个哈希文件要么是一个登录接口——然后通过字典生成和破解工具把明文密码尝试出来。1.2 为什么选择 Kali 作为实战平台Kali Linux 本身不神奇神奇的是它把所有常用工具集成好了。过去在 Ubuntu 上要自己编译安装 Hashcat还得折腾显卡驱动一来一回半天就没了。Kali 默认带完整工具链省去了环境搭建的时间。实际项目中我通常用 Kali 的 Live USB 模式启动或者装在虚拟机里。这里有个取舍虚拟机方便快照做实验时出问题可以随时回滚但如果你要跑大规模 GPU 破解宿主机直通显卡是必要条件虚拟机里的 GPU 穿透配置比较折腾这时候直接用 Kali 的独立安装版更省心。我个人在项目里是混合用的——现场测试用 U 盘启动的 Kali回到办公环境把抓到的东西丢到实验室的高性能机器上跑效率和灵活性兼顾。2. 字典生成全解析很多人一想到暴力破解就以为是把所有字符排列组合挨个试一遍。这个思路不能算错但效率极低。打个比方8 位纯数字密码只有 1 亿种组合GPU 破解几秒就完事但一旦混入大小写字母和特殊符号组合数直接膨胀到 10 的 14 次方量级再强的算力也得跑几百年。所以实战中真正可行的思路是用字典缩小尝试范围。字典破解的原理很朴素——现实世界中的密码并不是均匀分布的随机串而是人脑偷懒的产物。大多数人会用自己的姓名拼音、生日、手机号、常用单词的组合来设置密码。字典就是把这些“人类习惯”变成候选列表逐条去试。对比纯暴力枚举字典破解往往能在几分钟内解决。2.1 使用 Crunch 生成自定义组合字典Crunch 是 Kali 自带的一款字符组合生成工具它的特点是可以按照你给定的字符集和长度规则穷举生成所有可能的组合。语法结构是Crunch 最小长度 最大长度 字符集 偏移量 输出文件。举个例子如果目标系统里大量员工使用“部门缩写工号”作为默认密码比如 IT 部门的用户习惯用 it001234 这种格式我就可以用 Crunch 专门生成这种形态的字典crunch 8 8 -t it%%%%%% -o dict_itinternal.txt其中 % 代表数字占位符这条命令会生成从 it000000 到 it999999 共一百万条密码文件大小约 8MB。跑这种定向字典GPU 破解一个哈希文件可以说是一瞬间的事。Crunch 还支持自定义字符集比如只生成以大写字母开头、后面跟数字的密码用 -p 参数指定字符集合。更高级的用法是和掩码攻击结合——先确定密码中的已知部分只对未知部分做穷举这种做法在针对个人定制的场景特别有效。注意Crunch 生成的字典可能非常大。8 位以内的小写字母加数字组合就足以产生几十 GB 的文件磁盘空间不够时可以考虑用管道直接把输出喂给破解工具避免中间文件占空间但前提是破解工具支持从标准输入读取字典。2.2 基于目标信息生成定向字典这是我认为整个项目中价值最高的一环。在我参与过的一次某企业内部测试中甲方提供的授权范围包括其 OA 系统。前期的信息搜集阶段发现该企业名称缩写是 “ABC”总经理的姓名拼音是 wangqiang公司成立于 2010 年办公电话区号是 010。基于这些信息我用 CeWL 爬取了企业官网和内部论坛的公开页面收集公司文化和新闻稿里的常用词汇然后用 cupp一个交互式字典生成脚本输入目标员工的人名拼音、生日、手机号等自动组合出大约 2 万条候选密码。最终破解出的 12 个弱口令中有 7 个都来自这份定向字典包括 wangqiang2010、abc010、qiang1234 这种带明显个人特征的组合。这就是目标信息字典的威力它不是泛泛地“试遍所有密码”而是预测目标“最可能用什么密码”。在实战中我甚至遇到过用配偶姓名加生日的组合直接命中管理员账号的情况。可以这么说字典生成的精度直接决定了密码破解的成败。2.3 规则变形与单词表组合规则变形是字典攻击里容易被忽视的一环。基础思路是先从某个基准词表出发——比如 rockyou.txt 前 1000 行或者专门下载的常用密码列表——然后通过规则引擎把每个词替换成多种变体。Hashcat 的规则引擎是我用得最顺手的。它的语法看起来有点绕但核心概念不复杂把规则文件里的每一行当作一组指令作用于字典中的每条密码。比如hashcat -m 0 hash.txt dict.txt -r rules/best64.rulebest64.rule 是 Hashcat 自带的规则文件包含 64 条常用变形规则比如在词尾追加 123、把字母 a 替换成 、把首字母大写等。别看只有 64 条规则它能把一个 100 万行的字典扩展成大约 6400 万条候选密码覆盖面远超单纯用原字典。我自己常用的组合是 three rules 的思路先用原始字典跑一遍再用规则跑一遍最后用掩码跑一遍。三层叠加命中率比单层高很多。但要注意规则变形会显著增加计算量如果 GPU 算力有限建议先从规则文件里挑选 20 到 30 条高效的规则而不是一次性跑全部。2.4 字典选择的经验之谈这里分享几个我在项目里反复验证过的经验万能字典不如小而专的字典。rockyou.txt 虽然经典它来自一次真实的数据泄露但动辄上百兆跑一轮耗时很长。对单台服务器做测试时我通常先用 10 万行的高频密码表命中率已经能接近 60% 了。字典要按场景分区。一个针对员工系统的字典应该侧重姓名拼音、生日 8 位组合、入职年份后缀一个针对路由器和 IoT 设备的字典则应该包含 admin、root、123456、password 这类出厂默认组合。不要忘了中文特色。很多中文目标的密码里藏着“woaini”我爱你、“19900101”这类组合纯英文单词表往往覆盖不到需要额外生成中文拼音相关的字典。3. 暴力破解核心工具实操字典准备好了接下来就是让工具跑起来。Kali 里的破解工具按工作方式可以分成两类离线破解和在线探测。两者思路不同适用的场景也不同。离线破解的对象是“密码的指纹”——也就是哈希值。攻击者拿到的是类似 $6$salt$hash 这样的字符串需要用哈希算法反推出明文密码。在线探测则是对一个真实的登录接口不断尝试用户名和密码组合比如网页登录、SSH 登录、RDP 登录等。3.1 哈希识别与格式判断拿到一个哈希文件第一件事不是急着破解而是识别它的算法类型。用错了模式跑多久都是白费。Kali 里有一个工具叫 hashid可以自动判断哈希类型hashid -m $6$cFpzF1nC$VcLQ7Z...输出会给出可能的算法比如 $6$ 开头的基本可以确定是 SHA-512 crypt对应 Hashcat 的 -m 1800 模式。但 hashid 的自动判断有时候会误报我会再结合哈希的长度和格式做交叉验证。比如 WPA2 的握手包可以用 aircrack-ng 直接识别而一个 40 位的十六进制字符串更像老式 WEP 的口令时就要用不同的工具来分析。哈希格式的规范处理非常关键。John the Ripper 通常要求标准的 passwd 或 shadow 文件格式Hashcat 则要求每行一个 “哈希:用户名” 的结构。从 Windows 系统提取的 NTLM 哈希通常还需要先去掉域控相关的字段。这一步如果不清洗干净后续的破解根本无法启动。我一般会在导入文件前用 awk 或 sed 做一次预处理确保格式符合工具预期。3.2 John the Ripper 的实战用法John the RipperJtR是老牌的 CPU 破解工具优势在于自动识别哈希类型和内置的密码模式。它适合处理中等规模几十万条的哈希文件虽然速度不如 GPU 破解但胜在稳定、配置简单。基本流程john --wordlistdict.txt --formatsha512crypt hash.txtJtR 会在当前目录生成一个 john.pot 文件记录已经破解出来的密码。下次再跑同一个哈希文件时它会自动跳过已破解的条目避免重复劳动。这个特性看似不起眼实际用起来非常舒服——尤其是你分批加入新字典的时候。JtR 还支持“增量模式”incremental本质上是一种经过优化的暴力枚举。它的原理是先对常见字符组合做概率建模优先尝试高概率的序列。在处理一些字典完全没命中的哈希时这个模式偶尔能创造惊喜。但它的缺点也很明显——速度比字典慢得多我通常只把它用在最后兜底。3.3 Hashcat 的高速 GPU 破解Hashcat 是我在正式项目中使用频率最高的破解工具。它的核心优势是 GPU 并行计算。以 8 位纯数字的 MD5 哈希为例中端显卡比如消费级 RTX 系列可以跑出每秒数十亿次的尝试速度这样的破解几乎是秒级完成的。常用命令结构hashcat -m 1000 -a 0 hash.txt dict.txt -w 3 -o cracked.txt其中 -m 1000 是 NTLM 哈希对应的模式-a 0 代表字典攻击-w 3 表示工作负载控制——值越高GPU 参与程度越大但同时会让电脑变得卡顿。我一般建议在专用测试机上用 -w 3在办公机上用 -w 2。Hashcat 最强大的地方是它的六种攻击模式组合字典、组合、掩码、混合、关联和规则变形。实战中我常用的是“字典加掩码”的混合模式比如先用字典跑一遍再把字典里的词和 4 位数字如 0000-9999做拼接对应命令是 -a 6。这样可以覆盖 “password1234” 这种典型弱密码场景。3.4 Hydra 在线密码探测实战离线破解能够完全发挥算力但很多现实场景中的目标根本没有给你下载哈希的机会明文密码只存在于真实的登录服务后面。这时候就需要 Hydra——一个灵活的在线暴力破解工具支持 HTTP 表单、SSH、FTP、RDP、MySQL 等多种协议。针对一个带用户名密码表单的登录系统Hydra 的典型用法是先抓取登录请求的 POST 数据然后指定失败时返回的提示信息这样 Hydra 才能知道是否成功。这是在线破解里最需要细心的一步。请求格式一旦写错Hydra 要么全部显示失败要么把成功信号全部吞掉。一个实际例子hydra -L users.txt -P pass.txt 目标IP http-post-form /login:user^USER^pass^PASS^:Ferror关键在冒号后面的 Ferror——表示页面中出现 error 时就认为登录失败。如果网站的失败提示语不是 errorHydra 会误判所有尝试都成功。所以实际使用中我会先用 Burp Suite 手动登录一次观察失败响应里的关键词再来配置 Hydra。在线暴力破解要注意频率控制。不加限制地尝试很快会把目标的 IP 封掉甚至触发账号锁定。也就是说即便你字典里存在正确密码一旦尝试次数过多触发了锁定策略破解也就无从继续了。更稳妥的做法是控制在每分钟 5-10 次尝试用慢速但隐蔽的方式推进。4. 完整密码破解流程演练工具熟归熟能不能跑通一条完整的链路才是真本事。下面以一个模拟项目为例串起从信息收集、字典生成、哈希获取到最终破解成功的整个过程。假设场景某公司委托你做一次内部网络渗透测试授权范围内的测试目标是公司内部的一台 Jenkins 服务器和部分员工的域账号。你的任务是检查是否存在弱口令。4.1 信息收集与字典定制首先通过公开渠道收集目标公司的域名、员工姓名、组织架构等基础信息。这一步常规可用的渠道是公司官网的团队介绍页、招聘公告、新闻稿以及一些合法的工商信息查询平台。工具的用法是把这些页面集中抓取后再清洗成词表。在 Kali 里CeWL 可以一步完成指定目标 URL设置抓取深度和最小词长输出到一个词表文件cewl -d 2 -m 5 http://target-site.com/team.html -w team_words.txt然后我用脚本把姓氏与名字的拼音组合如 wangqiang、qiangwang、wangqiang123、生日19900101、0101、990101、公司缩写ABC、abc、常见弱密码前缀password、admin、Welcome全部拼接成候选字典规模控制在 10 万条以内尽量保证针对性。4.2 获取哈希并做离线破解针对域账号的场景如果拿到了一个域控备份文件或本地的 SAM 文件就能提取 NTLM 哈希。模拟项目中我通过临时获得的管理员权限成功导出了一批账号哈希。这一步技术上不复杂关键是要在授权范围内操作并且只针对测试目标不越界碰其他系统。拿到哈希后首先用 hashid 确定格式——NTLM 哈希的开头通常是用户名的十六进制表示加冒号。对这批哈希我优先跑高频密码表再用规则变形扩展。实际结果很有代表性39 个账号哈希里有 8 个密码直接弱到离谱比如 123456、Pssw0rd、Welcome1还有 5 个是用姓氏拼音加公司缩写组合的比如 zhangsanABC、liabc01。整个过程不到 10 分钟因为这种规模的目标不需要太多算力。对 Jenkins 服务器则是用 Hydra 对登录页做在线探测字典就是刚才定制好的那批候选密码。由于登录接口设置了验证码这里就没法用 Hydra 了——需要单独写脚本模拟登录流程这属于更高阶的自定义测试以后可以单独展开。4.3 结果整理与报告输出破解结果整理这一阶段最容易被人忽视但其实非常关键。在实际渗透测试报告里我们不会赤裸裸地列出一堆明文密码而是会做分级处理哪些账号是管理员权限、哪些账号可以登录哪些系统、弱密码是否符合企业密码策略等。同时需要在报告中给出整改建议——比如强制使用密码管理器、开启多因素认证、设置账户锁定阈值等。这里有个细节明文密码和用户名不要直接贴在正文里报告要走加密通道交给甲方指定的联系人。密码破解的信息展示越克制越能体现你的专业度。5. 常见问题与排查技巧实录做密码破解不可能一帆风顺。下面把我这些年踩过的坑集中列出来每条都配了排查思路和解决方案可以当成一个速查表用。5.1 Hashcat 驱动报错或速度低于预期这是新手上手 Hashcat 时遇到最多的故障。现象是运行命令后直接报错说 no devices found 或者 OpenCL 相关错误。原因通常有三个一是显卡驱动没装好二是 Kali 默认使用的桌面环境屏蔽了 GPU 计算三是 OpenCL 运行时缺失。排查顺序我个人是这样先跑一下 hashcat -I 查看是否能看到设备列表看不到就检查驱动如果能看到设备但速度极慢检查 -w 参数是否设置过低以及是否不小心开启了 --force 参数导致走了 CPU 计算。经验之谈在虚拟机里跑 Hashcat 就不要指望 GPU 速度了。虚拟机默认只给你虚拟的显卡性能最多比 CPU 模式好一点。如果非要跑大规模 GPU 破解物理机安装 Kali 并装好 N 卡驱动是唯一靠谱的选择。5.2 字典命中率低当跑完一个字典文件破解结果依然一片空白时先别急着换更大的字典。更有效的做法是检查目标信息有没有收集到位。我遇到过一个案例某客户内部的密码统一是“公司英文名入职年份”比如 company2018。这种密码在任何公开字典里都命中不了因为它包含了高度定制的公司专属信息。所以排查字典命中率低的思路是第一回到信息收集阶段看看有没有遗漏关键的个人信息第二检查规则变形是否覆盖了常见的变换模式第三尝试混合攻击模式把字典和数字掩码做拼接。如果这三步都完成还是零命中要考虑目标密码是否用的是完全随机生成的密码——这种情况下字典破解本来就不该报什么期望建议改用更长位数的掩码攻击。5.3 在线暴力破解导致账号锁定在线破解最大的风险是触发目标系统的安全机制。很多企业系统会设置“连续 5 次失败就锁定 30 分钟”的策略一旦触发即便密码正确也登录不了还会惊动安全团队。这在授权测试中不一定是好事——虽然你测试出了薄弱环节但同时也在目标系统里留下了大量异常日志。我个人的实践方法是优先选择低频次慢速尝试把 Hydra 的 -t 参数调低并发线程数设为 1-w 参数拉大每次间隔 5 秒以上以便模拟正常人工登录的节奏。更重要的是先用 3-5 个明显错误的密码测一下系统的失败反馈与锁定逻辑确认安全性后再决定后续速度。如果系统已有锁定策略就切换到离线破解路线通过导出哈希解决不再做在线尝试。5.4 破解结果乱码或编码异常有些哈希破解出来是乱码或者看起来像是一堆十六进制字符。这个现象常见于从 Windows 系统抓取的哈希因为 NTLM 哈希的字节序与 ASCII 编码不一致。解决办法是用 hex 模式解析hashcat -m 1000 --show hash.txt --username --outfile cracked.txt如果破解出的密码包含不可打印字符可以用 hashcat 的 --outfile-format 2 参数把结果输出为十六进制格式再在本地转换成可读的 UTF-16 字符串。对于 WPA/WPA2 握手包密码本身就是一串 8 到 63 位的 ASCII 字符串如果破解出的结果中含有不可识别字符基本可以判断是字典不够准确重新检查字典内容即可。5.5 测试环境与生产环境的结果不一致有时候在测试环境里能轻松破解的密码到生产环境却完全跑不动。不是工具变了而是生产环境的密码策略往往更严格比如强制要求密码至少 12 位且包含大小写、数字和符号。面对这种系统字典攻击的命中率天然下降需要转向更长的掩码或规则变形策略。这里顺便强调一个防御视角如果你是企业安全负责人上面这些案例其实为你提供了一份“如何让密码更难被破解”的清单——强制密码长度、禁用常见弱密码、开启多因素认证、部署账户锁定策略这四件事做到位绝大多数暴力破解攻击都会被挡在门外。5.6 手握工具库的误用风险最后补充一个容易忽略的点Kali 自带工具非常多每个工具都要理解它的能力边界和潜在风险。比如一些扫描工具默认发送的探测流会让目标设备的 IPS/IDS 直接报警。在授权测试中这种行为只要向客户提前说明即可但在非授权环境中这就是实打实的违规操作。所以我接到项目的第一件事永远是确认授权边界、签字画押、明确允许的测试范围和测试时间窗口避免后续扯皮。写在最后密码破解这个方向本质上考验的是你对“密码作为人机接口”这一特性的理解深度。工具只是执行者真正的价值在于你能多准确地预测人类设置密码的行为。每次破解任务结束后我都会把新收录的密码形态、字典规则、工具参数整理到自己的知识库中日积月累之后面对新的目标时往往第一轮字典就能命中大半。对于刚开始接触这块的读者我的建议是别急着追求大字典和豪华硬件。先拿自己的测试设备练手把一个 100 万条的小字典玩透——掌握规则怎么加、掩码怎么配、速度怎么调优远比盲目堆算力实在。等理解了整套节奏再考虑上多显卡集群也不迟。最后分享一个小技巧破解不是终点结果输出同样重要。无论是测试报告里的风险评级还是代码里强密码策略的一行配置都要用明确的证据支撑你的结论。密码破解做得再漂亮如果输出报告含糊其辞客户依然不知道该怎么改进。真正体现专业水平的地方往往就在这最后一公里。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询