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

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

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

​​​​​

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

目录

1.密码破解实践

1.1 破解密码管理器KeePass:提取主密码

1.1.1 场景与目标

1.1.2 实践具体步骤

1.1.2.1 通过RDP连接目标主机

1.1.2.2 检查是否安装 KeePass

1.1.2.3 在全盘搜索 .kdbx 数据库文件

1.kdbx数据库文件介绍

①什么是.kdbx文件?

②.kdbx 文件的安全性如何?

③生成 keepass.hash 的过程(破解准备)

2.搜索.kdbx文件

3.把找到的.kbdx文件移到kali上

1.1.2.4 将文件转换为Hashcat可用的格式

1.使用转换脚本生成哈希文件

2.keepass.hash文件结构解析

①哈希结构视觉化表示

②哈希字段详细解析表

③破解难点分析

④关键要点总结

3.进一步修改哈希文件

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


1.密码破解实践

1.1 提取密码管理器KeePass主密码

1.1.1 场景与目标

      密码管理器(如 KeePass、1Password)能帮助用户管理大量复杂密码,但主密码一旦被破解,将导致所有存储密码泄露,给组织带来巨大风险。

      假设:我们可以远程到目标工作站(SALESWK01)的访问权限,并拥有用户 jason 的凭据。我们远程登录到系统桌面。

      目标

  •  ✅ 提取密码管理器的数据库文件

  • 🔄 将其转换为可破解的格式

  • 🛠️ 破解主数据库密码 


1.1.2 实践具体步骤

1.1.2.1 通过RDP连接目标主机
  • 使用 jason 的凭据,通过远程桌面(RDP)连接到 192.168.50.203(SALESWK01)。

  • 成功登录后,进入 Windows 桌面环境。 

💡 提示:图形化界面(GUI)的访问为我们后续的手动搜索提供了便利。


1.1.2.2 检查是否安装 KeePass

由于拥有 GUI 访问权限,我们使用系统内置的“应用和功能”列表进行查看:

  • 点击 Windows 开始菜单

  • 输入 app,选择 “添加或删除程序”

  • 在已安装程序列表中滚动查找。

发现:列表中明确显示 KeePass 已安装。


🔍 研究得知:查阅网上资料发现,KeePass的数据库通常保存为扩展名为 .kdbx 的文件。同时,系统上也可能有多个这样的数据库。例如,不同部门、不同业务的这类数据库。


1.1.2.3 在全盘搜索 .kdbx 数据库文件
1.kdbx数据库文件介绍

      我们扮演 “数字侦探”,在文件系统中进行地毯式搜索之前,我们了解下.kdbx数据库文件。

①什么是.kdbx文件?

  .kdbx 文件是 KeePass 密码管理器 的专用数据库文件,相当于一个 “数字保险箱”。它通过强加密技术保护存储在内的所有用户名、密码及其他敏感信息只有输入正确的主密码才能解锁访问。

.kdbx 文件中存储哪些内容?

存储项 说明 类比
密码条目 每个账户的 用户名、密码、URL、备注、标签 等 保险箱中的一个个“小抽屉”
组结构 用于分类管理(如工作、社交、个人等)的文件夹 保险箱内的“分层隔板”
加密密钥 用于解密数据的密钥信息(需主密码或密钥文件激活) 保险箱的“锁芯机制”
附加数据 文件附件、自定义字段等额外信息 藏在抽屉里的“夹层”
自动生成密码 KeePass 生成的强密码记录 保险箱自带的“密码配方”
②.kdbx 文件的安全性如何?
  • 强加密保障:文件使用 AES ChaCha20 等强加密算法,即使文件被窃取,也无法直接读取内容。

  • 双因子解锁:需要提供 主密码 或 密钥文件(或两者结合)才能解密。

  • 本地化存储:数据通常保存在本地,不依赖云端,减少了远程攻击风险。

⚠️ 核心风险:一旦主密码被破解,整个“保险箱”将完全暴露。

③生成 keepass.hash 的过程(破解准备)

这是将 加密数据库 转换为 可破解格式 的关键步骤:

步骤 输入 → 输出 工具 目的
1. 提取哈希 .kdbx 文件 → keepass.hash 文本文件 keepass2john 从加密数据库中提取出代表主密码的加密哈希值
2. 哈希内容 包含主密码的哈希值 + 加密参数(如迭代次数、盐值等) - 为后续破解工具提供标准化输入
3. 准备破解 keepass.hash → 交给 John the Ripper / Hashcat 密码破解工具 通过离线爆破尝试还原主密码

