写点什么

破解加密的 LastPass 数据库

作者:神锁离线版
  • 2022-12-27
    广东
  • 本文字数:2285 字

    阅读完需:约 7 分钟

破解加密的LastPass数据库

最近,LastPass 泄露了电子邮件地址、家庭住址、姓名和加密的用户数据库。

在这篇文章中,我将演示攻击者如何利用 Hashcat 等工具,来破解使用弱密码加密的数据库。

来源:unsplash.com

更新:修正了一些错误并增加了更多说明。

在这篇文章中,我将从技术的角度详细讲解攻击者可以用偷来的加密数据库做什么,特别是他们如何使用 Hashcat 等工具来破解数据库,并获得敏感的登录凭证。

为了模拟被盗的数据,我将使用我的 LastPass 测试账户,从 MacOS 上的 Chrome 浏览器扩展中提取一个加密的数据库。在这之后,我将使用字典攻击来暴力破解使用了弱密码或易猜测密码加密的数据库。

发生了什么?

The Verge 发表了一篇文章,对该泄露事件做了精彩总结。LastPass 自己也发布了一篇博文。简而言之就是,2022 年 8 月,LastPass 遭遇数据泄露,用户数据和源代码被盗。LastPass 没有很好地让公众(和用户)知道此次的泄露实际上有多糟糕。

什么被偷了?

  • 用户数据库的备份

  • 公司名称、终端用户名、账单地址、电子邮件地址、电话号码和 IP 地址

  • 源代码和其他知识产权

攻击者可以用偷来的数据库做什么?

这看情况而定,有很多事情需要考虑。我想到的几件事是:

  • 加密的数据库在云端是如何存储的?

  • 用户是否使用弱密码或易猜测密码来加密数据库?

  • 密钥的迭代是怎样的(默认或自定义)?

  • 其他未提及的因素?

而且,由于我不知道被偷的数据是什么样的,也不知道它可能是如何被加密的,我只能根据我所接触到的数据进行理论分析。其中包括浏览器扩展所使用的 SQLite 数据库和里面的数据。

在接下来的章节中,我将演示如何从 Chrome 浏览器扩展中提取加密的数据库,并提取出具体信息,然后用 Hashcat 进行破解。

LastPass 浏览器扩展

在 Chrome 浏览器上,每个扩展都有一个独特的 ID。LastPass 扩展使用hdokiejnpimakedhajhdlcegeplioahd作为 ID。你可以通过访问地址栏中的 URL chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/vault.html来确认。你将会看到数据库的登录页面。

你可以把它看作是一个在你的浏览器中使用 HTML 和 JavaScript 的本地网站。

提取加密的数据库

所有扩展程序都有自己的文件夹,根据操作系统的不同,这些文件夹存储在系统本地的不同位置。

LastPass文档指出,在 Windows 系统上使用 Chrome 浏览器的设备会将数据库存储在以下 PATH 中。

%LocalAppData%\Google\Chrome\User Data\Default\databases\chrome-extension_hdokiejnpimakedhajhdlcegeplioahd_0
复制代码

在 macOS 系统上,位置略有不同。

注意:我在 Chrome 上使用两个配置文件,因此你看到的是Profile 1而不是Default

LastPass SQLite 数据库

在这个文件夹中,一个名为1的 SQLite 文件,其版本为:SQLite version 3039004应该存在。这就是加密的数据库被存储并被扩展使用的地方。

➜  file 11: SQLite 3.x database, last written using SQLite version 3039004, file counter 21, database pages 22, cookie 0x5, schema 4, largest root page 11, UTF-8, vacuum mode 1, version-valid-for 21
复制代码

然后,你可以使用 DB Browser for SQLite 这样的工具来查看数据库内容。我还把它复制到桌面,并把文件重命名为LastPass-vault-macos-chrome.sqlite,这样更容易记住。

所有数据都存储在一个名为LastPassData的表中。

要使用 Hashcat 破解 LastPass 数据库,你需要有 3 样东西。

  1. 密钥值

  2. 迭代次数

  3. 帐户的电子邮件地址(在数据库中经过散列)

它们要保持这样的格式:KEY:ITERATION:EMAIL

密钥值

要检索密钥值,就要搜索 type 列,其中值为key,然后在data列中选择第二行,例如:T4vInfZ+6MGDeEendq4gvA==,如下图:


你也可以执行以下 SQL 查询:

SELECT substr(data, -24) FROM LastPassData WHERE type = 'key';
复制代码

它是 base64 编码的,你可以通过解码获得十六进制值。

echo "T4vInfZ+6MGDeEendq4gvA==" | base64 -d | xxd -p
复制代码

我们现在有了第 1 样东西:4f8bc89df67ee8c1837847a776ae20bc

迭代次数

要检索迭代次数,就要搜索type列,其中值为accts,然后在 data 列中搜索 ; 前的几个字符。LastPass 在 2018 年将默认的迭代次数从5000次改为100100次。

你也可以执行以下 SQL 查询:

SELECT SUBSTR(data,0,INSTR(data,';')) FROM LastPassData WHERE type = 'accts';
复制代码

我们现在也有了第 2 样东西:100100

电子邮件

该数据库包含一个哈希的电子邮件地址值。但我们知道,攻击者已经有了这些信息,因为最近 LastPass 的泄露包括电子邮件地址。鉴于本博客的目的,我不打算分享我使用的电子邮件地址。

格式化的哈希值

满足以上所有要求的哈希值应该是这样的:

4f8bc89df67ee8c1837847a776ae20bc:100100:test@example.com
复制代码


用 Hashcat 破解 LastPass 数据库

作为理论验证,我使用 M1 芯片的 MacBook Air 来破解密码。它的速度只有1110 H/s(每秒的哈希值),但它确实有效。另一方面,如果攻击者利用多 GPU 设备设置和优化的驱动程序,就很容易达到2,000,000+ H/s的速度。

为了演示用弱密码暴力破解数据库,我下载了流行的rockyou.txt字典,并把我的数据库的主密码明文存储在里面。然后,我设置了以下 Hashcat 选项:

hashcat -a 0 -m 6800 LastPass-hash.txt ~/Downloads/rockyou.txt
复制代码


  • -a 0 字典攻击

  • -m 6800 LastPass 哈希算法

  • LastPass-hash.txt 哈希格式化 (KEY:ITERATION:EMAIL)

  • rockyou.txt 明文密码字典+我的主密码

就这样,数据库里面存有的所有明文密码数据都成功恢复了。

有用的链接和参考资料


本文翻译自:Cracking encrypted Lastpass vaults

作者:Naz Markuta,发布时间:2022 年 12 月 23 日

用户头像

分享专业知识,共同探讨密码安全与管理技术 2018-09-17 加入

密码管理器大多界面(皮肤)雷同(定制),安全技术停滞十几年。 我们以新理念、新技术、新设计,应对新挑战。

评论

发布
暂无评论
破解加密的LastPass数据库_数据安全_神锁离线版_InfoQ写作社区