最近,LastPass泄露了电子邮件地址、家庭住址、姓名和加密的用户数据库。
在这篇文章中,我将演示攻击者如何利用Hashcat等工具,来破解使用弱密码加密的数据库。
更新:修正了一些错误并增加了更多说明。
在这篇文章中,我将从技术的角度详细讲解攻击者可以用偷来的加密数据库做什么,特别是他们如何使用Hashcat等工具来破解数据库,并获得敏感的登录凭证。
为了模拟被盗的数据,我将使用我的LastPass测试账户,从MacOS上的Chrome浏览器扩展中提取一个加密的数据库。在这之后,我将使用字典攻击来暴力破解使用了弱密码或易猜测密码加密的数据库。
The Verge发表了一篇文章,对该泄露事件做了精彩总结。LastPass自己也发布了一篇博文。简而言之就是,2022年8月,LastPass遭遇数据泄露,用户数据和源代码被盗。LastPass没有很好地让公众(和用户)知道此次的泄露实际上有多糟糕。
这看情况而定,有很多事情需要考虑。我想到的几件事是:
而且,由于我不知道被偷的数据是什么样的,也不知道它可能是如何被加密的,我只能根据我所接触到的数据进行理论分析。其中包括浏览器扩展所使用的SQLite数据库和里面的数据。
在接下来的章节中,我将演示如何从Chrome浏览器扩展中提取加密的数据库,并提取出具体信息,然后用Hashcat进行破解。
在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
。
在这个文件夹中,一个名为1
的SQLite文件,其版本为:SQLite version 3039004
应该存在。这就是加密的数据库被存储并被扩展使用的地方。
➜ 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样东西。
它们要保持这样的格式: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
作为理论验证,我使用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日
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。