如今,比特币是最受欢迎的加密货币。随着智能手机和高速移动互联网的普及,越来越多的用户开始在智能手机上访问其比特币钱包。用户可以在智能手机上下载并安装各种比特币钱包应用程序(例如Coinbase,Luno,Bitcoin Wallet),并可以随时随地访问其比特币钱包。但是,这些比特币手机应用程序不一定安全,它们会扩展攻击者的新攻击面。在这项工作中探索了10种最受欢迎的比特币钱包App的不安全性,并发现了三个安全漏洞。通过利用它们,攻击者可以发起各种攻击,包括比特币去匿名,反射和放大垃圾信息以及钱包欺诈攻击。为了解决已确定的安全漏洞,本研究开发了一种工具Bitcoin Security Rectifier,以保护比特币钱包App用户的安全。开发的工具不需要对当前的钱包应用程序进行任何修改,并且符合比特币标准。
0x01 Introduction
许多消费者和企业(例如Microsoft,Newegg,Overstock,Subway,Starbucks)已接受比特币作为付款方式。随着高速移动互联网的迅速部署和智能手机的普及,越来越多的用户开始通过各种比特币钱包App访问其比特币钱包。比特币钱包App是否会为攻击者创建新的攻击媒介,从而对移动用户发起新的攻击?不幸的是,本文研究得出了肯定的答案。在这项工作中,研究了10种最受欢迎的比特币钱包App(按下载次数排名),发现了三个安全漏洞,涵盖了比特币钱包应用程序的实现和比特币钱包应用程序服务的运行。本文发现,已被各种比特币钱包App广泛使用的比特币应用程序库BitcoinJ泄漏了比特币钱包用户的隐私(例如,所有用户的比特币地址)(漏洞V1)并在不向用户提供任何通知或警报的情况下,在后台不断下载用户不想要的比特币交易(漏洞V2)。此外,发现比特币钱包App可能违反了比特币钱包服务去中心化的原则,这些应用程序的用户更容易受到金融欺诈攻击。更具威胁性的是,大多数用户没有意识到这一点(漏洞V3)。
通过利用这些漏洞,本研究设计了三种针对用户的PoC:(1)比特币去匿名攻击; (2)比特币反射和放大垃圾信息攻击; (3)比特币钱包欺诈攻击。第一种攻击使攻击者可以取消对比特币钱包使用的非真实比特币地址进行匿名处理。此攻击不仅以低错误率(例如10^(-13)%)识别比特币钱包App用户的所有比特币地址,而且还可以在满足某些使用条件的同时发现应用程序用户的真实身份。在第二种攻击中,攻击者利用中间的公共比特币网络元素(例如,全节点客户端)向比特币钱包App用户连续不断地未经请求地发送垃圾信息。垃圾信息流量由攻击期间全球所有比特币用户产生的所有新比特币交易组成。这是一种低成本的攻击;攻击者只需要向比特币网络发送一些小的发起数据包。在实验中观察到放大系数(垃圾信息流量大小与攻击发起包大小之比)接近3,666。这种攻击以两种方式攻击受害者:(1)在使用蜂窝网络服务时,受害者需要为比特币垃圾消息付费; (2)受害者的手机比未受到攻击的手机消耗更多的电能96%。第三种攻击显示了攻击者为何可以超越其他类型的金融移动程序攻击的限制,针对比特币钱包应用程序用户发起各种比特币欺诈攻击,下表总结了本文发现。
0x02 Threat Model and Methodology
比特币网络架构:下图说明了比特币网络架构。 运行比特币协议的网络节点可能包含四个功能:(1)钱包,(2)矿工,(3)完整的区块链数据库和(4)网络路由。 钱包功能为用户提供了比特币钱包服务。 此功能控制对用户资金(即BTC,比特币的货币)的访问,包括管理私钥/公钥和地址,跟踪余额以及生成和签名交易。 矿工功能瓦利约会新交易并将其附加到比特币区块链。 完整的区块链数据库功能可维护所有比特币区块的完整且最新的副本。 网络路由功能允许一个节点与其他节点通信。
威胁模型:在这项研究中,攻击者是对比特币智能手机钱包用户发起远程攻击的人或组织。认为攻击者具有以下能力:(1)他们可以在公共传播信道中拦截,修改或注入任何消息; (2)他们遵守所有加密假设,例如,如果没有解密密钥,将无法解密加密消息; (3)他们无法控制受害者的智能手机和比特币网络基础设施。本文研究了10种流行的比特币钱包App,分别是Coinbase,Bit coin Wallet,Blockchain Wallet,Bitcoin.com Wallet,Luno,Mycelium,Coinomi,BRD,BitPay和Simple Bitcoin。通过两种措施以负责任的方式进行了这项研究。首先,仅将手机用作受害者。其次,没有向公众分发任何恶意的比特币应用程序或库。本研究试图披露比特币钱包App的新安全漏洞和有效攻击,但并不加剧这种破坏。
0x03 Security Vulnerabilities
V1:钱包比特币地址泄漏
第一个安全漏洞是钱包App的比特币地址可能会泄露给攻击者。特别是,BitcoinJ是一个比特币客户端库,已被许多比特币钱包App(例如,Bitcoin Wallet,Mycelium)广泛用于与比特币网络通信,从而泄漏了比特币钱包用户的隐私。
根据比特币标准,在SPV客户端(即,比特币钱包应用程序)与比特币FNC(完整节点客户端)连接之后,filterload信息将发送到FNC。该消息用于指定比特币钱包用户对特定交易的兴趣。实际上,通常将SPV客户端配置为对涉及比特币钱包用户的比特币地址的交易的兴趣。该消息带有三个关键参数,即filter,nHashFuncs和nTweak。filter本身是位域Bloom过滤器,因此FNC可以知道其连接的比特币钱包应用程序的地址的兴趣。根据将数据元素(例如,用户的比特币地址)提供给一组不同的nHashFuncs MurmurHash3哈希函数来设置Bloom过滤器。这些nHashFuncs MurmurHash3哈希函数通过nHashNum×0xFBA4C795 + nTweak初始化,其中nHashNum是哈希函数的索引(例如1st,2nd,3rd),nTweak是SPV客户端为过滤器选择的随机数。要将数据项(例如比特币地址)添加到过滤器,该数据项必须通过nHashFuncs不同的哈希函数进行哈希处理,并通过按位或运算设置过滤器中的相应位。例如,数据项将使用2个不同的哈希函数添加到干净的6位过滤器(值为000000),并且假设第一个和第二个哈希函数的结果分别为7(000111)和9(001001),可以接受的是,将过滤器设置为001111(000111或001001)。
研究表明,为了阻止攻击者通过拦截和分析纯文本filterload消息来准确发现比特币钱包用户曾经使用过的所有比特币地址,BitcoinJ中实现了两种安全机制。首先,由于Bloom过滤器的误报率,一些不属于用户的错误地址将被过滤器过滤掉。其次,仅创建一次filterload消息并将其传输到比特币FNC(成功建立与FNC的TCP连接时),这意味着,如果攻击者从一开始就无法监视SPV客户端的所有活动,则它们将无法拦截filterload消息。
通过进一步的分析,发现这两个安全机制并不是安全的,原因如下。首先,将BitcoinJ中使用的Bloom过滤器的误报率(假地址数占添加到过滤器的所有地址数之和)设置为0.001%。第二,在SPV客户端和FNC之间建立TCP连接之后,将包含计算得出的Bloom过滤器的filterload消息发送到FNC。但是研究表明,如果SPV客户端与FNC的现有TCP连接被断开,BitcoinJ将自动发现并与新FNC连接(参见上面的BitcoinJ code1中的HandlePeerDeath函数)。因此,SPV客户端可能会遭受TCP重置攻击(即,有意断开受害者与旧FNC的TCP连接)并将filterload消息重新传输到新FNC。最后一点是,发现在SPV客户端使用的网络接口变得无法使用超过5秒后,BitcoinJ将使用全新的随机数(即nTweak)生成filterload消息。根本原因是BitcoinJ维护一个Reset计时器(即5秒)以监视是否仍然存在可用的网络接口。收到比特币消息后,计时器将更新。一旦过期,将清除并重新初始化存储在内存中的多个变量,包括用于生成过滤器的nTweak。请注意,由于nTweak用于初始化filterload消息中使用的nHashFuncs MurmurHash3哈希函数,因此,由两个不同的nTweaks生成的两条filterload消息可以帮助攻击者显着降低推断比特币用户地址的误报率。
例如,假设有两个由两个不同的nTweaks生成的filterload消息,且误报率设置为0.001%。由于该地址需要通过两个不同的过滤器,因此每个人仅允许0.001%的错误地址通过,因此将错误的地址识别为真实地址的可能性为0.001%×0.001%。
验证:进行了如下实验来验证这种漏洞的能力,首先通过家庭Wi-Fi网络将经过测试的智能手机(例如,Samsung Galaxy S6 Edge)与互联网连接,下载并安装了经过测试的比特币钱包应用程序(例如,使用BitcoinJ的SPV客户,Bitcoin Wallet)。其次,分别将0.0001 BTC存入了SPV客户端创建的两个比特币地址中。第三,为了使SPV客户端重新传输filterload消息,针对SPV客户端发起了两种攻击:(1)使用Netwox78工具进行TCP重置攻击,该工具旨在代表SPV客户端向FNC发送TCP重置数据包,并且( 2)使用Aircrack-ng进行Wi-Fi取消身份验证攻击,其目的是使SPV客户端的Wi-Fi断开时间超过5秒,如上图所示。第四,利用拦截的filterload中携带的过滤器消息和公共比特币交易数据库(即Blockchain.info)来推断SPV客户端使用的比特币地址。
实验结果如上图所示。通过发起TCP重置攻击,攻击者可以迫使经过测试的SPV客户端重新传输带有0.001%误报率的带有过滤器的filterload消息,而Wi-Fi取消身份验证攻击则允许攻击者获取由两个不同的nTweaks生成的两个filterload消息,这可以将误报率降低到10-8%们进一步检查了公共比特币交易数据库中记录的多少比特币地址可以通过拦截的过滤器。对于被TCP重置攻击拦截的过滤器,有3288个比特币地址通过了该过滤器。但是,比特币钱包应用程序仅使用了两个地址,而其余的3286个地址则未被使用。对于通过Wi-Fi取消身份验证攻击拦截的两个过滤器,只有两个比特币地址同时通过了两个过滤器;这两个比特币地址都属于经过测试的比特币钱包应用程序。验证实验证实,BitcoinJ确实泄漏了比特币钱包应用程序使用的比特币地址。
V2:没有针对下载比特币交易的反垃圾信息防御
第二个安全漏洞是,使用BitcoinJ的比特币钱包App将继续在后台从连接的比特币FNC中下载SPV客户端感兴趣的比特币交易,而不会向SPV客户端用户发出任何警报或通知。具体来说,如先前所述,SPV客户端将发送filterload消息,以指定其对特定比特币地址和交易的兴趣到比特币FNC。为了防止FNC或攻击者(中间人)准确地推断比特币用户/钱包的隐私,SPV客户端将通过配置filterload的筛选器字段来添加一些虚假数据项(即,这些内容不符合SPV客户端的兴趣)消息(将误报率设置为0.001%)。如果FNC发现任何符合SPV客户兴趣的比特币交易,则FNC将准备库存消息(即inv),其中包含匹配交易的身份,并将该消息发送给SPV客户。然后,SPV客户端使用BitcoinJ处理inv消息。
研究表明,BitcoinJ将在下载inv消息之前对所有交易进行检查。但是,检查是有缺陷的,如BitcoinJ code2所示。具体地说,进行了两次检查:(1)是否在(第11行)之前未下载交易,以及(2)交易是否不是自发的(第14行)。如果无论哪种情况都不进行交易,BitcoinJ将下载比特币交易(第19行)。这证实了BitcoinJ在下载交易之前不检查正在下载的比特币交易是否可以通过发送给FNC的先前过滤器。如果在BitcoinJ上没有部署其他安全机制(例如,与恶意FNC断开连接),则SPV客户端将下载接收到的inv消息中指定的比特币交易操作,无论这些交易是否出于其目的。因此,SPV客户端用户会遭受各种攻击,并且没有意识到这些攻击。
验证:本文进行了一项实验来验证此漏洞。首先在Samsung Galaxy S6 Edge上使用BitcoinJ安装了经过测试的比特币钱包应用程序(即Bitcoin Wallet),并通过家庭Wi-Fi网络将其连接到互联网。其次,使用ARP欺骗攻击拦截了filterload消息。由于比特币并未对所有消息字段都采用消息级加密和完整性保护,因此修改了filterload消息的消息字段Data和nFlag分别设置为0xFF … FF和0,并将修改后的filterload消息发送到SPV客户端连接到的FNC。以上修改表示用户对所有全球比特币用户产生的所有新比特币交易感兴趣。实验持续了10分钟。
上图说明了在10分钟的实验运行中,SPV客户端从连接的FNC接收了130条清单消息并下载了2535比特币交易。有三个观察结果。首先,所有下载的比特币交易均不涉及经过测试的SPV客户端曾经使用过的任何比特币地址。其次,SPV客户并未与FNC断开连接,因为FNC出于SPV客户的利益而传输了大量比特币交易。第三,SPV客户端没有向用户显示任何警报或通知(例如,遭受垃圾信息攻击)。这些证实了SPV客户端和BitcoinJ在下载它们之前均未验证是否关注比特币交易,并且未采用任何其他安全机制来阻止由连接的FNC发送的垃圾信息。
V3:违反比特币钱包服务去中心化
根据设计,比特币支付网络使用点对点(P2P)分布式网络架构,该架构允许比特币钱包客户端访问比特币网络而无需任何中间代理或服务器。这种方法不仅保护了比特币钱包用户的匿名性(例如,不需要服务器端用户注册,而且没有检查点监视所有比特币用户的活动),而且还防止了比特币钱包服务受到其中一些节点的损害。比特币网络。攻击者需要控制大多数比特币矿工和整个节点;否则,攻击者将无法篡改比特币支付交易。为了保持比特币的去中心化,比特币官方网站 https://bitcoin.org/ 还发布了比特币节点的参考实现,Bitcoin Core支持所有比特币功能(例如,钱包,网络路由,矿工 )。
但是,Bitcoin.org仅针对PC用户(Windows,Mac OS和Linux)而非手机用户开发并发布了BitCoin Core,这意味着市场上所有比特币钱包App均由其他方开发。更糟糕的是,比特币未规定任何检查机制来检查和强制执行比特币钱包App的合规性。因此,这引发了两个问题:这些比特币钱包App是否仍将比特币去中心化?如果不是,用户是否知道违规?分别对10种流行的比特币钱包App及其用户进行了安全性研究和用户研究。结果表明上述两个问题的答案都是“否”。
有三个发现,首先某些钱包应用程序未提供理想的比特币去中心化功能。这些钱包应用程序不允许用户直接访问比特币网络。所有比特币交易必须通过安全通道(例如TLS)传输到应用程序开发人员部署的中间服务器。将这些应用程序称为违反比特币去中心化的非P2P钱包应用程序。其次发现,一些非P2P钱包应用程序的用户不能完全控制他们的比特币钱包私钥。因此,用户在其比特币地址中存放的比特币可以在未经用户事先同意的情况下由其他方转移到其他比特币地址。最后但并非最不重要的一点是,大多数钱包应用程序用户都不知道存在违反比特币去中心化的行为,这些用户可能遭受各种比特币钱包欺诈攻击。
验证:进行了一个实验来验证此漏洞,首先,在Samsung Galaxy S6 Edge上安装了经过测试的比特币钱包应用程序,通过家用Wi-Fi路由器将其与互联网连接,并禁用了S6上的所有后台数据服务。其次,使用数据包抓取工具tcpdump来抓取由家庭Wi-Fi路由器发送并发往S6的所有数据包。第三,启动了经过测试的比特币钱包应用程序。
上图a和b分别说明了从Bitcoin Wallet和Coinbase钱包应用程序中获得的数据包。发现比特币钱包发送和接收了几条比特币消息,而没有观察到从Coinbase发送/接收到任何比特币消息,而是从许多TLSv1.2数据包中发送/接收了比特币消息。特别是,Coinbase需要与IP地址为54.xxx.xxx.99的中间服务器建立TLSv1.2连接。结果表明,Coinbase,Luno,Blockchain Wallet,Bitcoin.com Wallet,Mycelium,Coinomi和BitPay不允许其用户直接访问没有中间服务(非P2P钱包)的比特币网络,而Bitcoin Wallet,BRD和Simple比特币钱包可以做到(P2P钱包)。
用户研究:本文进行了一个小规模的用户研究(50个参与者),以研究比特币智能手机钱包用户是否注意到当前市场上有两种类型的比特币智能手机钱包(即P2P比特币钱包和非P2P比特币钱包),后者违反了比特币的去中心化。在这项研究中采访了五十名参与者,结果表明只有一位参与者知道他必须通过他的比特币钱包应用程序开发人员部署的中间服务器访问比特币支付网络,而其他参与者则不知道。进一步研究了这种现象的根本原因,有两个主要原因。首先,大约三分之一的参与者表示,他们仅根据该应用程序的下载和评论下载了一个比特币钱包应用程序,因此他们没有注意到存在两种不同类型的比特币钱包应用程序。其次,大约三分之二的参与者表示,他们确实使用了不止一个比特币钱包应用程序。但是,这些钱包应用程序为用户提供了相似的用户界面。
上图说明了在发送和接收BTC时,Bitcoin Core(用于PC的基于P2P的客户端),Bitcoin Wallet(用于智能手机的基于P2P的客户端)和Coinbase(用于智能手机的非基于P2P的客户端)的用户界面。因此,他们不知道有两种类型的比特币钱包应用程序。
影响:进行了另一个实验来研究违反比特币去中心化的可能负面影响,旨在探讨非P2P比特币钱包应用程序用户存放的BTC是否将在未经用户事先同意的情况下转移到其他比特币地址。请注意针对的服务是比特币钱包服务,而不是比特币交换服务(例如,出售BTC)。
实验进行如下,首先将0.0001 BTC存入了经过测试的比特币钱包应用程序提供的比特币地址。其次,通过查询公共在线比特币交易数据库Blockchain.Info来监视是否有任何与比特币地址相关的新交易,监控过程持续了一周。结果表明,在未经许可的情况下,存放的BTC在大约27小时后被转移到其他比特币地址。在另一种非基于P2P的钱包应用程序Luno上也观察到了类似的结果。结果表明,并不是所有的比特币钱包App用户都能完全控制其比特币钱包私钥。
此外,表面上看违反比特币去中心化不一定是一个漏洞,因为非P2P钱包应用程序可能是良性的,而支持比特币去中心化的基于P2P的钱包应用程序可能是恶意的。但是由于以下原因,第二种想法的情况并非如此。首先,无论非P2P钱包应用程序是否良性,其代理/服务器都可能受到攻击者的侵害,因此其用户的所有比特币钱包私钥都会泄露给攻击者。相反,P2P比特币钱包应用程序的操作不依赖于任何中间代理/服务器,而是分布式的比特币网络。其次,对于恶意的基于P2P的钱包应用程序而言,绕过常规的深度数据包检测(DPI)安全机制具有挑战性,因为基于P2P的应用程序传输的所有消息都是纯文本比特币消息,而不是其他任何消息,即因此,可以轻松地进行消息调查以识别可疑活动。最后,违反比特币去中心化违规行为为非P2P钱包应用程序提供商提供了一种有效手段,可以监视用户信息(例如,位置,智能手机型号,IP地址,服务WiFi /蜂窝网络),这威胁着比特币用户匿名。
0x04 Proof-of-Concept Attacks
A.比特币去匿名攻击
该攻击旨在使匿名比特币地址和比特币钱包App用户的交易匿名化。近年来,比特币去匿名化是一个流行的研究主题。 已证明如果SPV客户端(比特币钱包应用程序)拥有少量的比特币地址(例如小于20),则攻击者可以使用单个过滤器从拦截的filterload消息中正确猜测所有这些比特币地址的概率为80%,而过滤器使用的目标误报率为0.05%。然而,现有技术具有三个关键限制。首先,如果攻击者长时间无法连续监视受害者,则攻击者可能无法拦截受害者发送的filterload。其次,猜测受害者的所有比特币地址的准确性在很大程度上取决于受害者使用的比特币地址的数量。例如,当SPV客户拥有50个比特币地址(0.05%的目标误报)时,在考虑7.149亿比特币地址已添加到区块链时,直到09/01/2020 ,攻击者正确猜出所有这些比特币地址的可能性将大大降低至6.67×10^(−212)%。第三,现有技术没有识别出比特币钱包应用用户的真实身份(例如,名字),因此对现实世界的破坏是有限的。
本研究的比特币去匿名攻击旨在解决上述问题。通过利用漏洞V1,攻击者可以迫使受害者的SPV客户端主动传输多个不同的filterload消息。每个消息都有一个过滤器,该过滤器的默认误报率为0.001%。通过对多个过滤器进行处理,攻击者可以将识别出的比特币地址的错误率降低到可接受的水平(例如,三个不同的过滤器得到10%至13%的错误率)。具体来说,在此攻击中,在考虑所有使用的比特币地址(即7.149亿)的同时,错误识别的比特币地址的数量为0.00000072。由于错误率低,因此可以将识别出的比特币地址开发为新的唯一钱包指纹。两个用户生成相同的比特币地址的可能性极小。此外,通过利用智能手机上流行的Wi-Fi呼叫服务(也称为WiFi语音,VoWiFi)的漏洞,攻击者可以发现比特币钱包应用程序用户的身份。请注意,直到2019年2月,52个国家/地区的许多蜂窝网络运营商已广泛支持Wi-Fi呼叫服务。
攻击者假设:假设受害者的智能手机支持Wi-Fi呼叫服务,而攻击者可以在公共场所(例如Starbucks,Walmart, Mcdonalds)附近的受害者附近部署Wi-Fi网络和监控摄像头。实际上,攻击者实现这一目标并不是很困难。例如,攻击者可以通过在智能手机上使用移动热点服务,同时将智能手机用作面对受害者的监视摄像头,来部署流氓AP(例如模拟Starbucks的Wi-Fi AP)。
攻击设计:上图说明了此攻击的流程图。首先,正如之前假设的那样,攻击者可以拦截所有受害者包。其次,为了分析这些数据包,开发了一个由两个模块组成的比特币地址去匿名器:(1)用户身份推断模块和(2)比特币地址发现模块。接下来,将详细介绍这两个模块的设计。
1)用户身份推断:利用新部署的蜂窝网络服务,Wi-Fi呼叫服务和可视技术来推断智能手机上比特币钱包所有者的用户身份。该模块通过利用独特的人类通话动作(即在接听电话时将手机移至右/左耳并在通话结束时放下电话)和视觉检测技术来推断用户身份。
该模块包含两个主要功能:第一项功能是通过分析加密的Wi-Fi呼叫IPSec数据包来推断用户智能手机的IP地址,其Wi Fi呼叫事件和事件时间戳。 攻击者可以通过分析Wi-Fi呼叫的IPSec数据包来识别Wi-Fi呼叫用户的呼叫事件(例如,拨打电话,接听电话或通话)。具体来说,通过分析Wi-Fi用户的IPSec数据包,攻击者可以准确地知道特定IP地址的所有者通过Wi-Fi呼叫服务进行通话的时间(呼叫开始的时间和呼叫结束的时间)。第二项功能是使用监控摄像头记录用户的动作,发现Wi-Fi呼叫开始和结束的时间,以及通过面部识别技术和在线反向图像搜索引擎(即查找人的姓名)来识别其用户身份通过提供照片)。通过关联第一个功能提供的Wi-Fi通话开始和结束的时间,能够推断出IP地址(例如192.168.1.75↔Alice)的用户身份。输出结果IP地址,用户身份将发送到比特币地址发现模块。
2)比特币地址发现:在接收到由用户身份推断模块发送的IP地址,用户身份后,比特币地址发现模块将首先验证该IP地址是否属于SPV客户端,然后发现所有使用的比特币地址由SPV客户端。通过分析截获的数据包,很容易判断IP地址是否属于SPV客户端,因为所有比特币消息均未加密。进一步利用漏洞V1,以低误报率获取受害者的多个过滤器。因此,通过给定的SPV客户端IP地址,此模块将输出一个四元组<Bitcoin addresses, User identity, IP address last used, timestamp>。
实施攻击: 1)准确地拦截受害者的Wi-Fi呼叫数据包,并识别其带有时间戳的呼叫事件和受害者设备的IP地址。例如,可以确定Wi-Fi呼叫用户使用IP地址192.168.1.5在上午10:50:10拨打电话,并在上午10:50:16结束呼出电话。此外,应用了多种计算机视觉技术来通过脸部识别及其带有时间戳的呼叫动作来发现用户的用户身份。这包括两个步骤。首先,对SVM(支持向量机)模型进行了训练,以检测用户的拨号/通话动作。为SVM提供了错误和正常的训练视频。对于每个训练视频,假定可以在人员边界框中识别该人员,并提取其相应的HOG(定向梯度直方图)描述符。使用VLFeat6提取HOG描述符并训练SVM。其次,一旦SVM检测到用户的拨号/通话动作,就会在视频帧中识别出用户身份。将MatConvNet和Tensorflow和DR-GAN模块(Disentangled Representation learning-Generative Adversarial Network)的深度学习库用作微人脸检测器(即在视频帧中发现人脸)。注意,实际上,攻击者还可以利用一些在线逆向图像搜索引擎(例如*ocialcatfish)来发现人脸对应的身份。
通过关联Wi-Fi推断和视频推断的呼叫事件的时间戳,用户身份推断模块可以将用户身份与IP地址相关联。结果<user identity, IP address>被发送到比特币地址发现模块。
2)对受害设备发起了Wi-Fi取消身份验证攻击,并获得了来自不同nTweaks的多个过滤器。首先,将Aircrack-ng部署在Linux计算机上,并将无线网络适配器卡更改为监视模式,该卡允许该卡发现附近的Wi-Fi路由器及其MAC地址和SSID(Wi-Fi的服务集标识符)路由器,例如“Starbucks WiFi”)。其次,执行命令“ airplay-ng –deauth 0 -c XX:XX:XX:EC:3B:30 -a XX:XX:XX:36:92:10 wlp3s0mon”,其中EC:3B:30和36: 92:10是用户设备和WiFi路由器的MAC地址的最后三个字节,而wlp3s0mon是无线网络适配器卡。第三,经过5秒的攻击期后,停止了攻击。断开连接的受害设备将在不到10秒的时间内重新连接到Wi-Fi路由器,并传输由新的nTweak生成的filterload消息。通过重复步骤2和3,攻击者可以获得多个filterload消息并标识SPV客户端使用的比特币地址。
攻击评估:首先,邀请了四个学生(U1,U2,U3,U4)参加此评估实验。所有参与者都提供了他们的正面人脸(作为训练数据)和用户身份(例如姓名)。其次,参与者进入安装了监控摄像头和经过测试的Wi-Fi路由器的房间。然后,他们从装有四台经过测试的智能手机的盒子中随机选择了一部手机(所有经过测试的手机均具有相同的型号和相同的颜色)。在经过测试的手机上,激活了Wi-Fi呼叫服务并预安装了比特币钱包应用程序比特币钱包。第三,要求所有参与者拨打至少一个Wi-Fi呼叫并进行比特币交易,该交易在10分钟内将随机数量的BTC转移到一个比特币地址中,进行了五轮试验。
1)结果表明,基于Wi-Fi呼叫的用户身份推断模块可以识别五个实验运行中四个参与者的用户身份(如上表所示)。但是,还观察到呼叫开始/结束时间的平均误差约为1.5秒(即,基于视频的估计时间与Wi-Fi呼叫推断时间之间的误差)。这意味着如果多个用户拨打并结束其通话,以1.5秒的间隔通话,当前的模型可能无法准确识别用户身份。然而,可以通过向用户身份推断模块提供更多的呼叫统计信息(例如,用户在呼叫中保持沉默多长时间)来解决该问题。
2)在收到推断的用户身份和用户的IP地址后,该模块通过上述Wi-Fi取消身份验证攻击获得两个过滤器,应用这两个过滤器来发现SPV客户端使用的所有比特币地址(Bitcoinwallet应用程序),并检索所有相关的比特币交易。上图说明了该模块如何在一次实验运行中对与参与者U1使用的比特币钱包相关的所有比特币地址和比特币交易进行匿名处理。图左、中和右分别显示(1)使用不同nTweaks生成的两个filterload消息,(2)成功通过两个过滤器的比特币地址,(3)所有比特币分别与发现的比特币地址有关的交易。参与者U1完成了最后一笔比特币交易(No. 41),目的是在此次实验运行期间将0.0003 BTC转移到比特币地址之一;参与者U1确认了这个结果。
这种攻击的关键结果是多维用户隐私泄漏,它不仅使比特币钱包智能手机用户的所有比特币地址和交易匿名,而且还基于受害者独特应用层的基于比特币钱包的指纹,为攻击者提供可靠的用户跟踪机制(即受害者比特币钱包应用程序使用的比特币地址) 。 SPV客户端使用的比特币地址可以被视为其唯一的钱包指纹,这有两个原因。首先,比特币地址冲突(即,不同钱包使用的比特币地址)仅在下一个千年中发生。其次,本文攻击可以准确地发现SPV客户端使用的所有比特币地址,因为攻击者可以将攻击中的误报率(攻击者错误地标识比特币地址的概率)自由地降低到10^(-5K),其中K为已发起的Wi-Fi取消身份验证攻击的数量。实际上,由于隐私问题,用户可能会增加默认的误报率。但是,此攻击仍然可以容纳较高的默认识别率。例如,如果将比率设置为50%,则攻击者可以通过发起10次攻击来将比率显着降低到0.097%。
这种攻击可能不切实际,因为它要求攻击者部署监视摄像头和Wi-Fi网络以监视智能手机用户的活动。尽管攻击者在某些公共场所发起这种攻击并在特定时间段(例如几个小时)内监视移动用户并不是很困难。但是,如果受监视的用户在攻击时间内未访问任何Wi-Fi呼叫服务,则攻击者无法将比特币钱包应用程序所有者的身份匿名化,也无法将身份与比特币钱包指纹(即使用的比特币地址)相关联。因此,攻击者没有动力大规模发起这种攻击,因此这种攻击在现实世界中的影响是有限的。
由于三个原因,情况并非如此。首先,根据最近的报告/研究,比特币是犯罪分子用来绕过货币和执法机构监督以欺诈用户、勒索赎金的方法。为了有效防止犯罪分子破坏金融秩序和阻止网络攻击,监管者有动机去发现比特币钱包用户的真实身份。第二,如今,为了公共安全起见,在日常生活中观察监视摄像机并不罕见。例如,在伦敦(英国)和北京(中国)分别部署了约627,000和1,150,000闭路电视摄像机。此外,在某些国家/地区,例如中国,美国(芝加哥,底特律),政府已应用面部识别技术和部署的监视摄像机来追踪罪犯。第三,在万物互联的时代,一些城市(例如,纽约,莫斯科,香港,汉城,巴黎)和国家(例如,英国,瑞士,新加坡,丹麦)已为其居民部署了公共Wi-Fi热点。最新的报告预测,全球公共Wi-Fi热点的数量将从2018年的1.69亿个热点增加到2023年的6.28亿个,增长了四倍,约有71%的移动通信流向Wi-Fi,这导致Wi-Fi通话市场的需求上升。为了抵御非法金融交易/交易,监管者有动机发起比特币去匿名攻击。但是,这并不意味着无论出于何种原因都可以损害比特币钱包App用户的隐私。
B.反射和放大比特币垃圾信息攻击
该攻击旨在利用良性的比特币全节点客户端向受害者引入持续的、不必要的比特币流量(例如14-20 MB /小时),这会导致蜂窝网络数据账单增加和功耗增加96%。通过利用V2,攻击者可以执行比特币钱包应用程序,以从连接的比特币FNC连续下载不需要的比特币交易。
攻击者的假设:攻击者可以拦截和修改受害者与受害者连接的比特币FNC之间传输的比特币消息。
攻击设计:此攻击的工作方式如下,首先拦截由比特币钱包应用程序(例如,Bitcoin Wallet)发送到连接的比特币FNC的filterload消息。其次,攻击者可以通过将字段Data和nFlags分别更改为0xFF..FF和0来修改拦截的filterload消息,因为该消息不支持加密和完整性保护。这些修改用于告知比特币全节点客户端,即用户对所有比特币交易都感兴趣。攻击者进一步将该欺骗信息发送给比特币FNC。
实施攻击:通过在Trudy之上开发一个BitCoinTrudy服务器来实施此攻击。在受害者和比特币FNC之间部署了BitCoinTrudy服务器,这帮助攻击者识别并拦截了filterload消息,修改了Data和nFlag字段,相应地更新了Bitcoin消息的校验和和TCP校验和,并将欺骗性的filterload消息传递给了连接的比特币FNC。
攻击评估:用两个指标评估了垃圾信息攻击的危害,(1)垃圾信息流量和(2)受害者手机的功耗。评价实验如下进行。首先在使用Android 8.1.0的两台Google Pixel XL手机上安装了经过测试的比特币钱包应用程序(即,比特币钱包)。其次,通过比特币钱包创建了两个比特币账户。第三,启动了比特币钱包和电池消耗监视工具(即Batterystats),该工具连续监视两台经过测试的智能手机上的电池使用情况。记录了两个经过测试的智能手机的比特币流量和功耗。第四,使用开发的BitCoinTrudy对一台经过测试的智能手机发起了设计好的比特币垃圾信息攻击。当受害者的电池电量耗尽时,实验停止。
1)垃圾信息流量:上图a-c分别绘制了每小时比特币垃圾信息流量,累积的比特币垃圾信息流量以及在受害者身上观察到的放大系数。有三个观察结果。首先,受到攻击的手机每小时将接收14-20 MB的比特币流量,而不受攻击的手机每小时将仅接收1-2 MB的比特币流量。其次,在10小时的实验中,受害者的手机接收到约164 MB的内存,而不受攻击的手机仅接收了16 MB的内存。这表明攻击者可以向受害者连续产生比特币垃圾信息流量。如果受害者正在使用蜂窝网络数据服务访问比特币网络,则他们必须为垃圾信息流量支付费用。第三,在实验结束时,攻击放大系数增加到3666左右。请注意,垃圾信息不必要的流量来自攻击期间所有全球比特币用户产生的新比特币交易。因此,当更多的用户使用比特币服务时,该系数可能会增加。
2)功耗:处于和未处于10小时垃圾信息攻击之下的电话的功耗结果如上图d所示。结果表明,受到攻击的手机比没有受到攻击的手机消耗的功率多96%。
此攻击的主要特点是为攻击者提供新的攻击媒介,以向移动用户发起持续的垃圾信息流量,攻击成本低(每小时4.5 KB比特币消息),但是攻击破坏比成本要大(每小时14-20 MB)。受害人遭受了增加的移动服务费用和更短的智能手机电池寿命的困扰。
C.手机比特币钱包欺诈攻击
根据V3,在移动设备上开发了一个非P2P比特币钱包,以发起比特币欺诈攻击,该攻击会在未经用户同意的情况下将BTC秘密地从一个地址转移到另一个地址。使用非P2P钱包打破了比特币的分布式设计原则,该原则可以保护用户钱包。借助集中式服务模型,钱包服务提供商无需他们的批准即可轻松操纵其用户的比特币帐户。特别是,开发了非P2P比特币钱包智能手机应用程序MyBitcoin,其中包括客户端和服务器。客户端是一个简单的Android应用程序,为用户发送和接收BTC提供了简单的用户界面。该服务器支持比特币钱包和网络路由功能。 MyBitcoin客户端首先通过HTTPS与服务器连接,然后服务器又通过比特币协议与比特币网络连接。评估表明,MyBitcoin用户可以成功地将BTC转移到其他比特币地址,而不会出现任何问题。这证实了比特币网络没有采用其他安全机制来在实践中防止违反比特币去中心化。
由于用户通常会选择下载次数很多或评分较高的应用程序,因此可以积极地将这种恶意钱包应用程序推广给用户。分析了流行的比特币钱包应用程序Mycelium的下载后发现,一旦下载量大于1,000,下载量的增长率就会大大提高。在其他比特币应用程序上也有类似的观察。换句话说,如果攻击者可以将下载数量增加到一千以上,则预计会有更多的受害者下载应用程序。实际上,对于实现这一目标的攻击者而言,这在技术上并不具有挑战性。许多公司(例如MobiRink)提供促销服务,从而增加了应用程序下载量和对特定应用程序的正面评价。根据与这些促销公司的讨论,为特定应用程序增加500次下载和100条正面评论仅花费不到100美元。一旦受害者安装了恶意应用程序,他们将遭受各种比特币钱包欺诈攻击。但是,不幸的是,由于IRB的限制,无法开发真正的恶意比特币钱包应用程序并评估其对现实世界的负面影响。因此本文提供了对该比特币钱包欺诈攻击的详细分析,并将其与其他类型的欺诈攻击进行了比较,如下所示。
与其他欺诈攻击的比较:这种攻击不需要复杂的攻击技术,但是与其他类型的金融欺诈攻击(1)手机移动银行欺诈攻击和(2)手机移动支付欺诈攻击相比,此攻击的负面影响是深远的。前一种攻击旨在获取受害者的用户名和密码,并通过部署伪造的移动银行应用程序(例如,Chsae是Chase应用程序的伪造版本)进一步窃取受害者的存款。后一种攻击旨在通过部署类似于Paypal,Venmo,CashApp的恶意在线支付应用程序,从受害者的银行帐户中窃取受害者的存款或未经受害者批准使用信用卡。从四个方面将设计的比特币欺诈攻击与这两种攻击进行了比较:(1)部署难度,(2)信用交易,(3)借记交易和(4)欺诈保护。
比较结果总结在上表中,有四个观察结果。首先,比特币钱包手机App欺诈攻击的部署难度低于其他攻击。对于手机移动银行欺诈攻击,伪造的移动银行应用程序(例如Chsae)需要通过由移动应用程序商店(例如Google Play和Apple Store)进行的检查。对于手机移动支付欺诈攻击,由于转账通常仅限于使用相同移动支付应用程序的用户,因此新的移动支付应用程序在短时间内拥有大量客户并不容易。其次,移动银行/支付欺诈应用程序的用户资金存入用户的银行帐户,而移动比特币钱包欺诈应用程序的用户资金存入攻击者的比特币地址。第三,所有这些攻击都能够在无需用户批准的情况下将受害者的资金转移到其他帐户。但是,移动银行和移动支付攻击对可转移金额有限制,而比特币钱包欺诈攻击则没有。此外,比特币钱包欺诈攻击可以阻止受害者接收有关欺诈交易的任何警报,但是,由于警报是由受害者的金融机构(例如,Chase,Citi)提供的,因此其他两种攻击无法实现攻击者的控制。第四,移动比特币钱包欺诈攻击的受害者不太可能将攻击者窃取的钱(即BTC),因为在许多国家,比特币不是受政府保护的资产,而其他两种攻击的受害者可能仍然拥有通过向银行提起争议来弥补损失的机会。例如,对于美国的信用卡用户,他们通常不需要通过提起争议来为异常交易付费。
0x05 Solution: Bitcoin Security Rectifier
本研究开发了基于电话的Bitcoin Security Rectifier(一种App)来解决/缓解已发现的漏洞;这种方法不需要对现有的比特币协议标准,比特币钱包应用程序,库和钱包服务操作进行任何修改。此方法受两个因素设计。首先,修订比特币协议标准非常耗时,不太可能在短时间内将其存档并更新到整个比特币生态系统。其次,由于商业原因,比特币钱包应用服务提供商可能不愿意改变其当前的运营/设计。
设计:Bitcoin Security Rectifier将检查所有传入和传出的比特币消息,并采取以下措施。对于V1,如果正在检查的比特币消息是外发的flliterload消息,它将首先将该消息保存到内存中,称为orig-filterload,然后创建一个副本并添加10*N不属于该用户的比特币地址到Bloom过滤器,其中N是用户已添加到orig-filterload的Bloom过滤器的比特币地址数。修改的flliterload消息称为modified-filterload。最后,modified-filterload将发送到比特币网络。使用这种方法,攻击者无法从受害者那里获得low-false positive-rate的Bloom过滤器(针对隐私泄漏攻击)。对于V2,Rectifier通过利用缓存的modified-filterload来检查带有Inv消息的比特币交易是否符合SPV客户的利益,并计算和监控实际的误报率。如果与FNC相关联的实际误报率高于先前配置的误报率,则Rectifier将强制SPV客户端与FNC断开连接,因为FNC可能已被攻击者滥用以发起垃圾信息攻击。对于V3,如果已启动比特币钱包应用程序,并且在预定义的时间段(例如5分钟)内未观察到比特币消息,则会向用户发送警告消息。
执行:提出的Bitcoin Security Rectifier是用Java编写的,并且是在Android智能手机上开发的。Rectifier由两个组件组成,即比特币消息抓取器和比特币安全整改器。比特币消息抓取器是一种轻量级的特定于比特币的抓取服务,该服务在智能手机的NetWorkPacktCapture VPN 上实现,仅拦截比特币消息。对于其他类型的数据包集,它们将直接路由到目的地。比特币安全纠正会检查截获的比特币消息,并在需要时修改比特币消息。请注意,开发的Rectifier不需要root特权,但需要BIND_VPN_SERVICE的许可。
评估:评估实验的设置如上图所示。首先,将Bitcoin Security Rectifier安装在经过测试的智能手机上。其次,部署了一个服务器,以在为经过测试的智能手机提供服务的Wi-Fi网络上发起比特币去匿名攻击。第三,在经过测试的智能手机和与之连接的比特币全节点客户端之间部署了服务器,以发起比特币垃圾信息攻击。第四,在经过测试的手机上,安装了应用程序MyBitcoin来模拟比特币欺诈攻击。
评估结果如上图所示。对于比特币去匿名攻击,Rectifier可以拦截具有低默认误报率的Bloom过滤器,并通过添加不属于受害者的比特币地址来保护它(请参见图a )。因此,攻击者无法准确推断受害者拥有的所有比特币地址。对于比特币垃圾信息攻击,图b显示Rectifier可以拦截收到的恶意比特币库存消息,对其进行检查,并与恶意比特币FNC断开连接。对于比特币欺诈攻击,图c确认Rectifier已成功检测到用户是否使用非P2P比特币钱包应用程序,并为用户提供了安全警告。
0x06 Conclusion
如今,Coinbase,Luno,Bitcoin Wallet等比特币钱包App越来越受欢迎。在这项工作中,研究了10种最受欢迎的比特币钱包App的安全隐患。在这些研究的应用程序中发现了三个安全漏洞。通过利用它们,设计了三种概念验证攻击,攻击者可以利用这些攻击(1)对用户的真实身份,比特币地址和交易进行匿名处理;(2)向受害者引入持续的有害比特币垃圾信息流量;(3)启动比特币欺诈攻击以利用比特币钱包用户。分析表明,这些安全漏洞的根本原因是由于比特币钱包应用程序的不正确实施以及钱包服务提供商的运营失误。进一步开发了手机端的Bitcoin Security Rectifier,以帮助用户防御已识别的安全威胁,而无需修改当前的比特币协议,基础设施以及钱包应用程序和服务。