币安官网注册链接: 币安(Binance)
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 第二阶段
第二阶段是设置和创建用于破解钱包词的软件包。 实验中执行作弊引擎软件,选择“Value Type”作为作弊引擎中的字符串,并扫描Multibit HD钱包单词中的随机关键字。 浏览存储关键字结果的位置会显示其他几个英语词典单词。 使用作弊引擎从 Multibit HD 中提取了总共 2053 个词典单词。 下图是内存分析中找到的字典单词,这些单词被收集并编译成一个数据库,称为字典数据库。
此阶段的下一步是创建攻击者包。 本文选择的钱包是托管在用户个人计算机上的桌面应用程序,创建时,钱包建议使用 12 种子密码。 用户可以使用生成的密码或 12 种子密码访问资金。 后者是钱包应用程序中加密的 2100 个字典单词中的 12/24 个单词的组合。 经过许多考虑和可能性后,破解钱包的可用选项是识别字典并尝试所有可能的组合。
上述解决方案涉及以下步骤:
•提取字典
•创建字典文件的组合
•检查密码是否正确
为了实现上述三个步骤,所选择的破解密码的过程是离线暴力攻击,这是一种试错模型,非常耗时。 它涉及尝试序列中所有可能的字符组合来破解加密网关。 所需的时间根据复述的字符或单词的数量而变化。 逆向暴力破解(即当密码已知并且用户应该被识别时)需要相对较少的时间来成功,但这不适用于本实验。
从钱包应用程序中提取的一组 2100 个单词(以下称为“数据集”)用作包的输入,以生成可用于离线暴力攻击的字典文件。 庞大的数据集需要在服务器上维护标准的独立数据库。
0x05 第三阶段
由于研究中的钱包都没有内置存储或可用于存储密码的云存储,因此排除了使用 shell 或批处理过程尝试同时破解具有多个条目的应用程序的可能性。 换句话说,如果人们使用可用于存储密码的内置存储或云存储来检查比特币钱包,那么使用自动化脚本破解应用程序可能会更容易。
此外,所研究的钱包都不是基于网络的应用程序,因此不可能使用面向对象的编程语言与网络元素进行交互。 因此,选择了能够与桌面应用程序交互的应用程序,并创建了 25 行触发器,以从提取的数据集中创建可能的组合。 它比任何传统的密码破解方法都需要更多的时间,但桌面工具上采用 BIP 32 加密的安全钱包排除了许多其他更简单的选择。
还可以利用多台计算机或虚拟机 (VM) 来加速攻击,这就是本文中的方法。 具体来说,在尝试破解钱包时,使用独立服务器与在主机上并行运行的 VM 层。 使用的Java代码片段生成的整个字典可以有效地均匀分布在VM上,并且钱包可以同时被暴力破解。 在尝试访问钱包的过程中,可能成为任何钱包(不仅仅是当前钱包)的真正组合的组合将被保存,以方便将来对其他钱包进行暴力攻击。
如前所述,随着涉及的虚拟机数量的增加,获取 12 字种子所需的时间会减少。 结果,主机和虚拟机配置得到了改善,涉及的核心数量、处理器时钟、RAM(分配的堆)数量增加了一倍。 在实施升级以增强性能之前,主要考虑的是存储容量和存储速度的要求,这可以通过更高的硬件规格(例如RAM芯片、硬盘驱动器(HDD)和处理器)来获得。 例如:
• 内存容量:内存模块的千兆字节(GB) 越多,一个模块可以同时打开的程序就越多。
• 内存速度:RAM 接收处理器请求然后读取或写入数据所需的时间。
如果一个磁盘在攻击期间耗尽内存,则可以使用另一个磁盘作为替代(即交换)。 更多的 RAM 内存意味着更多的指令可以放入该内存中,因此可以立即加载更大的程序。 通过实施上述选项,性能提高了约 80%。
0x06 MultiBit HD攻击结果
包中生成的字典文件被用作攻击的输入,并且能够成功识别给定 12 个单词(种子)的多种组合。 这会触发“下一步”按钮,指示将钱包标记为组合的可能性。 然而,由于该组合尚未分配给钱包应用程序(网络)附近的可用资源中的钱包,因此它不能用于检索密码。 随着提供给应用程序的组合数量的增加,识别出的有效组合的百分比也会增加。 逐渐减少。
如果安装钱包的设备损坏或丢失,为 MultiBit HD 识别的有效组合也可用于恢复钱包。 此功能需要在生成钱包时提供种子和日期时间戳,这意味着在进行暴力攻击时生成的有效组合和时间戳。 下图显示了 Multibit HD 桌面钱包应用程序的结果。
0x07 金币攻击结果
Electrum 不提供时间戳功能,该功能允许仅使用有效的组合来恢复钱包,如果钱包尚未分配给用户,则恢复过程将导致钱包为空。 换句话说,如果它已被分配给用户,攻击者就可以未经授权访问钱包中存储的货币,这正是实验中设法实现的。
从上图中可以看出,对于给定的 12 个单词的单词种子,给定词典的有效组合数量在 1.01% 到 10% 之间。 从结果可以明显看出,为数据集生成有效组合数量(10 的倍数)的函数与数量成反比,且函数趋向于 >1%。 因此,可以证明,利用合理的算力利用该漏洞可以获得对钱包的未授权访问。
0x08 结论
在本文中,我们对两种流行的比特币钱包 Multibit 和 Electrum 进行了检查,并揭示了以前未知的安全漏洞。 恶意行为者可以利用这些漏洞来访问任何这些钱包并声称拥有其中的比特币。 虽然这项研究的结果仅限于这两个比特币钱包,但这项研究的未来扩展包括设计更有效的软件,能够对不同操作系统上的更广泛的比特币钱包进行在线和离线暴力攻击。 (例如 Android 和 iOS)。
原文链接: