360 | 数字货币钱包APP安全威胁概况

阅读量    17711 | 评论 10

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

传送门360 | 数字货币钱包安全白皮书

前言

随着区块链技术的普及,各种数字货币得到了很大发展,官方货币会发布自己的钱包APP,如Bitcoin Core、Parity,第三方数字货币钱包为了进一步提升用户体验,同样开发出了如比特派,imToken,AToken等钱包APP,随着他们出现在市场上,黑客也瞄准了这块。

2017年,智能合约公司Parity开发的数字货币钱包所使用的多重签名技术被黑客发现存在漏洞,并导致15.3万枚以太币被盗,损失高达价值3260万美元。

2018年,技术处于全球领先的硬件数字货币钱包制造商Ledger在完成7500万美元的B轮融资后被爆出钱包设计存在缺陷,黑客可通过恶意软件篡改钱包地址,并将数字货币转给黑客。

2018年Bitcoin Wallet被爆出不正确的私钥存储,容易被黑客获取到私钥并还原出用户助记词。

为了更准确地了解钱包APP的安全现状,近期,我们对应用市场上流通的热钱包以及冷钱包进行了相关安全审核评估,发现了很多安全问题,在此整理成相关文档发布,帮助钱包APP厂商和用户了解周知其中存在的安全风险,引起大家对安全的重视并且及时自查,避免受到损失。

 

数字货币钱包安全威胁

一个数字货币钱包的使用,是包含了从软件启动到进行交易的一套完整的过程,其中会涉及到非常多的业务场景,从传统软件APP的功能如核心代码未加密,软件自身无校验,中间人数据劫持等,在钱包APP的业务场景下则会将危害放大,导致用户的钱财受到损失。同时针对钱包APP的独有业务场景,如助记词的不安全保存,交易密码设置弱口令,货币价格走势数据被替换等也将会给用户在使用钱包的安全上造成很大的危害,以下为我们整理发现的top5的安全风险。

1.    助记词、交易密码泄露

比特派为比特币官方推荐的一支第三方团队比太开发的钱包应用,目前在Google Play上安装量达到10000+。

我们在非Root环境下,对其进行录屏测试,发现在助记词生成阶段无法录屏,但在导入钱包时,可以录下界面,此处可以导致助记词泄露从而造成数字货币账户被盗,同时,我们发现在输入交易密码时同样存在可录屏漏洞,通过观察按键按下顺序即可推出交易密码。

    在钱包业务场景下,需要对相关敏感信息输入页面做防截屏措施,采用相关保护如对当前Activity页面加入属性WindowManager.LayoutParams.FLAG_SECURE,使得第三方程序在截屏时直接显示黑屏,无法记录。

2.不安全的钱包APP运行环境

数字货币钱包APP的一个安全重点就是运行环境,安卓是一个非常庞大而且复杂的系统,我们在实际进行分析测试的时候,发现将近四分之三的APP都未对相关环境做过检测,能够直接对APP进行逆向调试,HOOK注入,来分析APP的执行流程与动态分析加解密算法过程。我们发现,近八成的钱包APP未对运行环境安全做安全检测,无法保证用户运行APP的环境安全,导致用户钱财受到损失。

如上图360发布的中国手机安全状况报告中,我们可以看到目前安卓手机存在的漏洞非常多,导致APP运行在上面也会有很多安全风险,比如以下几点。

  1. 手机漏洞的扫描

如果一个手机存在已经披露过的系统漏洞,那么就时刻处于被黑客攻击的风险之下,如果存在可提权或者可以获取到助记词等敏感数据的漏洞,那么用户账户就会暴露在一个极其危险的环境下,所以我们建议加上对已知安卓系统漏洞的检测。

  1. Root环境检测

安卓实行沙箱机制,如果设备未Root,在沙箱的保护下,其他应用并不能获取本应用的数据,如果设备已Root,我们无法保证运行时的环境的安全性,助记词等极其重要的数据很有可能被恶意应用获取到。

  1. APP完整性检测

