主页 > imtoken的钱怎么拿出来 > 比特币钱包黑客:我想要你钱包里的所有东西

比特币钱包黑客:我想要你钱包里的所有东西

imtoken的钱怎么拿出来 2023-07-01 05:07:43

0x01 简介

比特币钱包是私钥和公钥的集合,通过它可以成功转移资金。换句话说,比特币钱包是恶意行为者控制单个比特币的单点故障或攻击媒介。已经发生了几起引人注目的事件,其中比特币钱包遭到破坏,造成数百万美元的损失。比特币钱包中唯一的安全形式是为每个比特币钱包提供的密钥。

这种实现的缺点来自于存储在比特币钱包中的私钥。如果恶意行为者获得了对这个比特币钱包的访问权,他们可以使用这个私钥来控制该用户的比特币。比特币基础设施使用私钥作为验证相关比特币地址所拥有的任何比特币所有权的一种方式。如果私钥丢失,所有所有权也将丢失。

本文研究了两个流行的比特币热钱包,即:Multibit HD 和 Electrum。每个钱包都有设计缺陷,并且未经授权访问存储在两个钱包中的比特币受到密码漏洞和恢复钱包漏洞的威胁。研究结果表明,可以通过离线暴力破解密码尝试访问 Multibit HD 和 Electrum 钱包。一旦找到密码,就可以恢复包含所有比特币的钱包。

研究设置包括三个阶段,前两个阶段用于实验设置,第三个阶段主要是从最终用户的角度来看。三个阶段设置如下:

0x02 比特币钱包

比特币钱包与银行账户或网络钱包非常相似。它使软件能够创建一对密钥:私钥和公钥。密钥生成是该过程的重要组成部分。用户应该很容易记住,但其他人很难正确猜测。公钥将作为地址生成并在区块链平台上使用。但是,如果要公开地址,攻击者将能够简单地猜测私钥,监控未使用的事务输出缓存(UTXO 缓存)以查找匹配地址。因此,将资金存入具有相似地址的账户是有风险的。

比特币钱包

为避免此类盗窃,一种选择是使用安全的私钥生成器,该生成器生成的密钥具有尽可能大的随机数和高熵。该系统被许多钱包生成软件使用,例如比特币。这些钱包保留仅对用户“可见”的密钥副本。这些钱包还允许用户通过生成新密钥并将其保存在钱包中的安全位置来备份他们的密钥。对于用户而言,安全备份钱包并定期更换密钥以最大程度地减少被盗的可能性显然至关重要。比特币钱包和实体钱包有很多区别,如下:

A.控制:

实体钱包是可以被一个人偷走、使用或拥有的有形物品。没有保护密码就无法复制或访问它。另一方面,比特币钱包可以轻松复制,使用它的用户可以识别他们的所有权。它有一个保护通用密钥,钱包的所有权属于拥有该保护密钥的人,在这种情况下就是私钥。比特币欺诈通过复制钱包而发生,有效地“窃取”了钱包。

B.可用性:

由于有形性,一个实体钱包一次只能由一个人使用,因为一次只能存在一个钱包。相比之下,比特币钱包可以有各种副本,并且可以从多个独特的设备访问。私钥和签名要求可以轻松传输到适当的驱动器,但使用可能需要这些设备之间的协作。这使得比特币钱包更容易获得,并且比实体钱包更便于使用更多类型的钱包。

C.仅收据:

“只收”钱包又叫“只看”钱包,里面的资金只能收不能用。在用户不受信任或需要监控钱包的情况下,为用户提供保护密钥(也称为公钥)的副本。只有在使用密钥时才能访问仅供查看的钱包。

0x03 第一阶段

比特币钱包

此阶段包括准备测试环境以及安装和配置必要的工具。为了准备测试环境,在实验中创建了一个新的 Windows 7 虚拟机 (VM),该 VM 配置了 4 GB RAM 和 500 Gb 磁盘大小。虚拟机还添加了网络功能比特币钱包,以便可以利用另一个虚拟机的计算能力,第二个虚拟机与第一个虚拟机具有相同的配置。

下一步是安装和设置钱包(Multibit HD v0.4.1)。创建钱包时,你应该把钱包的字和日期截图戳,执行此步骤,将最终结果与初始钱包单词进行比较。接下来安装Cheat Engine,它是一个开源的内存扫描器/十六进制编辑器/调试器。该工具可以搜索用户输入的各种值选项,以及查找和排序设备的内存,下表显示了使用的工具:

0x04 第二阶段

第二阶段是搭建和创建破解钱包单词的软件包。实验中执行作弊引擎软件,在作弊引擎中选择“值类型”为字符串,扫描Multibit HD钱包单词中的随机关键字。浏览关键字结果的存储位置后可以看到其他几个英语词典单词。使用作弊引擎从 Multibit HD 中提取了 2053 个字典单词。下图是内存分析中找到的字典词,收集整理成数据库,说是字典数据库。

