前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >破解加密的LastPass数据库

破解加密的LastPass数据库

作者头像
神锁离线版
修改2022-12-27 11:24:52
2.4K0
修改2022-12-27 11:24:52
举报

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

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

来源:unsplash.com
来源: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中。

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

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

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

LastPass SQLite数据库

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

代码语言:javascript
复制
➜  file 1
1: 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查询:

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

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

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

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

迭代次数

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

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

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

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

电子邮件

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

格式化的哈希值

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

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

用Hashcat破解LastPass数据库

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

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

代码语言:javascript
复制
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日

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发生了什么?
    • 什么被偷了?
    • 攻击者可以用偷来的数据库做什么?
      • LastPass浏览器扩展
        • 提取加密的数据库
          • LastPass SQLite数据库
            • 密钥值
            • 迭代次数
            • 电子邮件
            • 格式化的哈希值
        • 用Hashcat破解LastPass数据库
        • 有用的链接和参考资料
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档