4

黑客大揭秘!扫码转账即可控制你的数字钱包

 2 years ago
source link: https://learnblockchain.cn/article/2765
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
黑客大揭秘!扫码转账即可控制你的数字钱包 | 登链社区 | 深入浅出区块链技术

黑客大揭秘!扫码转账即可控制你的数字钱包

近期丢币盗币事件频发,各种盗币手法层出不穷,无所不用其极,不得不说这些攻击者手段高明,零时科技安全团队收到大量客户的求助,称其钱包资产被盗,这无疑给币圈的朋友敲响了警钟。

在这里插入图片描述

近期丢币盗币事件频发,各种盗币手法层出不穷,无所不用其极,不得不说这些攻击者手段高明,零时科技安全团队收到大量客户的求助,称其钱包资产被盗,这无疑给币圈的朋友敲响了警钟。

为了大家能清晰了解最近盗币事件,并且加强防范,本篇总结了近期零时科技安全团队收到协助的盗币事件类型,大致可分为如下四类:

”伪装客服骗取私钥“
”扫描二维码盗币事件“
”获取空投盗币事件“
”交易所客服诈骗盗币事件“
这里简单介绍一下以上四类盗币流程:

伪装客服骗取私钥

  1. 攻击者伪装为客户潜伏在社群中
  2. 当有用户出现转账或者提取收益求助时,攻击者及时联系用户协助其处理
  3. 通过耐心的解答,发送伪装成去中心化网桥的工单系统,让用户输入助记词解决其交易异常
  4. 攻击者拿到私钥后盗取资产,拉黑用户

二维码盗币事件

  1. 攻击者将预先准备好的恶意二维码发送给用户;
  2. 攻击者诱导用户使用钱包扫描二维码进行转账;
  3. 用户输入指定金额后确认转账交易(实际运行的是用户approve授权给攻击者USDT的过程);
  4. 随后用户钱包大量USDT丢失(攻击者调用TransferFrom转走用户USDT)。

获取空投盗币事件

  1. 攻击者伪造成交易平台或者DeFi项目;
  2. 攻击者通过媒体社群发起可明显薅羊毛的空投活动;
  3. 攻击者诱导用户使用钱包扫描二维码领取空投;
  4. 用户扫码后点击领取空投(其实也是用户approve授权给攻击者USDT的过程);
  5. 随后受害者账户大量USDT被转走(攻击者调用TransferFrom转走用户USDT)

交易所客服诈骗盗币事件

  1. 攻击者伪造成币安,火币等交易所客服;
  2. 攻击者告知用户账户异常并触发了风控,使用资金需要解除异常状态;
  3. 攻击者客服诱导用户将资金转至安全账户(其实是黑客账户),并对受害者账户进行升级;
  4. 用户将资金转移至安全账户后,攻击者随即将用户拉黑。

以上盗币事件中,二维码盗币是目前发生频率较高,客户反馈最多的盗币事件类型,所以本篇将对扫码盗币事件进行详细分析及复现,让读者更清晰了解攻击者盗币过程,防止资金被盗。

扫描盗币过程分析

二维码盗币事件复盘我们从攻击者角度出发,完整复盘二维码盗币过程。

测试使用的攻击地址为:
TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL
测试使用的攻击者归集资产地址为:
TKjxdVUpyqwmqMGUh9kyRg196f1zesb3m9
测试使用的合约为TRON链上USDT合约:
TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

测试使用的受害者地址为:
THcDZSMmGdecaB2uAygPvHM7uzdE2Z4U9p

第一步:攻击者制作扫码盗币二维码

该步主要为攻击者将代币授权写入二维码,也是攻击成功最重要的基础功能,此步骤中,攻击者需要创建自己的钱包地址,调用USDT合约API及approve()接口。

二维码需要实现的功能:

// 调用TRON链上USDT合约,并调用合约的approve方法,给攻击者地址授权9000000000枚USDT.
USDTToken.approve(TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL, 9000000000)

之后将该功能在Web端进行实现,最终得到的盗币二维码如下:
在这里插入图片描述

第二步:攻击者制作后台提款功能

该步为攻击者诱导用户授权资金后的转账操作,此步骤中,攻击者需要调用USDT合约API及transferfrom()接口。

后端提币需要实现的功能如下:

// 调用TRON链上USDT合约,并调用合约的transferFrom方法,给攻击者地址转账大于0,并且小于9000000000枚USDT.
USDTToken.transferFrom(TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL, TKjxdVUpyqwmqMGUh9kyRg196f1zesb3m9, 0<value<9000000000)