🎯 关键理解

  • keepass.hash不是密码本身,而是可用于 “测试主密码是否匹配” 的加密数据包。

  • 这个过程相当于为保险箱的锁 制作了一个“测试模型”,攻击者可以在不触动原锁的情况下,无限次尝试破解密码。

💡 形象比喻:整个流程如同窃贼偷走保险箱(获取.kdbx),拆下它的锁芯制作成测试工具(生成hash),然后在自己的作坊里反复试验密码(Hashcat破解),直到打开锁芯(获得主密码)。

      掌握了.kdbx文件的本质与哈希提取原理,就为后续的实际破解操作奠定了坚实基础。接下来,即可使用Hashcat等工具,对提取出的哈希发起针对性攻击。

2.搜索.kdbx文件

      在了解后,我们开始搜索系统上的所有.kdbx文件来定位数据库文件。打开 PowerShell,执行以下关键命令:

Get-ChildItem -Path C:\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue

🔎 命令详解表

参数 / 选项 作用说明
Get-ChildItem 获取指定路径下的项目(文件/文件夹)
-Path C:\ 搜索起点:从C盘根目录开始
-Include *.kdbx 过滤条件:只查找 .kdbx 扩展名的文件
-File 仅返回文件,排除文件夹
-Recurse 递归搜索:深入所有子目录
-ErrorAction SilentlyContinue 静默错误:遇到权限错误等继续执行,不中断

执行结果

成功运行后,输出显示在 jason用户的Documents文件夹 中发现了一个 .kdbx 数据库文件。

🎯 关键收获:我们找到了 “宝藏图” —— 密码数据库文件!

3.把找到的.kbdx文件移到kali上

      为进行下一步的密码破解,我们需要将找到的 .kdbx 文件传输到我们的Kali攻击机上。可使用多种方法,如:

  • HTTP下载(在Kali开启简易HTTP服务器)

  • SCP(如果网络策略允许)

  • 共享文件夹(通过RDP挂载)


1.1.2.4 将文件转换为Hashcat可用的格式

      我们已经成功提取了密码数据库文件,现在需要将其转换为破解工具能够识别的标准格式,这是破解流程中的关键预处理步骤

1.使用转换脚本生成哈希文件

工具选择:keepass2john:

注:John the Ripper(JtR)套件提供了一系列专用转换脚本,专门用于处理各种加密文件的格式转换:

脚本名称 处理文件类型 作用
keepass2john KeePass数据库(.kdbx) 提取加密哈希
ssh2john SSH密钥文件 提取SSH密钥哈希
pdf2john PDF加密文件 提取PDF密码哈希
rar2john RAR压缩文件 提取RAR密码哈希
这些脚本默认已安装在Kali上,无需额外安装。

执行转换命令:.kdbx转换为.hash

keepass2john Database.kdbx > keepass.hash
  • keepass2john:转换脚本的名称

  • Database.kdbx:输入的KeePass数据库文件

  • >:输出重定向符号

  • keepass.hash:保存哈希结果的文本文件

转换结果:

📝 注意:上图输出中的"Database:"前缀是JtR脚本自动添加的,作为哈希的标识部分。并非实际的前缀,因此破解时需要去掉。

2.keepass.hash文件结构解析

①哈希结构视觉化表示
Database:$keepass$*2*60*0*salt*param1*param2*hash1*hash2
├───┬─────┬──┬──────┬─┬───┬──────┬──────┬──────┬───────
标识 │算法 │版本│迭代 │保护│盐值 │参数1 │参数2 │哈希1 │哈希2
②哈希字段详细解析表
字段位置 字段内容示例 含义说明 安全作用
前缀标识 Database: JtR脚本自动添加的文件名标识,作为"用户名"占位符 标识哈希来源,便于多目标管理
哈希类型 $keepass$ 指示此为KeePass数据库哈希 明确哈希算法家族
版本号 *2 KeePass加密版本(1=1.x,2=2.x) 确定加密算法和参数
迭代次数 *60 密码哈希计算复杂度参数,数值越大破解越耗时 增加暴力破解难度,延缓攻击速度
额外保护 *0 是否启用密钥文件等额外保护(0=未启用) 提供第二重认证保护
盐值(Salt) *d74e29a727...ec6bd 随机生成的唯一值,防止彩虹表攻击 使相同密码产生不同哈希值
计算参数1 *04b0bfd787...0cfba 主密码哈希计算中的中间值或密钥参数 参与加密过程的特定参数
计算参数2 *5273cc73b9...d2ba47 数据库特定的加密配置数据 定制化加密参数
加密哈希1 *1dcad0a3e5...1ddb9 与密钥或数据库内容相关的加密哈希 验证数据完整性的校验值
加密哈希2 *17c3ebc9c4...496c1 加密过程或配置的附加数据 提供额外安全层
③破解难点分析

