news 2026/1/26 6:15:38

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
❿⁄₄ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 密码破解理论(中)

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

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

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

​​​

▶ 信息收集
▶ 漏洞检测
▶ 初始立足点 ➢ 密码攻击 ➢ 密码破解理论(中)🔥🔥🔥
▶ 权限提升
▶ 横向移动
▶ 报告/分析
▶ 教训/修复

目录

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开头的密码,实际应用中需要根据需求调整过滤规则


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

让我们创建一个包含$1的规则文件,以将“1”追加到demo.txt字典中的所有密码尾巴上。
使用这个规则函数创建一个demo.rule。需要使用转义符“\”来转义特殊字符“$”,以便正确地将其输出到文件中,如下:

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

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


1.2.3.4 添加大写字母:c函数

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

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

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

两种规则编写方式对比

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

$1 c

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

password → password1 → Password1

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

$1 c

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

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 创建哈希文件和规则文件
# 将哈希值保存到文件 $ echo "f621b6c9eab51a3e2f4e167fee4c6860" > crackme.txt

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

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

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


1.3.1.3 破解执行命令

完整命令:

$ hashcat -m 0 crackme.txt /usr/share/wordlists/rockyou.txt -r demo3.rule --force

参数详解表

参数作用重要程度
-m0指定哈希类型为MD5🔴 关键
目标文件crackme.txt包含目标哈希的文件🔴 必需
字典路径/usr/share/wordlists/rockyou.txt基础密码字典🔴 必需
-rdemo3.rule指定规则文件🟡 重要
--force无值忽略警告,强制运行🟡 可选

1.破解流程解析
  1. 加载字典:读取rockyou.txt中的14,344,391个密码

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

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

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

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

计算规模

原始字典:约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.rule64条通用快速攻击最有效的64条规则
dive.rule数千条深度渗透测试全面覆盖各种变异
rockyou-30000.rule30,000条针对常见密码基于真实泄露数据
InsidePro-PasswordsPro.rule数百条专业渗透测试商业级规则集合

⚡ 快速使用示例

# 使用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全面覆盖,不遗漏可能变异
针对特定目标自定义规则基于已知策略精准打击
未知环境组合多个规则最大程度覆盖可能性

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/25 0:46:20

【人工智能领域】- 卷积神经网络(CNN)深度解析

卷积神经网络(CNN)深度解析:从猫的视觉皮层到AI视觉革命 文章目录 点击展开完整目录 一、生物学启示:从猫的视觉皮层到CNN的诞生 二、CNN结构解剖:卷积层与池化层的完美配合 三、卷积运算详解:数学原理与…

作者头像 李华
网站建设 2026/1/25 1:51:23

1小时验证创意:用COFFEETIME魔改打造咖啡社交MVP

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速开发一个咖啡社交平台的MVP,包含:1. 用户资料页(可记录喜欢的咖啡类型)2. 附近咖啡店地图 3. 简易社交动态流 4. 咖啡知识问答区…

作者头像 李华
网站建设 2026/1/25 21:52:56

告别低效写作:Typora对比传统文本编辑器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个写作效率对比工具。功能:1.内置Typora和传统编辑器模拟环境;2.提供标准化写作测试任务;3.自动记录完成时间和错误率;4.生成…

作者头像 李华
网站建设 2026/1/24 22:37:29

智慧城市速成:快速构建街景图像分析系统

智慧城市速成:快速构建街景图像分析系统 城市规划团队经常需要分析大量街景图片中的元素分布,例如统计绿化带、人行道、广告牌等城市设施的分布情况。传统的人工标注方式效率低下,而AI图像识别技术可以大幅提升分析效率。本文将介绍如何使用&…

作者头像 李华
网站建设 2026/1/25 21:53:43

智能相册进阶:用预训练模型实现照片自动打标与搜索

智能相册进阶:用预训练模型实现照片自动打标与搜索 作为一名个人开发者,你是否曾为海量照片的管理和搜索而头疼?传统的相册应用往往依赖手动标记或简单的文件名搜索,效率低下且体验不佳。本文将介绍如何利用预训练模型为你的照片管…

作者头像 李华
网站建设 2026/1/25 19:58:46

AI绘画师的秘密武器:快速搭建万物识别辅助工具

AI绘画师的秘密武器:快速搭建万物识别辅助工具 作为一名数字艺术家,你是否经常需要参考大量实物图片进行创作?手动分类和标注这些图片不仅耗时耗力,还容易出错。今天我要分享一个AI绘画师的秘密武器——快速搭建万物识别辅助工具&…

作者头像 李华