首页
论坛
专栏
课程

[原创]

2019-7-16 15:11 5152

[原创]

2019-7-16 15:11
5152

随着区块链市场商业模式的不断丰富,安全问题也不断暴露,其中钱包安全事件屡曝不止。

4月13日,Electrum钱包遭受黑客攻击,黑客利用其钱包漏洞,窃取用户密钥,导致资金被盗。

5月7日,黑客利用币安热钱包安全漏洞,访问大量用户应用程序接口密钥(API keys)、双因素身份验证码(2FA码)、以及其他信息,从中盗取7000枚比特币。

而近日又有一起钱包被盗事件发生。据相关媒体报道,有网友爆料My Dash Wallet钱包存在安全漏洞、导致用户钱包内资金被盗取。

针对一事,成都链安技术团队做出详细分析:

其主要原因在于在线钱包https://mydashwallet.org 用户在创建HD钱包和解锁HD钱包时,网页插件会将用户的keystore加密数据以及解密密码以post的方式发送到 https://api.dashcoinanalytics.com/stats.php 中。


具体分析步骤如下:


在https://mydashwallet.org/ 上创建HDWallet以后,网页会直接向https://api.dashcoinanalytics.com/stats.php 以POST的方式传送数据,如图所示:


Form Data:为Base64编码后的数据。具体如下:

a2c:

eyJwayI6ImNlMWRmMjNhMGVmMTY5MmYwZTU0NmI1ZTMyOTY5M2RmMTI2ZWM3NjVkOWJkM2E1ZTI0Mzg0YzBlNWUzZWY1ZmYiLCJhYiI6IlhtVjJOS3Z1SnAzbkRQTVAxVjVWb1ZxWXhoTlRLUE1UaG58MHwiLCJrcyI6IlUyRnNkR1ZrWDE4cm55Vko3MzBpaEJRckNYWFBKWWdmdHN2TmFXUmhHMkNhWE5ZZDlYNXR1TmNvVGZyZ0hsVHJzRjNWSTIrR2hSYkRkNVlydFF6dVAxR3RjUlhuaDRWRXVkdFZ3Si9LbUdKbG4wQllBMElKNmtOUlIwMnd0MHNicmZ4QlFyclBRWmIvK1VMK2lEWERlVktCRXBWbGt4elRFUzdGcVJYMFhNMD0iLCJrc3AiOiJCZW9zaW44NzYifQ==

解码后数据为:

{"pk":"ce1df23a0ef1692f0e546b5e329693df126ec765d9bd3a5e24384c0e5e3ef5ff","ab":"XmV2NKvuJp3nDPMP1V5VoVqYxhNTKPMThn|0|","ks":"U2FsdGVkX18rnyVJ730ihBQrCXXPJYgftsvNaWRhG2CaXNYd9X5tuNcoTfrgHlTrsF3VI2+GhRbDd5YrtQzuP1GtcRXnh4VEudtVwJ/KmGJln0BYA0IJ6kNRR02wt0sbrfxBQrrPQZb/+UL+iDXDeVKBEpVlkxzTES7FqRX0XM0=","ksp":"Beosin876"}

本地下载MyDashWallet.HDSeed后,打开文件获取数据如下:


U2FsdGVkX18rnyVJ730ihBQrCXXPJYgftsvNaWRhG2CaXNYd9X5tuNcoTfrgHlTrsF3VI2+GhRbDd5YrtQzuP1GtcRXnh4VEudtVwJ/KmGJln0BYA0IJ6kNRR02wt0sbrfxBQrrPQZb/+UL+iDXDeVKBEpVlkxzTES7FqRX0XM0=

MyDashWallet.HDSeed中的加密的数据与上传的a2c数据中“ks”数据相同。


Seed文件存储在本地,如下所示,可通过js脚本直接获取到seed的值。


在解锁钱包时,网页会会直接以POST的方式传送a2c数据,数据跟上面创建钱包是传输的数据一样。


攻击手法:


通过查看网页源码,generateKeystoreFile()函数内容如下:


其中生成enryptedData时,需要传入key和钱包的密码,用于加密生成HDSeed文件。


解锁钱包的unlockKeystore()函数内容如下:


两个函数都调用了CryptoJS.AES.decrypt()函数。

当输入解锁钱包密码后,网页向https://api.dashcoinanalytics.com/stats.php 传输数据,Initiator是CryptoJSlibByteArray.js:753,其内容如下:


通过查看网页源码发现网页中加载了引用自greasyfork.org的CryptoJSlibByteArray.js文件。


直接在浏览器中打开CryptoJSlibByteArray.js文件,开头内容如下:


此文件中插入大量的空白,真实发送数据的代码从728行开始。内容如下:


通过设定循环执行函数,通过localStrage获取到相关的HDSeed内容和解锁密码。


在钱包实例化以后,直接在浏览器console中输入dashWallet可得以下内容:


从上面的分析来看,攻击者通过某种方式在在线钱包中插入恶意插件,用户使用在线钱包时,加载了恶意插件,恶意插件设置循环执行函数获取到seed的值和解锁的密码。从而获取到钱包的控制权。


存在的危害:


在线钱包,顾名思义,它是在联网状态下进行交易的钱包,一般又称“热钱包”。其种类多样,有电脑客户端钱包、手机APP钱包、网页钱包等。热钱包对于交易频繁的用户来说是非常便捷的,但由于其联网使用的模式,也增加了受到黑客攻击,被盗取密钥的风险。而一旦被黑客掌握密钥,就相当于获得了资产的直接掌控权。


此次事件中,用户正是使用在线钱包后,被攻击者通过某种攻击方式将恶意插件插入钱包中,从而获得钱包用户的密钥,直接利用密钥盗取用户资产的。


对用户的建议:


建议最近使用过此在线钱包的用户,通过其他方式生成新的钱包,并将财产转移至新钱包。同时,对于会经常使用到在线钱包的用户,我们建议在使用时,在不同平台设置不同的密码,并且开启二次认证。


另,建议资产占有量较大的个人投资者最好将冷钱包与热钱包配合使用,根据具体使用需求分配使用冷热钱包,做到冷热分开,以便隔离风险。



[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (0)
游客
登录 | 注册 方可回帖
返回