APP完整性指的是自身是否被篡改,通常可以通过签名校验来实现,防止用户使用被重打包后的应用。

  1. 网络代理检测

如果当前网络使用的是代理,那么就有可能在数据交互的过程中被第三方监听,造成数据的泄露甚至是敏感数据泄露。

对以上提到的几个关键点,我们分别在不同的环境下进行模拟攻击,发现近八成APP未对此做安全防护措施,我们可以利用安卓系统漏洞,软件自身漏洞等进行攻击测试。同时近一年来,挖矿木马,钱包APP劫持木马也开始大量出现,使很多用户直接受到财产损失,所以建议钱包厂商一定要对此问题重视,并且使用相关漏洞缓解措施。

3.    交易密码被暴力猜解

大部分的数字货币钱包在第一次运行时会提示用户是否创建新钱包,当用户创建新钱包后,数字货币钱包会通过一系列算法生成一个私钥,正常情况下该私钥并不会展示给用户,而是会通过助记词的形式提示用户进行钱包的备份操作,如下是某款数字货币钱包的助记词界面,该算法有一套业界标准,通过助记词可以推导出私钥,再由私钥推导出其它数据。

在钱包初始化完后,会提示用户输入一个交易密钥,该交易密钥用于交易之前的私钥解密推导,当发生交易时,通过输入的交易密钥结合算法进行私钥的计算,生成的私钥用于交易的签名,如果数字货币钱包的交易密码设置不够强,非常容易被暴力破解,当交易密钥被暴力破解,整个钱包相当于处于没有任何防护的状态,任何人都可以对钱包进行操作,包括转账等。

如下为某未使用复杂口令的数字货币钱包,直接使用六位数字当作交易密码,且没有设置尝试次数,可以直接被暴力破解出来,进行交易。

建议在APP开发过程中,对于用户输入的交易密码进行弱口令的检测,同时加上字母或特殊符号来增加复杂程度,保障口令安全。

4.钱包APP伪造漏洞

钱包APP被黑客逆向后加入恶意代码,回传敏感信息如助记词,修改交易收款方地址等,对用户会造成直接钱财损失。所以在使用钱包的时候,一定需要在官方渠道进行下载,同时APP本身如果对软件完整性未做严格的校验,同样可以导致相关事件发生。

在2017年底出现的Janus签名漏洞可以直接应用在此场景下,在修改安卓应用后,利用Janus漏洞对其进行特殊处理,可以绕过安卓系统的签名校验对原应用进行更新操作。安卓系统一直以来都是使用V1签名校验,当系统已经安装了一个应用,当对其更行时,会校验是否是同一个签名,而在签名校验的过程中,系统会默认读取的是一个ZIP文件,并且直接从更新包的尾部进行读取数据,当执行更新文件的时候,是从头部开始读取,如果是Dex就直接执行操作,那么我们就可以获取到最新版本的数字货币钱包安装包做如下修改:

  1. 取出Dex文件,植入恶意代码
  2. 原安装包拼接到修改后的Dex后面
  3. 对拼接后的Dex文件做文件头修复操作

那么当更新的时候,从尾部读取数据,读到的是原APK,可以通过系统对其进行的签名校验,当执行的时候,读取的是我们插入恶意代码后的Dex文件,如果数字货币钱包被修改,植入恶意代码,比如将转账的地址全部替换成攻击者的收款地址,如果用户使用伪造的数字货币钱包进行更新并且进行转账操作,会造成不可估量的损失和后果。

在我们的分析过程中,发现部分数字货币钱包依旧使用V1签名,我们进行模拟攻击,生成加入恶意代码的APP。

虽然谷歌在收到漏洞后就对其做了补丁,但是并非所有手机厂商会及时推送补丁给用户,建议使用V1+V2签名的方式对发布的应用签名,可以抵抗APP伪造漏洞的攻击。

5.    核心功能代码未加固

安卓应用由于其使用Java语言开发,在未使用加固的情况下十分容易被反编译出近似源码的效果。

