攻击 KeePass 2.X 数据库的方法,包括从内存中提取加密密钥材料。
允许从内存中提取 KeePass 2.X 密钥材料,以及进行后门攻击和枚举 KeePass 触发系统。 作者: Lee Christensen (@tifkin_z), Will Schroeder (@harmj0y) 许可证: BSD 3 条款 必需依赖项:无 可选依赖项: 无 此项目包括多个组件:
这是 Matt Graeber (@mattifestation) 的 PIC_Bindshell 位置独立 shellcode 项目的修改版本,采用 3 条款 BSD 许可证。
KeePass-2.34-Source-Patched 修改了 KeePass 项目(版本 2.34)的源代码,该项目采用 GNU 通用公共许可证,并附有 KeePass 专用许可证 位于此处。修改是为了允许在解密数据库时手动指定密钥数据(以 base64 字符串的形式)。修改内容包括 KeePromptForm.cs、KeePromptForm.Designer.cs、KcpKeyFile.cs 和 KcpUserAccount.cs。
KeeThief 的 GetKeePassMasterKeys() 会使用 CLR MD 连接到目标 KeePass 进程,并枚举所有 CLR 堆对象,搜索 KeePassLib.PwDatabase 对象。如果找到一个对象,则从 m_strUrl 字段中提取路径,并枚举所有引用对象,搜索 KeePassLib.Keys.CompositeKey。如果找到一个复合主密钥,则提取每种密钥类型 (KcpPassword、KcpKeyFile、KcpUserAccount) 的信息,包括密钥数据的 RtlEncryptMemory() 加密数据块。对于找到的任何加密块,将 shellcode 注入到 KeePass 进程中,调用 MyRtlDecryptMemory() 来解密内存块,返回明文/未受保护的密钥数据。
这与 denandz 的优秀 KeeFarce 项目 的方法不同,后者通过注入 c
暂无开放 Issues,或尚未同步最近议题。