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

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/af32b86eddf48727b7c7d95efb435f5d.png#pic_center) ## 简介 近期丢币盗币事件频发,各种盗币手法层出不穷,无所不用其极,不得不说这些攻击者手段高明,零时科技安全团队收到大量客户的求助,称其钱包资产被盗,这无疑给币圈的朋友敲响了警钟。 为了大家能清晰了解最近盗币事件,并且加强防范,本篇总结了近期零时科技安全团队收到协助的盗币事件类型,大致可分为如下四类: ”伪装客服骗取私钥“ ”扫描二维码盗币事件“ ”获取空投盗币事件“ ”交易所客服诈骗盗币事件“ 这里简单介绍一下以上四类盗币流程: **伪装客服骗取私钥** 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端进行实现,最终得到的盗币二维码如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/a95a6db522d85a38ebb29d1a78476747.png#pic_center) **第二步:攻击者制作后台提款功能** 该步为攻击者诱导用户授权资金后的转账操作,此步骤中,攻击者需要调用USDT合约API及transferfrom()接口。 后端提币需要实现的功能如下: *// 调用TRON链上USDT合约,并调用合约的transferFrom方法,给攻击者地址转账大于0,并且小于9000000000枚USDT. USDTToken.transferFrom(TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL, TKjxdVUpyqwmqMGUh9kyRg196f1zesb3m9, 0<value<9000000000)* **第三步:攻击者给受害者用户发送盗币二维码,并诱导用户给该二维码转账** 该步为攻击者成功最重要的一步,如果受害者扫描了盗币二维码并将进行了转账,则表示转账成功;反之受害者未扫描二维码或者转账,则攻击失败。 所以这里攻击者可能会采用多种方式诱导受害者进行扫码转账,常见的诱导方式如下: - 攻击者在交易所进行交易时,将盗币二维码发送给用户,防范不高的用户就会进行转账; - 恶意空投,伪造成可以获取空投的二维码,诱导用户进行转账; - 熟人作案,直接将二维码发送给好友,在毫无防备的情况基本都会转账; **第四步:受害者用户扫描二维码进行转账** 该步为受害者用户进行的操作,在攻击者诱导用户同意扫码二维码转账后,会收到如下二维码: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/3949dd82bd2e9ab4806278492c8f04b4.png#pic_center) 用户使用TokenPocket钱包进行扫码,会得到如下页面: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/c7dd32aa2fe885595cb86b06873de69d.png#pic_center) 这里用户的初衷是给二维码进行转账,但这里的需要注意的细节是,当用户输入转账数目进行发送时,这里执行的操作其实并不是转账transfer,而是授权approve,如下页面: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/5f01a28d03149ff6e9222bec3e757f26.png#pic_center) 我们可以在页面端更清楚看到此步执行的交易详情,如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/2ac057093ce6a38f1d909166d0e06caf.png#pic_center) 这里可清楚看到,扫码点击发送交易后,这里请求方法为approve,授权的地址为TMmunHQsjSdUKZT1suksWBM7n6jVWkUGwL,授权的金额为9000000000,确定该笔交易后,攻击者地址就可转走用户钱包中9000000000额度的USDT,当然前提是用户钱包有这么多资金,只有用户钱包有不超过9000000000枚USDT,均可以转出。链上的这笔授权交易可查询到: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/2718c1ddbb832df22dac3e9d4adbe531.png#pic_center) **第五步:攻击者通过后台提取受害者用户资金** 该步为攻击者的最后一步,也就是将用户授予的USDT取出,如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/307f12253e541424af5bb2c38afbdfc3.png#pic_center) 用户扫码进行转账后(实际是授权),攻击者后台会显示用户目前钱包授权的USDT数目,这里可以看到用户钱包USDT余额为1枚,此时攻击者进行归集,也就是调用transferFrom将资金转入自己的钱包,如下图,进行3U和1U的两笔测试,最终归集回来会被平台扣掉10%手续费: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/00f4f2fbff29469d9e2bfe73f7a3f5e8.png#pic_center) **至此**,攻击完成,攻击者盗走受害者钱包中的其余USDT。这里只是对一个用户进行测试,攻击者实际诈骗金额远远比这个多。整个盗币事件能成功的原因只是因为二维码中的approve授权,而用户如果转账时细心查看交易详情,可能会及时发现此笔交易的猫腻,从而保护自己的资金安全。 通过调查,我们了解到,目前这种扫描二维码进行盗币的方法已经被规模化,不仅支持TRON链还支持ETH链,形成一个小型产业链: 1. 技术专门负责开发程序并搭建自动化平台,此平台可自动生成钓鱼二维码,生成代理账户,管理员自动归集受害者钱包资产; 2. 代理专门负责推广平台生成的钓鱼二维码,然后让更多人来扫描授权,成功后可获得分红; 3. 管理员坐收渔利,将成功授权的钱包资产转走,并分红给代理(上面说的平台扣掉10%手续费就是给代理分红了); 4. 管理员将盗走的资产转移到其他交易平台进行资产兑换洗白。 ## 代码分析 这里我们从代码层面分析一下原理,其实很简单: 首先用户收到一个转账二维码,扫描之后回到这个页面: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/82c302608b8b7ae80106dfd154fbe1e1.png#pic_center) 在这个页面中,输入转账金额,当点击这个发生按钮时,会触发一个js操作,如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/1c7cc287425280220858e08fc43e3da7.png#pic_center) 这个js中就明显发现,这里不是transfer而是一个approve操作。 当授权成功后,这个平台后台可自动进行归集,也就是转账受害者钱包中的钱,通过transferfrom方法。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/d775cf4d981325bb9b7e59151f13582d.png#pic_center) 所以,整个过程,全自动化完成。 上面所有的过程都是针对USDT的盗币过程分析,其实攻击者可以针对任何合约Token进行攻击,只需要修改合约Token的地址以及abi即可。 为了广大币圈用户能切实保护好资金的资产,对于以上盗币事件,零时科技安全团队给出以下建议: ## 安全建议 - 不给不信任的二维码扫描转账; - 给他人转账时需注意转账操作是否为预期操作; - 不要给未经审计的项目轻易授权钱包; - 陌生电话要警惕,在不确定身份的前提下及时挂断; - 不要将私钥导入未知的第三方网站; - 领取空投需确认项目真实性。

简介

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

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

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

伪装客服骗取私钥

  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即可。

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

安全建议

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

区块链技术网。

  • 发表于 2021-07-22 16:13
  • 阅读 ( 1459 )
  • 学分 ( 13 )
  • 分类:资讯

评论