主页 > 安卓版imtoken钱包 > 解剖比特币钱包,你想知道的都在这里

解剖比特币钱包,你想知道的都在这里

安卓版imtoken钱包 2023-02-14 07:33:38

比特币钱包是私钥和公钥的集合,通过它可以成功完成资金转移。 换句话说,比特币钱包是恶意行为者控制个人比特币的单点故障或攻击媒介。 已经发生了几起引人注目的事件,其中比特币钱包遭到破坏,造成数百万美元的损失。 比特币钱包中唯一的安全形式是为每个比特币钱包提供的密钥。 这种实现的缺点来自存储在比特币钱包中的私钥。 如果恶意行为者获得了该比特币钱包的访问权限,他们就可以使用该私钥来控制该用户的比特币。 比特币基础设施使用私钥来验证相关比特币地址持有的任何比特币的所有权。 如果私钥丢失,所有所有权也将丢失。 本文考察了两个流行的比特币热钱包,即:Multibit HD 和 Electrum。 每个钱包都有设计缺陷,允许未经授权访问存储在两个钱包中的比特币,受到密码漏洞和恢复钱包漏洞的威胁。 调查结果表明,可以通过离线暴力破解密码尝试访问 Multibit HD 和 Electrum 钱包。 一旦找到密码,就可以恢复包含其中所有比特币的钱包。 研究设置包括三个阶段,其中前两个阶段用于实验设置比特币钱包的核心功能,而第三阶段主要从最终用户的角度出发。 三个阶段的设置如下:

image.png

比特币钱包与银行账户或网络钱包非常相似。 它使软件能够创建一对密钥:私钥和公钥。 密钥生成是该过程的重要部分。 用户应该很容易记住,但其他人很难猜对。 公钥将作为地址生成并在区块链平台上使用。 然而,如果地址被泄露,攻击者将能够通过暴力破解来简单地猜测私钥并监控未使用的交易输出缓存(UTXO 缓存)以寻找匹配的地址。 因此,将资金存入地址相似的账户是有风险的。 为避免此类盗窃,一种选择是使用安全的私钥生成器,该生成器生成具有最大可能随机数和高熵的密钥。 许多钱包生成软件,例如比特币,都使用这个系统。 这些钱包保留了仅对用户“可见”的密钥副本。 这些钱包还允许用户通过生成新密钥并将它们保存在钱包内的安全位置来备份他们的密钥。 对于用户来说,安全地备份他们的钱包并定期更换密钥以最大限度地减少被盗的可能性显然是至关重要的。 比特币钱包和实体钱包有很多区别,如下:

A. 控制

实体钱包是有形物品,可以被一个人偷走、使用或拥有。 如果没有保护性密码,则无法复制或访问它。 另一方面,比特币钱包可以很容易地复制比特币钱包的核心功能,并且使用它的用户可以识别所有权。 它有一个保护性公钥,钱包的所有权属于拥有该保护性密钥的人,在本例中为私钥。 比特币欺诈通过克隆钱包发生,有效地“窃取”了钱包。

B. 可用性

由于有形性,一个实体钱包一次只能由一个人使用,因为一次只能存在一个钱包。 相比之下,比特币钱包可以有多个副本,可以从多个独特的设备访问。 私钥和签名要求可以很容易地转移到相应的驱动器,但使用可能需要这些设备之间的合作。 这使得比特币钱包很容易访问,并且比实体钱包更容易使用更多类型的钱包。

C. 仅收据

“只收”钱包也被称为“只看”钱包,资金只能接收而不能花费。 在用户不受信任或需要监控钱包的情况下,会向用户提供保护密钥(也称为公钥)的副本。 只读钱包只有在使用密钥时才能访问。

此阶段包括准备测试环境以及安装和配置必要的工具。 为了准备测试环境,在实验中创建了一个新的 Windows 7 虚拟机 (VM),VM 配置为 4 GB RAM 和 500 Gb 磁盘大小。 虚拟机上还增加了网络功能,可以利用另一台虚拟机的计算能力,第二台虚拟机与第一台虚拟机的配置相同。 下一步是安装和设置钱包 (Multibit HD v0.4.1)。 创建钱包时,应截取钱包字和日期戳的屏幕截图,执行此步骤以将最终结果与初始钱包字进行比较。 接下来安装 Cheat Engine,一个开源内存扫描器/十六进制编辑器/调试器。 该工具可以搜索用户使用各种选项输入的值,以及查找和排序设备的内存,下表使用该工具:

image.png

第二阶段是设置和创建破解钱包词的包。 实验中,运行作弊引擎软件,在作弊引擎中选择“value type”为字符串,扫描Multibit HD钱包的单词中的随机关键字。 浏览关键字结果的存储位置后,您可以看到其他几个英语词典单词。 使用作弊引擎从 Multibit HD 中提取了总共 2053 个词典单词。 下图是在内存分析中找到的字典单词,这些单词被收集并编译成一个数据库,称为字典数据库。

image.png

此阶段的下一步是创建攻击者包。 本文选择的钱包是托管在用户个人计算机上的桌面应用程序。 创建时,钱包建议使用 12 个种子密码。 用户可以使用生成的密码或 12 种子密码访问资金。 后者是钱包应用程序中加密的 2100 个词典单词中的 12/24 个单词的组合。 经过多方考虑和各种可能性的尝试,破解钱包的可选方案是识别字典并尝试所有可能的组合。 上面确定的解决方案包括以下步骤: • 提取字典 • 创建字典文件的组合 • 检查正确的密码非常耗时。 它涉及尝试序列中所有可能的字符组合来破解加密网关。 所需时间因复述所涉及的字数或字数而异。 反向暴力破解(即当密码已知且用户应该被识别时)成功所需的时间相对较少,但这不适用于本实验。 从钱包应用程序中提取的一组 2100 个单词(以下称为“数据集”)用作软件包的输入,以生成可用于离线暴力攻击的字典文件。 巨大的数据集需要在服务器上维护一个标准的独立数据库。

由于研究中的两个钱包都没有内置存储或可用于存储密码的云存储,因此排除了使用 shell 或批处理尝试一次破解具有多个条目的应用程序的可能性。 换句话说,如果人们使用可用于存储密码的内置存储或云存储来检查比特币钱包,使用自动化脚本破解应用程序可能会更容易。 此外,所研究的钱包都不是基于网络的应用程序,因此无法使用面向对象的编程语言与网络元素进行交互。 因此,选择了一个能够与桌面应用程序交互的应用程序,并创建了 25 行触发器以从提取的数据集中创建可能的组合。 比任何传统的密码破解方法都花费更多的时间,但是在桌面工具上使用 BIP 32 加密的安全钱包排除了许多其他更简单的选择。 还可以通过利用多台计算机或虚拟机 (VM) 来加速攻击,这就是本文中的方法。 特别是在尝试破解钱包时,使用在主机上并行运行 VM 层的独立服务器。 所使用的Java代码段生成的整个字典可以有效地均匀分布在VM上,同时可以离线暴力破解钱包。 在尝试访问钱包期间,可能会成为任何钱包(不仅仅是当前钱包)的真实组合的组合会被保存,以备将来对其他钱包进行暴力攻击。 如前所述,随着所涉及的 VM 数量的增加,获得 12 字种子所需的时间会减少。 因此,主机和 VM 的配置得到改进,涉及的内核数量、处理器时钟、RAM(分配的堆)量增加了一倍。 执行升级以增强性能之前的主要考虑因素是对存储容量和存储速度的要求,这可以通过更高的硬件规格获得,例如 RAM 芯片、硬盘驱动器 (HDD) 和处理器。 例如: • 内存容量:内存模块的千兆字节 (GB) 越多,模块一次可以打开的程序就越多。 • 内存速度:RAM 从处理器接收请求然后读取或写入数据所花费的时间。 如果一个磁盘在攻击期间内存不足,另一个磁盘可以用作替换(即交换)。 更多的 RAM 内存意味着更多的指令可以放入该内存中,因此,可以一次加载更大的程序。 通过实施上述选项,我们发现了大约 80% 的改进。

生成的词典文件在软件包中用作攻击的输入,并且能够成功识别给定 12 个单词(种子)的多个组合。 这会触发一个“下一步”按钮,指示将钱包标记为组合的可能性。 但是,由于钱包应用程序(网络)附近的可用资源中尚未将组合分配给钱包,因此无法使用它来检索密码,随着提供给应用程序的组合数量增加,有效组合的百分比逐渐被识别减少。 为 MultiBit HD 识别的有效组合也可用于在安装钱包的设备损坏或丢失的情况下恢复钱包。 此功能需要在生成钱包时提供种子和日期时间戳,这意味着执行暴力攻击时生成的有效组合和时间戳。 下图显示了 Multibit HD 桌面钱包应用程序的结果。

image.png

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

image.png

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

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