此阶段的下一步是创建攻击包。本文选择的钱包是一个托管在用户个人电脑上的桌面应用程序,创建时,钱包推荐使用12种子密码。用户可以使用生成的密码或 12 种子密码访问资金。后者是 2100 个单词的字典中的 12/24 个单词,在钱包应用程序组合中加密。经过许多考虑和可能性,破解钱包的可用选项是识别字典并尝试所有可能的组合。

上述解决方案涉及以下步骤:

比特币钱包

•提取字典

•创建字典文件的组合

•检查密码是否正确

要实现以上三个步骤,选择破解密码的过程是离线蛮力攻击,是一种试错模式,非常耗时。它涉及尝试序列中所有可能的字符组合来破解加密网关。所需时间随复述中涉及的字符或单词的数量而变化。反向暴力破解(即当知道密码并且应该识别用户时)成功所需的时间相对较短,但不适用于本实验。

使用从钱包应用程序数据集(以下简称“数据集”)中提取的 2100 个单词作为软件包的输入,生成可用于离线暴力攻击的字典文件。庞大的数据集需要在服务器上维护一个标准的独立数据库。

0x05 第三阶段

由于研究中的钱包都没有内置存储或云存储可用于存储密码,因此排除了使用 shell 或批处理的一次性黑客攻击。解决具有多个条目的应用程序的可能性。换句话说,如果人们使用可用于存储密码的内置存储或云存储检查比特币钱包,那么使用自动化脚本破解应用程序可能会更容易。

此外,研究中的钱包都不是基于 Web 的应用程序,因此不可能使用面向对象的编程语言与 Web 元素进行交互。因此,选择了一个能够与桌面应用程序交互的应用程序比特币钱包,并创建了 25 行触发器以从提取的数据集中创建可能的组合。它比任何传统的密码破解方法都需要更多时间,但在桌面工具上使用 BIP 32 加密的安全钱包排除了许多其他更简单的选择。

比特币钱包

也可以使用多台计算机或虚拟机(VM)来加速攻击,这就是本文中的方法。特别是在尝试破解钱包时使用具有在主机上并行运行的 VM 层的独立服务器。使用的 Java 代码片段生成的整个字典可以有效地均匀分布在 VM 中,同时可以离线砸钱包。在尝试访问钱包的过程中,将保存任何钱包(不仅仅是当前钱包)的真正组合,以便将来对其他钱包进行暴力攻击。

如前所述,获取 12 字种子所需的时间会随着所涉及的 VM 数量的增加而减少。结果,主机和虚拟机的配置得到了改进,涉及的内核数量、处理器时钟、RAM 量(分配的堆)增加了一倍。在实施升级以增强性能之前,主要考虑的是对存储容量和存储速度的要求,这可以通过更高的硬件规格来获得,例如 RAM 芯片、硬盘驱动器 (HDD) 和处理器。例如:

•内存容量:内存模块的千兆字节 (GB) 越多,一个模块一次可以打开的程序就越多。

•内存速度:RAM 接收来自处理器的请求然后读取或写入数据所需的时间。

如果一个内存在攻击过程中耗尽,可以使用另一个磁盘作为替代(即交换)。更多的 RAM 内存意味着更多的指令可以放入该内存中,因此可以一次加载更大的程序。通过实施上述方案,发现提高了约 80%。

0x06 MultiBit HD 攻击结果

使用生成的字典文件作为包中攻击的输入,并且能够成功识别给定 12 个单词(种子)的多个组合。这会触发“下一步”按钮以指示将钱包标记为组合的可能性。但是,由于该组合尚未在钱包应用程序(网络)附近可用的资源中分配给钱包,因此不能用于检索密码,随着提供给应用程序的组合数量增加,识别出的有效组合的百分比逐渐减少。

如果安装钱包的设备损坏或丢失,也可以使用为 MultiBit HD 识别的有效组合来恢复钱包。此功能需要种子以及生成钱包时提供的日期时间戳,这意味着实施暴力攻击时生成的有效组合和时间戳。下图显示了 Multibit HD 桌面钱包应用程序的结果。

比特币钱包

0x07 Electrum 的攻击结果

Electrum 不提供仅使用有效组合恢复钱包时间戳功能的权限,如果钱包尚未分配给用户,则恢复过程将导致钱包为空。换句话说,如果它已经分配给用户,攻击者可以未经授权访问存储在钱包中的货币,这就是实验设法实现的。

从上图可以看出,对于给定的12字词种子,给定词典的有效组合数在1.01%到10%之间。从结果可以明显看出,生成数据集有效组合数量(10 的倍数)的函数与数量成反比,趋向于 >1%。因此,可以证明以合理的算力利用该漏洞可以获得对钱包的未授权访问。

0x08 结论

在本文中,研究了两个流行的比特币钱包 Multibit 和 Electrum,并揭示了以前未知的安全漏洞。恶意行为者可以利用这些漏洞访问这些钱包中的任何一个并索取其中的比特币。虽然这项研究的结果仅限于这两个比特币钱包,但该研究的未来扩展包括设计更高效的软件,能够在不同操作系统(例如 Android 和 iOS)上对更广泛的比特币钱包进行在线和离线暴力攻击。

原文链接:anquanke.com/post/id/198370