多层防御架构:每个组件都增加了破解的复杂性,形成纵深防御体系

主密码 + 盐值 + 迭代次数 + 随机参数 → 最终加密哈希

关键防护要素:

  • 🔑 盐值(Salt):确保相同密码在不同数据库中有不同哈希值

  • ⚙️ 迭代次数:通过计算延迟增加破解成本(60000次迭代约需0.5-1秒)

  • 🛡️ 版本标识:明确使用KeePass 2.x的现代加密标准

防护措施 对攻击者的影响 绕过难度
高迭代次数 显著延长每次猜测的验证时间 ⭐⭐⭐⭐⭐
唯一盐值 使彩虹表攻击完全失效 ⭐⭐⭐⭐⭐
多参数组合 增加哈希计算的复杂性 ⭐⭐⭐⭐
强加密算法 需要专用破解工具和大量计算资源 ⭐⭐⭐⭐
④关键要点总结
  • keepass.hash是加密快照:包含验证主密码所需的所有参数,但不是密码本身

  • 格式标准化:删除"Database:"前缀是Hashcat兼容性的关键步骤

  • 多层防御:每个星号分隔的部分都代表一层安全防护

  • 离线攻击:哈希文件允许攻击者在不接触原数据库的情况下无限次尝试

      理解哈希结构是成功破解的前提,也是评估数据库安全性的基础。掌握了这些信息,攻击者可以更有针对性地选择破解策略,而防御者则可以更好地加固自己的密码数据库。

3.进一步修改哈希文件

      虽然keepass2john生成的哈希文件可以被John the Ripper直接使用,但Hashcat对输入格式有更严格的要求。Hashcat期望一个"纯净"的哈希值,不包含额外的标识信息。

修改操作:删除前缀

      使用文本编辑器(如nanovim)打开keepass.hash文件,删除开头的 Database: 字符串:

修改前:

Database:$keepass$*2*60000*0*e4d1cee5a799d3e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c*...

修改后:

$keepass$*2*60000*0*e4d1cee5a799d3e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c*...

为什么需要删除"Database:"?

工具 要求格式 原因
John the Ripper 可以包含用户名:哈希格式 设计用于同时破解用户名/密码对
Hashcat 仅需要哈希值本身 专注于纯哈希破解,格式更简洁

🔍 技术细节:对于KeePass数据库,实际上并没有"用户名"的概念,只有主密码。keepass2john添加的"Database:"只是一个占位符,需要移除以确保Hashcat正确解析。

📋 格式转换步骤总结:

步骤 输入 → 输出 关键命令 注意事项
1. 提取哈希 .kdbx → keepass.hash keepass2john Database.kdbx > keepass.hash 生成JtR格式哈希
2. 清理格式 keepass.hash → keepass_hashcat.hash sed -i 's/^Database://' keepass.hash 必须删除"Database:"前缀
3. 验证格式 检查最终哈希文件 cat keepass_hashcat.hash 确认格式为$keepass$*...

✅ 当前状态,已经完成了:

  • 数据库文件提取 ✅

  • 哈希格式转换 ✅

➡️ 下一步

  • 使用Hashcat加载哈希文件

  • 选择合适的攻击模式(字典攻击、组合攻击、暴力破解等)

  • 配置破解参数(哈希类型、迭代次数等)

  • 开始实际破解主密码

提示

  • 备份原文件:在进行格式修改前,建议备份原始的keepass.hash文件,以防修改错误。

  • 哈希类型识别:使用hashcat --help | grep KeePass可以查看Hashcat支持的KeePass哈希格式代码,通常为13400(KeePass 1)或13400(KeePass 2)。

  • 批量处理:如果遇到多个.kdbx文件,可以编写脚本批量转换,提高效率。


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

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

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