主页 > 苹果手机安装imtoken > 比特币钱包黑客:我想要你钱包里的一切

比特币钱包黑客:我想要你钱包里的一切

苹果手机安装imtoken 2023-10-18 05:13:26

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)。创建钱包时,你应该截图钱包的字和日期戳,执行此步骤将最终结果与 Initial wallet words 进行比较。接下来安装 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