❿⁄₄ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 密码破解理论(中)

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​​​

​​​

▶ 信息收集

▶ 漏洞检测
▶ 初始立足点 ➢ 密码攻击 ➢ 密码破解理论(中)🔥🔥🔥

▶ 权限提升

▶ 横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.密码破解理论与实践

[1.1 密码破解流程](#1.1 密码破解流程)

[1.2 字典的变异:让密码适用新规则](#1.2 字典的变异:让密码适用新规则)

[1.2.1 为什么要进行字典的变异](#1.2.1 为什么要进行字典的变异)

[1.2.2 解决方案:创建规则函数](#1.2.2 解决方案:创建规则函数)

[1.2.3 规则函数变异密码字典的步骤](#1.2.3 规则函数变异密码字典的步骤)

[1.2.3.1 实验准备](#1.2.3.1 实验准备)

[1.2.3.2 过滤无效密码](#1.2.3.2 过滤无效密码)

[1.2.3.3 添加数字:使用 和 \^ 函数](#1.2.3.3 添加数字:使用 和 ^ 函数)

1.创建规则文件

2.使用规则文件1变形:添加数字

[1.2.3.4 添加大写字母:c函数](#1.2.3.4 添加大写字母:c函数)

1.添加规则函数

2.使用规则文件1变形:添加大写字母(及数字)

[1.2.3.5 添加特殊字符:完善密码策略](#1.2.3.5 添加特殊字符:完善密码策略)

1.添加规则函数

2.使用规则文件变形:添加特殊字符

[1.2.3.6 部分规则函数总结](#1.2.3.6 部分规则函数总结)

[1.3 基于规则的密码破解实战](#1.3 基于规则的密码破解实战)

[1.3.1 准备工作](#1.3.1 准备工作)

[1.3.1.2 创建哈希文件和规则文件](#1.3.1.2 创建哈希文件和规则文件)

[1.3.1.3 破解执行命令](#1.3.1.3 破解执行命令)

1.破解流程解析

2.破解结果分析

3.规则攻击效果分析

[1.3.2 安全启示](#1.3.2 安全启示)

[1.4 使用Hashcat预定义规则函数](#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 过滤无效密码
bash 复制代码
# 删除纯数字密码(示例)
$ 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开头的密码,实际应用中需要根据需求调整过滤规则


1.2.3.3 添加数字:使用 $^ 函数
函数 作用 示例 结果
$X 末尾添加字符X $1 passwordpassword1
^X 开头添加字符X ^3 password3password
1.创建规则文件

让我们创建一个包含$1的规则文件 ,以将"1"追加到demo.txt字典中的所有密码尾巴上。

使用这个规则函数创建一个demo.rule。需要使用转义符"\" 来转义特殊字符**"$"**,以便正确地将其输出到文件中,如下:

2.使用规则文件1变形:添加数字
bash 复制代码
$ hashcat -r demo.rule --stdout demo.txt
组件/选项 符号 说明 是否必需
命令主体 hashcat 密码破解工具,支持多种哈希算法 ✅ 必需
规则文件选项 -r demo.rule 指定规则文件,定义密码变换规则 🔄 可选
输出模式选项 --stdout 将结果输出到屏幕,不进行实际破解 🔄 可选
输入文件 demo.txt 原始密码字典文件 ✅ 必需

**执行结果:**所有密码后添加了一个1。


1.2.3.4 添加大写字母:c函数

我们思考一个现实的场景:当被通知需要在密码中强制使用大写字符 时****,**** 许多用户倾向于将第一个字符大写。 因此,我们将在规则文件中添加c规则函数:它将第一个字符大写并将其余字符转换为小写

函数 作用 示例 结果
c 首字母大写,其余小写 c passwordPassword
1.添加规则函数

尝试使用两个规则文件进行示例:demo1.rule和demo2.rule。

两种规则编写方式对比

① demo1.rule(单行组合规则)

bash 复制代码
$1 c

执行顺序:先在尾部添加数字1 → 再首字母大写,如下示例:

bash 复制代码
password → password1 → Password1

② demo2.rule(多行独立规则)

bash 复制代码
$1
c

生成变体:每个密码生成2个变体,如下示例:

bash 复制代码
password → password1
password → Password
2.使用规则文件1变形:添加大写字母(及数字)

综上,如下图:

根据这样的情况,目前demo1.rule规则文件制作出来的密码字典已经适应了三个密码策略中的两个。 接下来,继续处理第三个策略:添加一个特殊字符


1.2.3.5 添加特殊字符:完善密码策略

我们再思考一个场景:当被通知需要在密码中强制使用特殊字符 时****,**** 许多用户倾向于**:**

常见特殊字符添加 :使用$!在末尾添加"!"

1.添加规则函数
规则文件 规则内容 执行顺序 示例结果
demo1.rule $1 c $! 数字→大写→特殊 Password1!
demo2.rule $! $1 c 特殊→数字→大写 Password!1

🔄 规则执行顺序从左到右依次应用

2.使用规则文件变形:添加特殊字符

原始密码: password

经过**$1 c $!规则**处理:

  1. password + 1password1

  2. 首字母大写 → Password1

  3. 添加!Password1!

✅ 满足所有要求

  • 大写字母:P

  • 数字:1

  • 特殊字符:!


1.2.3.6 部分规则函数总结
函数 名称 作用 常用场景
$X 追加 末尾添加字符X 添加年份、序号
^X 前置 开头添加字符X 添加前缀标识
c 首字母大写 首字母大写其余小写 符合大写要求
l 全小写 所有字母转小写 标准化处理
u 全大写 所有字母转大写 符合大写要求

还有非常多的规则函数 可以到Hashcat Wiki网站进行查询:


1.3 基于规则的密码破解实战

🎯 实战背景和目标:

在目标系统中获取到一个MD5哈希值:f621b6c9eab51a3e2f4e167fee4c6860

已知目标密码策略:必须包含大写字母、数字、特殊字符

目标:找到MD5哈希值的密码明文

1.3.1 准备工作

组件 路径/内容 作用
哈希值 f621b6c9eab51a3e2f4e167fee4c6860 待破解目标
字典文件 /usr/share/wordlists/rockyou.txt 使用基础密码字典
哈希文件 crackme.txt 把目标哈希(f621b...)存入该文件
规则文件 demo3.rule 密码变异规则

1.3.1.2 创建哈希文件和规则文件
bash 复制代码
# 将哈希值保存到文件
$ echo "f621b6c9eab51a3e2f4e167fee4c6860" > crackme.txt

🛠️ 规则文件demo3.rule 设计:

规则策略分析:为满足密码策略(大写字母+数字+特殊字符),设计多层次规则(现实中规则文件会比这个复杂的多):

bash 复制代码
c       # 首字母大写,其余小写
$!      # 末尾添加特殊字符 "!"
$1      # 末尾添加数字 "1"
$2      # 末尾添加数字 "2"
$1 $2 $3 # 组合添加数字 "123"
规则行 作用 示例转换 策略满足情况
c 首字母大写 computerComputer ✅ 大写字母
$! 添加特殊字符 computercomputer! ✅ 特殊字符
$1 添加数字1 computercomputer1 ✅ 数字
$2 添加数字2 computercomputer2 ✅ 数字
$1 $2 $3 添加数字序列 computercomputer123 ✅ 数字

1.3.1.3 破解执行命令

完整命令:

bash 复制代码
$ hashcat -m 0 crackme.txt /usr/share/wordlists/rockyou.txt -r demo3.rule --force

参数详解表

参数 作用 重要程度
-m 0 指定哈希类型为 MD5 🔴 关键
目标文件 crackme.txt 包含目标哈希的文件 🔴 必需
字典路径 /usr/share/wordlists/rockyou.txt 基础密码字典 🔴 必需
-r demo3.rule 指定规则文件 🟡 重要
--force 无值 忽略警告,强制运行 🟡 可选
1.破解流程解析
  1. 加载字典:读取rockyou.txt中的14,344,391个密码

  2. 应用规则:为每个原始密码生成3个变体(根据规则函数)

  3. 计算哈希:对每个密码变体计算MD5哈希

  4. 比对目标:与目标哈希值比对

  5. 输出结果:找到匹配项时显示破解结果

计算规模

bash 复制代码
原始字典:约1400万密码
规则数量:3条规则
总尝试次数:1400万 × 5 = 约4200万次尝试
2.破解结果分析

成功破解,破解出的密码Computer123!

策略符合性验证:

要求 密码 Computer123! 符合性
大写字母 C
小写字母 omputer
数字 123
特殊字符 !
长度 12位

⏱️ 性能评估:

  • 破解时间 :仅用几秒钟

  • 运行环境:普通CPU(非GPU加速)

  • 效率对比:远快于暴力破解!!!

3.规则攻击效果分析
指标 数值 说明
原始字典大小 14,344,391条 rockyou.txt原始密码数
规则数量 3条 demo3.rule中的规则
理论最大变体 43,033,173条 原始密码×规则数
实际尝试数 ≤理论最大值 Hashcat会去重和优化
破解时间 几秒钟 CPU环境下
密码不在原始字典 通过规则生成的新密码

1.3.2 安全启示

1.对防御方的启示

风险点 缓解措施
规则攻击有效 实施更严格的密码策略
用户习惯可预测 教育用户创建真正随机密码
字典+规则组合强大 监控和阻止多次尝试

2.对攻击方的价值

优势 应用场景
高效率 时间有限的渗透测试
高成功率 针对有密码策略的目标
资源友好 无需强大硬件支持

重要!

在尝试创建用于变异现有字典的规则时,应始终考虑密码的人类行为和便利性,例如:

大多数用户使用一个主要单词,并将其修改以符合密码策略,可能附加数字和特殊字符。

  • 当需要大写字母时,大多数用户将首字母大写
  • 当需要数字时,大多数用户将数字添加到密码的末尾,并出现"123"这种好记忆的组合
  • 当需要特殊字符时,大多数用户将特殊字符添加到密码的末尾, 并依赖键盘左侧的字符(如:!@#),因为这些数字易于到达和输入
  • 还有一些是用户的出生年月、英文名字、好记的绰号等

因此在指定规则函数时,需要多考虑以上的因素作为规则,以便更容易猜出。


1.4 使用Hashcat预定义规则函数

📁 规则文件位置

标准路径/usr/share/hashcat/rules/

🎯 预定义规则优势

优势 说明
专家验证 由安全专家和社区长期优化
全面覆盖 包含各种常见密码变异模式
即拿即用 无需从零创建,节省时间
实战测试 经过大量实际场景验证

📊 常用预定义规则示例

规则文件 规则数量 适用场景 特点
best64.rule 64条 通用快速攻击 最有效的64条规则
dive.rule 数千条 深度渗透测试 全面覆盖各种变异
rockyou-30000.rule 30,000条 针对常见密码 基于真实泄露数据
InsidePro-PasswordsPro.rule 数百条 专业渗透测试 商业级规则集合

⚡ 快速使用示例

bash 复制代码
# 使用best64规则进行攻击
$ hashcat -m 0 target_hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

# 使用多个规则文件
$ hashcat -m 0 target_hash.txt rockyou.txt -r best64.rule -r dive.rule

🔍 规则选择策略

场景 推荐规则 原因
快速初步尝试 best64.rule 效率高,覆盖常见模式
深度渗透测试 dive.rule 全面覆盖,不遗漏可能变异
针对特定目标 自定义规则 基于已知策略精准打击
未知环境 组合多个规则 最大程度覆盖可能性

预定义规则是强大的"工具箱",但最有效的攻击永远是"量体裁衣"------基于具体目标信息定制策略。在没有特定情报时,预定义规则提供了最佳起点;获得情报后,应立即转向针对性更强的自定义规则。

欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

相关推荐
Bug.ink1 分钟前
BUUCTF——WEB(6)
数据库·sql·网络安全·靶场·buuctf
NOVAnet202313 分钟前
NOVA百科|跨境网络不掉线:南凌科技智能QoS如何保障全球组网关键应用畅通无阻
网络安全·sd-wan·网络服务·全球组网·南凌科技
Whoami!17 分钟前
❿⁄₅ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 密码破解理论(下)
网络安全·信息安全·密码破解原理
lifejump41 分钟前
Pikachu | Unsafe Filedownload
前端·web安全·网络安全·安全性测试
芯盾时代11 小时前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
白山云北诗17 小时前
企业网站网络安全防护方案
安全·web安全·网络安全·ddos防护·web应用防火墙·cc防护
FIT2CLOUD飞致云20 小时前
操作教程|JumpServer基于作业中心脚本定时删除Windows Server本地用户
运维·网络安全·开源·堡垒机
Bruce_Liuxiaowei1 天前
工作组环境内部信息搜集:从基础查询到权限分析
网络·经验分享·网络安全
网安CILLE1 天前
Linux 命令大全(网络安全常用)
linux·运维·服务器·网络安全
独角鲸网络安全实验室1 天前
CVE-2025-61882深度分析:Oracle Concurrent Processing BI Publisher集成远程接管漏洞的技术原理与防御策略
数据库·网络安全·oracle·漏洞·ebs·cve-2025-61882·xml 注入