郑重声明:本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论 | 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶ 信息收集 ▶ 漏洞检测 ▶ 初始立足点 ➢ 密码攻击 ➢ 密码破解理论(中)🔥🔥🔥 ▶ 权限提升 ▶ 横向移动 ▶ 报告/分析 ▶ 教训/修复
目录
1.密码破解理论与实践
1.1 密码破解流程
1.2 字典的变异:让密码适用新规则
1.2.1 为什么要进行字典的变异
1.2.2 解决方案:创建规则函数
1.2.3 规则函数变异密码字典的步骤
1.2.3.1 实验准备
1.2.3.2 过滤无效密码
1.2.3.3 添加数字:使用 $ 和 ^ 函数
1.创建规则文件
2.使用规则文件1变形:添加数字
1.2.3.4 添加大写字母:c函数
1.添加规则函数
2.使用规则文件1变形:添加大写字母(及数字)
1.2.3.5 添加特殊字符:完善密码策略
1.添加规则函数
2.使用规则文件变形:添加特殊字符
1.2.3.6 部分规则函数总结
1.3 基于规则的密码破解实战
1.3.1 准备工作
1.3.1.2 创建哈希文件和规则文件
1.3.1.3 破解执行命令
1.破解流程解析
2.破解结果分析
3.规则攻击效果分析
1.3.2 安全启示
1.4 使用Hashcat预定义规则函数
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
1.密码破解理论与实践
1.1 密码破解流程
详见下一篇文章详细说明。本文先以初步原理结合实践进行表述。
1.2 字典的变异:让密码适用新规则
1.2.1 为什么要进行字典的变异
🔐 密码策略的演进:近年来,密码策略越来越严格,普遍要求:
-
最小密码长度(通常8位以上)
-
必须包含多种字符类型:
-
大写字母
-
小写字母
-
特殊字符(如!@#$%)
-
数字
-
⚠️ 传统密码字典的不足:
常用密码字典(如rockyou.txt)中的大多数密码无法满足现代密码策略要求。如果直接用于具有强密码策略的目标,会导致大量无效尝试。
示例检测:rockyou.txt前10个密码
| 123456 | ❌ | ✅ | ❌ | ✅ | ❌ |
| 12345 | ❌ | ✅ | ❌ | ✅ | ❌ |
| 123456789 | ❌ | ✅ | ❌ | ✅ | ❌ |
| password | ❌ | ✅ | ❌ | ❌ | ❌ |
| iloveyou | ❌ | ✅ | ❌ | ❌ | ❌ |
| princess | ❌ | ✅ | ❌ | ❌ | ❌ |
| 1234567 | ❌ | ✅ | ❌ | ✅ | ❌ |
| rockyou | ❌ | ✅ | ❌ | ❌ | ❌ |
| 12345678 | ❌ | ✅ | ❌ | ✅ | ❌ |
| abc123 | ❌ | ✅ | ❌ | ✅ | ❌ |
📌 结果:前10个密码无一同时满足大写字母、特殊字符和数字的要求。
1.2.2 解决方案:创建规则函数
在将字典发送到目标前,通过规则函数自动修改字典中的密码,使其符合密码策略。
规则函数的作用:
-
🔧 添加字符:在密码末尾/开头添加固定字符(如!2023)
-
🔄 替换字符:将字母替换为相似数字(如a→@、o→0)
-
🆙 大小写变换:将部分字母转为大写
-
🧩 组合操作:一个规则可包含多个函数
规则文件示例:
$1$2$3 # 在末尾添加数字123
c # 首字母大写
@ # 将a替换为@
📊 基于规则攻击的影响
| ✅ 优势 | 自动化适配密码策略,显著提高命中率 |
| ⚡ 效率 | 现代硬件可轻松处理长度<8位的常见密码变异 |
| 📈 数量增长 | 规则应用会大幅增加尝试的密码数量 |
| 🎯 精准度 | 针对性强,避免无效尝试 |
1.2.3 规则函数变异密码字典的步骤
🎯 实战目标:创建符合密码策略的规则函数
密码策略要求:必须包含数字、特殊字符、大写字母(每种至少一个)
1.2.3.1 实验准备
将rockyou.txt的前十个密码复制并保存到新创建的passwordattacks目录下的demo.txt文件中。
# 创建测试密码文件 demo.txt
123456
12345
123456789
password
iloveyou
princess
1234567
rockyou
12345678
abc123
1.2.3.2 过滤无效密码
# 删除纯数字密码(示例)
$ sed -i \’/^[0-9]*$/d\’ demo.txt
| 命令主体 | sed | 流编辑器,用于对文本进行流式处理和编辑 | 文字处理器中的“查找替换”功能 |
| 编辑模式 | -i | 就地编辑模式,直接修改源文件,不创建备份 | 直接在原文档上修改,不生成副本 |
| 正则表达式 | /^[0-9]*$/ | 匹配整行都是数字的行,或者空行 | 查找所有纯数字的行的句子 |
| 操作指令 | d | 删除匹配的行 | 将找到的句子完全删除 |
📝 表达式拆解:/^[0-9]*$/
| / | 定界符 | 标记正则表达式的开始和结束 | 类似引号,包裹整个表达式 |
| ^ | 行首锚点 | 匹配行的开头位置 | 确保从行首开始匹配 |
| [0-9] | 字符类 | 匹配任意一个数字(0-9) | 相当于 [0123456789] |
| * | 量词 | 匹配前一个元素0次或多次 | 可以没有数字,也可以有多个数字 |
| $ | 行尾锚点 | 匹配行的结束位置 | 确保匹配到行尾 |
| / | 定界符 | 表达式结束 | 与开头定界符配对 |
执行后如下:demo.txt中剩下5个密码。

注意:原示例(sed -i \’/^1/d\’ demo.txt)仅删除以1开头的密码,实际应用中需要根据需求调整过滤规则