第三步:攻击者给受害者用户发送盗币二维码,并诱导用户给该二维码转账

该步为攻击者成功最重要的一步,如果受害者扫描了盗币二维码并将进行了转账,则表示转账成功;反之受害者未扫描二维码或者转账,则攻击失败。

所以这里攻击者可能会采用多种方式诱导受害者进行扫码转账,常见的诱导方式如下:

  • 攻击者在交易所进行交易时,将盗币二维码发送给用户,防范不高的用户就会进行转账;
  • 恶意空投,伪造成可以获取空投的二维码,诱导用户进行转账;
  • 熟人作案,直接将二维码发送给好友,在毫无防备的情况基本都会转账;

第四步:受害者用户扫描二维码进行转账

该步为受害者用户进行的操作,在攻击者诱导用户同意扫码二维码转账后,会收到如下二维码:
在这里插入图片描述

用户使用TokenPocket钱包进行扫码,会得到如下页面:
在这里插入图片描述

这里用户的初衷是给二维码进行转账,但这里的需要注意的细节是,当用户输入转账数目进行发送时,这里执行的操作其实并不是转账transfer,而是授权approve,如下页面:
在这里插入图片描述

我们可以在页面端更清楚看到此步执行的交易详情,如下图:

在这里插入图片描述

这里可清楚看到,扫码点击发送交易后,这里请求方法为approve,授权的地址为TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL,授权的金额为9000000000,确定该笔交易后,攻击者地址就可转走用户钱包中9000000000额度的USDT,当然前提是用户钱包有这么多资金,只有用户钱包有不超过9000000000枚USDT,均可以转出。链上的这笔授权交易可查询到:
在这里插入图片描述

第五步:攻击者通过后台提取受害者用户资金

该步为攻击者的最后一步,也就是将用户授予的USDT取出,如下图:
在这里插入图片描述

用户扫码进行转账后(实际是授权),攻击者后台会显示用户目前钱包授权的USDT数目,这里可以看到用户钱包USDT余额为1枚,此时攻击者进行归集,也就是调用transferFrom将资金转入自己的钱包,如下图,进行3U和1U的两笔测试,最终归集回来会被平台扣掉10%手续费:
在这里插入图片描述

至此,攻击完成,攻击者盗走受害者钱包中的其余USDT。这里只是对一个用户进行测试,攻击者实际诈骗金额远远比这个多。整个盗币事件能成功的原因只是因为二维码中的approve授权,而用户如果转账时细心查看交易详情,可能会及时发现此笔交易的猫腻,从而保护自己的资金安全。

通过调查,我们了解到,目前这种扫描二维码进行盗币的方法已经被规模化,不仅支持TRON链还支持ETH链,形成一个小型产业链:

  1. 技术专门负责开发程序并搭建自动化平台,此平台可自动生成钓鱼二维码,生成代理账户,管理员自动归集受害者钱包资产;
  2. 代理专门负责推广平台生成的钓鱼二维码,然后让更多人来扫描授权,成功后可获得分红;
  3. 管理员坐收渔利,将成功授权的钱包资产转走,并分红给代理(上面说的平台扣掉10%手续费就是给代理分红了);
  4. 管理员将盗走的资产转移到其他交易平台进行资产兑换洗白。

这里我们从代码层面分析一下原理,其实很简单:

首先用户收到一个转账二维码,扫描之后回到这个页面:

在这里插入图片描述

在这个页面中,输入转账金额,当点击这个发生按钮时,会触发一个js操作,如下:

在这里插入图片描述

这个js中就明显发现,这里不是transfer而是一个approve操作。

当授权成功后,这个平台后台可自动进行归集,也就是转账受害者钱包中的钱,通过transferfrom方法。
在这里插入图片描述

所以,整个过程,全自动化完成。

上面所有的过程都是针对USDT的盗币过程分析,其实攻击者可以针对任何合约Token进行攻击,只需要修改合约Token的地址以及abi即可。

为了广大币圈用户能切实保护好资金的资产,对于以上盗币事件,零时科技安全团队给出以下建议:

  • 不给不信任的二维码扫描转账;
  • 给他人转账时需注意转账操作是否为预期操作;
  • 不要给未经审计的项目轻易授权钱包;
  • 陌生电话要警惕,在不确定身份的前提下及时挂断;
  • 不要将私钥导入未知的第三方网站;
  • 领取空投需确认项目真实性。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK