文章总结: 本文档详解Kali使用John和Hashcat破解Hash的实操,涵盖快慢哈希原理及加盐场景。核心指出MD5等快哈希易被秒破,而bcrypt等慢哈希几乎无法破解。文档提供了具体攻击命令与字典技巧,并强调防御端必须采用慢哈希配合随机盐以确保密码安全。 综合评分: 88 文章分类: 渗透测试,安全工具,实战经验
如何利用kali破解hash值?
原创
hack07
网络攻防研究
2025年12月29日 17:21 上海
Kali 破解 Hash 值 完整实操教程(新手易懂 + 全工具)
结合咱们之前聊的MD5 (快哈希)/bcrypt (慢哈希)/ 加盐 / 无盐的核心原理,我给你讲透 Kali 破解 Hash 的全套实操方法,包含 Kali预装的 2 个核心神器(无需额外安装)、所有破解场景、实操命令,还有最关键的:为什么慢哈希几乎破解不了(完美呼应咱们之前的核心问题)。
✅ 前置核心原则(重中之重,必须先记住)
这是咱们之前聊的知识点的实战落地,也是你破解 Hash 的核心规律,所有破解效率的差异都源于此,记住这 3 条,你就懂了所有逻辑:
-
Hash 算法的快慢,决定破解难度
:MD5/SHA1/SHA256(快哈希)= 极易破解,几分钟出结果;bcrypt/Argon2/PBKDF2(慢哈希)= 几乎无法破解,跑几天也出不来,哪怕是弱密码。
-
加盐与否,决定破解方式
:无盐 Hash → 直接跑字典 / 彩虹表,秒破;固定盐 Hash → 改命令加固定盐值,难度略增但依然快;随机盐 Hash → 只能单用户单独跑,破解效率暴跌,但对快哈希依然有效。
-
破解的本质,就是咱们聊的「正向暴力枚举」
:Kali 的工具不会逆向推导明文,而是拿字典 / 暴力组合的明文 → 用对应 Hash 算法计算 Hash 值 → 和目标 Hash 对比,匹配则出明文,这和咱们聊的黑客攻击逻辑完全一致。
补充:Kali Linux 里所有 Hash 破解工具都是预装的,无需下载任何插件 / 依赖,打开终端就能用,这也是 Kali 做渗透测试的优势。
✅ 准备工作:2 个必做前置步骤(新手必看)
1. 第一步:识别你的 Hash 类型(最容易踩坑的点)
破解 Hash 的前提是:你必须知道这个 Hash 是用什么算法生成的(MD5?SHA256?bcrypt?),比如你拿破解 MD5 的命令跑 bcrypt,一辈子也跑不出来。
✔️ 方法 1:Kali 内置工具自动识别(推荐,无脑用)
工具名:hash-identifier ,Kali 预装,终端输入命令回车即可,然后粘贴你的 Hash 值,工具会自动识别并给出大概率的算法类型。
bash
运行
hash-identifier
示例:输入 e10adc3949ba59abbe56e057f20f883e,工具会直接提示 MD5。
✔️ 方法 2:肉眼识别(快速判断)
- MD5:固定32 位 十六进制字符
- SHA1:固定40 位 十六进制字符
- SHA256:固定64 位 十六进制字符
- bcrypt:开头是
$2a$/$2b$/$2y$,比如$2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,长度不固定,一眼就能认出 - PBKDF2:格式一般是
算法$迭代次数$盐值$Hash值
2. 第二步:准备 Hash 文件(规范格式)
Kali 的破解工具,都建议把 Hash 值写到一个文本文件里,而不是直接在命令行输入,尤其是批量破解多个 Hash 时,格式如下:
- 终端新建文本文件:
touch hash.txt - 编辑文件:
vim hash.txt - 粘贴 Hash 值,一个 Hash 占一行,保存退出(vim 按
i编辑,esc+:+wq保存)。
✅ 核心工具一:John the Ripper(约翰,简称 john)—— 新手首选,简单无脑,成功率高
✅ 工具介绍
john 是 Kali预装的王牌 Hash 破解工具,中文名叫约翰开膛手,优点:命令简单、内置字典、支持几乎所有 Hash 算法、自动识别部分 Hash 类型,对新手极其友好,90% 的 Hash 破解需求,用 john 就够了。
- 无需安装:终端直接输入
john即可调用 - 核心破解方式:字典攻击(优先,最快) → 暴力攻击(兜底,慢)
- 内置字典路径:
/usr/share/john/password.lst(Kali 自带的弱密码字典,包含 123456、admin、root 等常用密码)
✔️ 场景 1:破解【无盐 快哈希】(MD5/SHA1/SHA256)—— 最常用,秒破
这是渗透测试中最常见的场景,比如数据库里直接存的 MD5,无任何盐值,也是破解效率最高的场景。
命令格式(万能):
john --format=对应算法 你的hash文件路径
常用算法参数(必记):
- MD5:
--format=raw-md5 - SHA1:
--format=raw-sha1 - SHA256:
--format=raw-sha256
实操示例(破解 MD5):
比如你的 hash.txt 里存的是 e10adc3949ba59abbe56e057f20f883e(明文 123456)
john --format=raw-md5 hash.txt
执行结果:
终端会瞬间跑出结果,显示 123456,破解完成!✅
补充:john 默认用内置字典,如果内置字典破解失败,可以加参数指定更强的字典文件,后面会讲。
✔️ 场景 2:破解【固定盐 快哈希】(MD5 (密码 + 盐))—— 重点!
咱们之前聊的「给 MD5 加固定盐」,比如 MD5(123456+abc123),这种 Hash 也是快哈希,john 依然能轻松破解,只是需要加一个参数指定盐值和拼接规则。
核心原理:
固定盐的 Hash 格式一般是 MD5(明文+盐) 或 MD5(盐+明文),john 支持自定义 Hash 的生成规则,用 --rules 参数即可。
实操示例:
比如目标 Hash 是 MD5(密码+123456),Hash 值是xxxxxx,存到 hash.txt 里,命令:
john --format=raw-md5 --rules=':append(123456)' hash.txt
-
append(123456)表示给字典里的每个密码后面拼接盐值 123456,然后计算 MD5
-
如果是
盐+密码,就用prepend(123456):密码前面拼接盐值
结果:
依然是几秒内破解,因为 MD5 的计算速度太快了,加盐只是多了一步拼接,不影响效率。
✔️ 场景 3:破解【bcrypt 慢哈希】—— 重点验证!为什么慢哈希几乎破解不了?
咱们之前聊的核心结论:bcrypt 就算是弱密码,也几乎破解不了,这里用 john 实操验证,彻底坐实这个结论!
bcrypt 的 john 命令格式:
john --format=bcrypt hash.txt
实操示例:
比如 hash.txt 里存的是 bcrypt 加密的123456,Hash 值是$2b$10$EixZaYb4xU58Gpq1R0yWbeb00LU5qUaK6x70tGbTliB94K6tU84jW
执行结果:
终端会开始跑,但你会发现:每秒只能跑 8~10 次,和咱们之前说的1秒≈10次bcrypt完全一致!
- 破解这个弱密码
123456,john 需要跑几十分钟甚至几小时; - 如果是 8 位混合密码,需要跑几十年,这在实战中完全没有意义,黑客会直接放弃!
✅ 这就是咱们之前聊的核心:慢哈希的慢,是算法层面的,工具再牛也没用。
✅ 核心工具二:Hashcat(哈希猫)—— 进阶神器,性能拉满,渗透测试首选
✅ 工具介绍
hashcat 是目前最强的 Hash 破解工具,没有之一,也是 Kali 预装的,优点:
- 支持显卡 GPU 加速(核心!),破解速度是 john 的几十倍甚至上百倍,跑快哈希时,普通显卡一秒能跑几十亿次;
- 支持所有已知的 Hash 算法,包括 MD5/SHA256/bcrypt/Argon2/PBKDF2/AES 加密后的密文等;
- 支持字典攻击、暴力攻击、掩码攻击、彩虹表攻击等所有破解方式;
- 支持随机盐 Hash的破解,这是 john 的短板。
缺点:命令参数比 john 多一点点,但新手只要记几个核心命令,完全够用。
补充:Hashcat 的破解效率,完全继承咱们的核心原则:快哈希秒破,慢哈希无解。
✅ Hashcat 核心规则(必记)
- Hashcat 用数字代号表示 Hash 算法,而不是英文,比如 MD5=0,bcrypt=3200;
- 核心破解模式:
-m 算法代号 -a 攻击模式 目标hash文件 字典文件路径 - 攻击模式(
-a参数):
-
-a 0:字典攻击(优先,最快,99% 的场景用这个)
-
-a 3:暴力攻击(掩码攻击,兜底,破解复杂密码)
✅ 必记 Hash 算法代号(高频)
- MD5 →
0 - SHA1 →
100 - SHA256 →
1400 - bcrypt →
3200(重中之重!) - PBKDF2-SHA256 →
10000
✔️ 场景 1:破解【无盐 MD5】(最常用,Hashcat 实操)
字典用 Kali 内置的字典:/usr/share/wordlists/rockyou.txt.gz
这个是 Kali 最经典的密码字典,包含1400 万 + 常用弱密码,解压后直接用,破解成功率 99%!
第一步:解压 rockyou 字典(首次用必做)
gunzip /usr/share/wordlists/rockyou.txt.gz
第二步:执行破解命令(MD5)
hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
结果:
瞬间出结果,明文123456直接显示,比 john 还快,因为 Hashcat 用了显卡加速!
✔️ 场景 2:破解【随机盐 MD5】—— 黑客真实攻击场景!
这是咱们之前聊的最接近真实的场景:数据库里的 MD5 是每个用户一个随机盐,比如用户 A 是MD5(密码+saltA),用户 B 是MD5(密码+saltB)。
这种场景下,john 几乎没用,但 Hashcat 能轻松破解,只是每个用户单独跑,不过因为 MD5 是快哈希,依然很快。
实操:
随机盐的 Hash 格式一般是 用户名:Hash值:盐值,存到 hash.txt 里,比如:
user1:e10adc3949ba59abbe56e057f20f883e:abc123user2:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:def456
然后用 Hashcat 的-j参数指定拼接规则(密码 + 盐):
hashcat -m 0 -a 0 -j '$abc123' hash.txt /usr/share/wordlists/rockyou.txt
结果:
依然是几秒内破解,哪怕是 100 个用户的随机盐 MD5,Hashcat 开多线程也能在几分钟内跑完。
✔️ 场景 3:破解【bcrypt 慢哈希(代号 3200)】—— 终极验证!无解!
这是最关键的实操验证,也是咱们所有对话的最终闭环!
执行命令:破解 bcrypt 的 123456,用最强的 rockyou 字典 + 显卡加速
hashcat -m 3200 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
执行结果:
终端显示:每秒仅能破解 5~10 个密码,哪怕是 1400 万的字典,跑完需要几百个小时,如果是复杂密码,需要几年甚至几十年!
✅ 结论:在实战中,bcrypt/Argon2 这类慢哈希,是绝对无法被破解的,这就是为什么所有企业都用慢哈希存密码,这是真正的铜墙铁壁!
✅ 补充:3 个提升破解成功率的小技巧(渗透测试必学)
1. 用更强的密码字典
Kali 内置的rockyou.txt是基础字典,你可以下载社工字典 / 中文密码字典放到 Kali 里,比如包含手机号、生日、姓名拼音的字典,破解中文用户的密码成功率会大幅提升。
2. 暴力攻击(掩码攻击)
针对无规律的复杂密码(比如a1B2c3D4),用 Hashcat 的-a3暴力攻击,指定密码的长度和字符集,比如破解 8 位数字 + 字母的密码:
hashcat -m 0 -a3 hash.txt ?a?a?a?a?a?a?a?a
-
?a表示所有大小写字母 + 数字 + 符号
3. 在线彩虹表破解(适合无盐快哈希)
如果本地破解慢,直接用在线彩虹表网站(比如 CrackStation),粘贴 MD5/SHA256,秒出明文,这些网站的后台是几亿条的密码 – Hash 对照表,成功率 100%。
✅ 反向警示:从「黑客视角」看懂密码安全的防御逻辑(开发者必看,重中之重)
你现在学会了用 Kali 破解 Hash,更重要的是反过来理解:作为开发者,如何让自己的系统绝对不被破解,这也是咱们所有对话的核心目的,总结成 4 条铁律,背下来,你的系统永远不会被破解 Hash:
❌ 绝对禁止做的事(自杀级)
- 明文存储密码 / Base64 编码存储 → 黑客拿到直接用,无需破解;
- 无盐 MD5/SHA256 存储 → Kali 秒破,毫无抵抗力;
- 固定盐 MD5/SHA256 存储 → Kali 几分钟破解,依然裸奔。
✅ 必须做的事(绝对安全,企业级标准)
-
密码存储只用慢哈希
bcrypt/Argon2/PBKDF2,哪怕是弱密码,黑客也破解不了;
-
慢哈希必须加随机盐
每个用户一个唯一盐值,盐值和 Hash 值一起存库,bcrypt 会自动把盐值嵌入到 Hash 结果里,无需手动存储;
-
慢哈希的复杂度拉满
bcrypt 的
cost值设为 10~12,PBKDF2 的迭代次数设为 10 万次以上,让破解速度慢到极致。
✅ 终极总结(所有知识点闭环,完美呼应你的所有问题)
结合你之前问的:Base64、AES、MD5 是不是哈希、快哈希和慢哈希的区别,还有今天的 Kali 破解实操,我把所有核心知识点浓缩成 3 句话,你彻底吃透了这些,就是密码安全的专家:
-
Hash 破解的本质
正向枚举明文→计算 Hash→对比匹配,没有逆向破解,所有破解效率都取决于 Hash 算法的计算速度;
-
快哈希(MD5/SHA256)
无论加盐与否,Kali 都能轻松破解,只是时间问题,绝对不能存密码;
-
慢哈希(bcrypt/Argon2)
哪怕是弱密码,Kali 也几乎破解不了,破解时间久到失去意义,这是密码存储的唯一正确选择。
问题:hashcat -m 0 -a 0 -j ‘$abc123’ hash.txt /usr/share/wordlists/rockyou.txt 这里为什么是$?
$ 符号的规则语法(Hashcat 官方定义)
Hashcat 为了支持「密码 + 盐 / 盐 + 密码」这类拼接场景,定义了一套极简的规则符号,核心锚点只有两个:
| 符号 | 规则含义 | 示例(原始密码:123456) | 加工后密码 | | — | — | — | — | | $ | 在密码末尾追加后续字符 | $abc123 | 123456abc123 | | ^ | 在密码开头追加后续字符 | ^abc123 | abc123123456 |
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络攻防研究 hack07《如何利用kali破解hash值?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论