❿⁄₆ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 提取密码管理器KeePass主密码(上)

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

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

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

​​​​​

▶ 信息收集

▶ 漏洞检测
▶ 初始立足点 ➢ 密码攻击 ➢ 提取密码管理器KeePass主密码 (上)🔥🔥🔥

▶ 权限提升

▶ 横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.密码破解实践

[1.1 破解密码管理器KeePass:提取主密码](#1.1 破解密码管理器KeePass:提取主密码)

[1.1.1 场景与目标](#1.1.1 场景与目标)

[1.1.2 实践具体步骤](#1.1.2 实践具体步骤)

[1.1.2.1 通过RDP连接目标主机](#1.1.2.1 通过RDP连接目标主机)

[1.1.2.2 检查是否安装 KeePass](#1.1.2.2 检查是否安装 KeePass)

[1.1.2.3 在全盘搜索 .kdbx 数据库文件](#1.1.2.3 在全盘搜索 .kdbx 数据库文件)

1.kdbx数据库文件介绍

①什么是.kdbx文件?

[②.kdbx 文件的安全性如何?](#②.kdbx 文件的安全性如何?)

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

2.搜索.kdbx文件

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

[1.1.2.4 将文件转换为Hashcat可用的格式](#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 文件的安全性如何?
  • 强加密保障 :文件使用 AESChaCha20强加密算法,即使文件被窃取,也无法直接读取内容。

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

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

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

③生成 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,执行以下关键命令:

bash 复制代码
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

bash 复制代码
keepass2john Database.kdbx > keepass.hash
  • keepass2john:转换脚本的名称

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

  • >:输出重定向符号

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

转换结果:

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

2.keepass.hash文件结构解析
①哈希结构视觉化表示
bash 复制代码
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 加密过程或配置的附加数据 提供额外安全层
③破解难点分析

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

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

关键防护要素:

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

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

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

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

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

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

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

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

3.进一步修改哈希文件

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

修改操作:删除前缀

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

修改前:

bash 复制代码
Database:$keepass$*2*60000*0*e4d1cee5a799d3e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c*...

修改后:

bash 复制代码
$keepass$*2*60000*0*e4d1cee5a799d3e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c2e5c*...

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

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

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

📋 格式转换步骤总结:

步骤 输入 → 输出 关键命令 注意事项
1. 提取哈希 .kdbxkeepass.hash keepass2john Database.kdbx > keepass.hash 生成JtR格式哈希
2. 清理格式 keepass.hashkeepass_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文件,可以编写脚本批量转换,提高效率。


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

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

相关推荐
天荒地老笑话么2 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子20 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha21 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络1 天前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd1 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你1 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha2 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
成茂峰2 天前
软考高级·系统架构设计师 | 四、信息技术安全知识
安全·信息安全·系统架构·架构设计师
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信