而其使用的Smali语言也相对容易掌握,所以在不加固的情况下,数字货币钱包十分容易被重打包,重打包的效果如上面提到的伪造漏洞一样,给用户使用上造成直接的损失。同时,关键信息的泄露也会让黑客更加容易分析代码逻辑,将于助记词使用相关的算法进行提取,逆向分析出加解密流程,利用其它漏洞进行盗取助记词等信息。

建议采用加固方案对钱包APP中关键功能代码进行加固处理,防止被黑客进行逆向分析,提高安全性。

6.    钱包敏感信息不正确存储

我们知道,在数字货币世界中,最关键的就是私钥,那么对于用户,数字货币钱包最关键的就是助记词,有了助记词我们可以推导出私钥。所以,如果数字货币钱包对助记词或者私钥进行了不恰当的本地存储,将会是一个非常高危的风险。我们在分析一款钱包的时候,发现钱包APP会自动为当前客户端创建一个钱包,该钱包使用错误的方式保存在了本地,使得在Root设备上攻击者可以对该钱包文件进行解码并获取用户的助记词,钱包私钥等钱包数据,如下图是我们的模拟攻击过程,其中对随机生成的助记词进行了部分打码。

 

我们在逆向后,编写相关代码进行数据解密恢复:

建议在开发过程中,对待本地保存数据一定要做好加密处理,防止数据泄露,直接对用户的钱财造成损失。

7.    网络数据交互被劫持篡改

当用户通过数字货币钱包进行交易,是否使用合适的加密算法对交易数据进行加密是衡量网络连接安全很重要的一个维度,不仅仅需要注意其是否对数据进行加密,还要注意是否将助记词,私钥等数据传输回服务器,当助记词等数据被传输回服务器,相当于除用户之外,还有其他人知道用户自己的助记词,当存储助记词的服务器被黑客入侵,极有可能导致账户被盗。

另外当钱包存在交易功能之后,对于当前货币价格的展示,在网络数据交互过程中可以进行劫持篡改数据,如下图我们修改的BTC,ETH和XRP的实时价格,展示到用户手机上。

 

这样,对用户展示页面也就是黑客希望用户看到的货币价格,间接地诱导用户对该货币进行交易,炒作某一货币的兑换价值,在短时间内的大量买卖,间接控制相关价格了。

在此过程,建议厂商对网络交互数据采用严格校验,如使用https,则对证书信息进行强校验,防止数据在传输过程被篡改。

 

总结

现阶段,市面上有大量良莠不齐的数字货币钱包存在,而不少开发团队在以业务优先的原则下,暂时对自身钱包产品的安全性并未做到足够的防护,一旦出现安全性问题会导致大量用户出现账户货币被盗,而由于数字货币实现的特殊性,被盗资产非常难以追回。

希望钱包厂商可以更加在业务功能上更加注重安全,一方面保护厂商利益不受损失,另一方面也保护用户钱财不受损失,关于此文档中我们针对钱包厂商安全审计的相关技术点,已发布相关数字货币钱包安全白皮书文档供大家参考。

 

团队介绍

360威派克团队(Vulpecker Team)隶属于360信息安全部, 360信息安全部致力于保护内部安全和业务安全,抵御外部恶意网络攻击,并逐步形成了一套自己的安全防御体系,积累了丰富的安全运营和对突发安全事件应急处理经验,建立起了完善的安全应急响应系统,对安全威胁做到早发现,早解决,为安全保驾护航。技术能力处于业内领先水平,培养出了较多明星安全团队及研究员,研究成果多次受国内外厂商官方致谢,如微软、谷歌、苹果等,多次受邀参加国内外安全大会议题演讲。目前主要研究方向有区块链安全、WEB安全、移动安全(Android、iOS)、网络安全、云安全、IOT安全、等多个方向,基本覆盖互联网安全主要领域。

附录:

360数字货币钱包安全白皮书地址:

https://www.anquanke.com/post/id/146233

区块链生态安全解决方案,了解更多请点击——360区块链安全:https://bcsec.360.cn/

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多