【技术分享】针对比特币钱包App的三种漏洞进攻与计策
如今,比特币是最受欢迎的加密货币。随着智能手机和高速移动互联网的普及,越来越多的用户开始在智能手机上访问其比特币钱包。用户可以在智能手机上下载并安装各种比特币钱包使用程序(例如Coinbase,Luno,Bitcoin Wallet),并可以随时随地访问其比特币钱包。但是,这些比特币手机使用程序不一定安全,它们会扩展进攻者的新进攻面。在这项工作中探索了10种最受欢迎的比特币钱包App的不安全性,并发现了三个安全漏洞。通过利用它们,进攻者可以发起各种进攻,包括比特币往匿名,反射和放大垃圾信息以及钱包欺诈进攻。为了解决已确定的安全漏洞,本研究开发了一种工具Bitcoin Security Rectifier,以保护比特币钱包App用户的安全。开发的工具不需要对当前的钱包使用程序进行任何修改,并且符合比特币准则。
01
Introduction
许多消费者和企业(例如Microsoft,Newegg,Overstock,Subway,Starbucks)已接受比特币作为付款方式。随着高速移动互联网的迅速部署和智能手机的普及,越来越多的用户开始通过各种比特币钱包App访问其比特币钱包。比特币钱包App是否会为进攻者创建新的进攻媒介,从而对移动用户发起新的进攻?不幸的是,本文研究得出了肯定的答案。在这项工作中,研究了10种最受欢迎的比特币钱包App(按下载次数排名),发现了三个安全漏洞,涵盖了比特币钱包使用程序的实现和比特币钱包使用程序服务的运行。本文发现,已被各种比特币钱包App广泛使用的比特币使用程序库BitcoinJ泄漏了比特币钱包用户的隐私(例如,所有用户的比特币地址)(漏洞V1)并在不向用户提供任何通知或警报的情状下,在后台不断下载用户不想要的比特币交易(漏洞V2)。此外,发现比特币钱包App可能违反了比特币钱包服务往中心化的原则,这些使用程序的用户更轻易受到金融欺诈进攻。更具威逼性的是,大多数用户没有意识到这一点(漏洞V3)。
02
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的新安全漏洞和有效进攻,但并不加剧这种破坏。
03
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消息可以扶助进攻者显着降低推断比特币用户地址的误报率。
验证:进行了如下实验来验证这种漏洞的能力,首先通过家庭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)分布式网络架构,该架构答应比特币钱包客户端访问比特币网络而无需任何中间代理或服务器。这种方法不仅保护了比特币钱包用户的匿名性(例如,不需要服务器端用户注册,而且没有检查点监视所有比特币用户的活动),而且还防止了比特币钱包服务受到其中一些节点的损害。比特币网络。进攻者需要掌握大多数比特币矿工和整个节点;否则,进攻者将无法篡改比特币支付交易。为了保持比特币的往中心化,比特币官方网站 支持所有比特币功能(例如,钱包,网络路由,矿工 )。
但是,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用户都能完全掌握其比特币钱包私钥。
04
Proof-of-Concept Attacks
A.比特币往匿名进攻
进攻者假设:假设受害者的智能手机支持Wi-Fi唤喊服务,而进攻者可以在公共场所(例如Starbucks,Walmart, Mcdonalds)四周的受害者四周部署Wi-Fi网络和监控摄像头。实际上,进攻者实现这一目的并不是很困难。例如,进攻者可以通过在智能手机上使用移动热点服务,同时将智能手机用作面对受害者的监视摄像头,来部署流氓AP(例如模拟Starbucks的Wi-Fi AP)。
进攻设计:上图阐明了此进攻的流程图。首先,正如之前假设的那样,进攻者可以拦截所有受害者包。其次,为了分析这些数据包,开发了一个由两个模块组成的比特币地址往匿名器:(1)用户身份推断模块和(2)比特币地址发现模块。接下来,将详尽介绍这两个模块的设计。
1)用户身份推断:利用新部署的蜂窝网络服务,Wi-Fi唤喊服务和可视技术来推断智能手机上比特币钱包所有者的用户身份。该模块通过利用特殊的人类通话动作(即在接听电话时将手机移至右/左耳并在通话结束时放下电话)和视觉检测技术来推断用户身份。
2)比特币地址发现:在接收到由用户身份推断模块发送的IP地址,用户身份后,比特币地址发现模块将首先验证该IP地址是否属于SPV客户端,然后发现所有使用的比特币地址由SPV客户端。通过分析截获的数据包,很轻易推断IP地址是否属于SPV客户端,因为所有比特币消息均未加密。进一步利用漏洞V1,以低误报率获取受害者的多个过滤器。因此,通过给定的SPV客户端IP地址,此模块将输出一个四元组Bitcoin addresses, User identity, IP address last used, timestamp。
通过关联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转移到一个比特币地址中,进行了五轮试验。
2)在收到推断的用户身份和用户的IP地址后,该模块通过上述Wi-Fi取缔身份验证进攻获得两个过滤器,使用这两个过滤器来发现SPV客户端使用的所有比特币地址(Bitcoinwallet使用程序),并检索所有相关的比特币交易。上图阐明了该模块如何在一次实验运行中对与参与者U1使用的比特币钱包相关的所有比特币地址和比特币交易进行匿名处理。图左、中和右分别展示(1)使用不同nTweaks生成的两个filterload消息,(2)成功通过两个过滤器的比特币地址,(3)所有比特币分别与发现的比特币地址有关的交易。参与者U1完成了最后一笔比特币交易(No. 41),目的是在此次实验运行期间将0.0003 BTC转移到比特币地址之一;参与者U1确认了这个结果。
这种进攻可能不切实际,因为它要求进攻者部署监视摄像头和Wi-Fi网络以监视智能手机用户的活动。尽管进攻者在某些公共场所发起这种进攻并在特定时间段(例如几个小时)内监视移动用户并不是很困难。但是,假如受监视的用户在进攻时间内未访问任何Wi-Fi唤喊服务,则进攻者无法将比特币钱包使用程序所有者的身份匿名化,也无法将身份与比特币钱包指纹(即使用的比特币地址)相关联。因此,进攻者没有动力大规模发起这种进攻,因此这种进攻在现实世界中的影响是有限的。
B.反射和放大比特币垃圾信息进攻
该进攻旨在利用良性的比特币全节点客户端向受害者引进继续的、不必要的比特币流量(例如14-20 MB /小时),这会导致蜂窝网络数据账单增加和功耗增加96%。通过利用V2,进攻者可以执行比特币钱包使用程序,以从连接的比特币FNC连续下载不需要的比特币交易。
进攻者的假设:进攻者可以拦截和修改受害者与受害者连接的比特币FNC之间传输的比特币消息。
进攻设计:此进攻的工作方式如下,首先拦截由比特币钱包使用程序(例如,Bitcoin Wallet)发送到连接的比特币FNC的filterload消息。其次,进攻者可以通过将字段Data和nFlags分别更改为0xFF..FF和0来修改拦截的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客户端首先通过转移到其他比特币地址,而不会出现任何问题。这证实了比特币网络没有摘用其他安全机制来在实践中防止违反比特币往中心化。
由于用户通常会抉择下载次数很多或评分较高的使用程序,因此可以积极地将这种恶意钱包使用程序妥善给用户。分析了时髦的比特币钱包使用程序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),因为在许多国家,比特币不是受政府保护的资产,而其他两种进攻的受害者可能仍然拥有通过向银行提起争议来弥补缺失的机会。例如,对于美国的信用卡用户,他们通常不需要通过提起争议来为反常交易付费。
05
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比特币钱包使用程序,并为用户提供了安全警告。
06
Conclusion
- 结尾 -
【技术分享】VMask:针对智能家居中语音验证系统的声纹模拟进攻
【技术分享】多路非对称进攻:
【技术分享】ZeroWall:通过Encoder-Decoder RNN检测0-day网络进攻
戳“阅读原文”查看更多内容