❿⁄₆ ⟦ 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文件,可以编写脚本批量转换,提高效率。


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

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

相关推荐
上海云盾商务经理杨杨1 天前
2026年等保测评终极指南:新规解读、策略选择与一站式服务深度剖析
网络安全
pps-key1 天前
Afrog漏洞扫描器:从入门到入狱......边缘的摇摆记录(pps-key黑化版)
linux·计算机网络·安全·网络安全
白帽黑客-晨哥1 天前
授权单位实战+专属应急队,湖南省网安基地如何用真实项目与应急响应锻造安全精英
web安全·网络安全·渗透测试·kali·湖南省网安基地
sublime881 天前
JNPF快速开发平台存在任意文件读取漏洞 附PO
网络·安全·web安全·网络安全
蜂蜜黄油呀土豆1 天前
计算机网络中的常见网络攻击及防范措施
计算机网络·网络安全·sql注入·dns劫持·xss攻击·csrf攻击·ddos攻击
上海云盾商务经理杨杨1 天前
2026年DDoS攻防新纪元:全面解析攻击的智能化升级与防护的体系化革命
网络·web安全·网络安全·ddos
世界尽头与你1 天前
CVE-2024-43044_ Jenkins agent connections 文件读取漏洞
安全·网络安全·渗透测试·jenkins
Bug.ink1 天前
BUUCTF——WEB(6)
数据库·sql·网络安全·靶场·buuctf
NOVAnet20231 天前
NOVA百科|跨境网络不掉线:南凌科技智能QoS如何保障全球组网关键应用畅通无阻
网络安全·sd-wan·网络服务·全球组网·南凌科技