快捷搜索:  汽车  科技

智能合约案例介绍:智能合约中最精准的广告推送案例分析

智能合约案例介绍:智能合约中最精准的广告推送案例分析整笔交易花费了244w的gas,价值2.28美元,有针对的从500个用户转账给了500个用户。然后具体的交易地址为首先从blockwell.ai KYC Casper Token看交易页面,看到的交易记录都是转出100代币的记录,没有任何转入记录。再看看实际转账到账户的交易信息可以看到通过调用这个合约,发起了一笔代币转账,在event logs里可以看到实际的交易

事由

就在前几天,许多以太坊钱包账户都收到了一种名为blockwell.ai KYC Casper Token代币转进/出账消息:

智能合约案例介绍:智能合约中最精准的广告推送案例分析(1)

智能合约案例介绍:智能合约中最精准的广告推送案例分析(2)

令人奇怪的是这些账号均表示之前对这个Token的“一无所知”,当这些收到消息用户并没有真正收到提示的那100个代币,而那些提示有100代币转出的用户在之前也并没有拥有过这种代币,这一切都显得“莫名其妙”!更加让一部分人奇怪和担心的是,这些“转进/出账”的操作,都不需要钱包拥有者的的任何密码私钥输入,于是很多不明真相的用户担心自己的钱包是不是被人恶意攻击 ...

事件跟踪

首先从blockwell.ai KYC Casper Token看

交易页面,看到的交易记录都是转出100代币的记录,没有任何转入记录。再看看实际转账到账户的交易信息

可以看到通过调用这个合约,发起了一笔代币转账,在event logs里可以看到实际的交易

然后具体的交易地址为

整笔交易花费了244w的gas,价值2.28美元,有针对的从500个用户转账给了500个用户。

智能合约案例介绍:智能合约中最精准的广告推送案例分析(3)

继续跟踪到转账的from地址:

智能合约案例介绍:智能合约中最精准的广告推送案例分析(4)

正如文章开头提到的那样:所有的来源账户本身都是不持有这种代币的,跟踪一下也可以发现,无论是发起交易者还是接受交易者,都没有发生实际代币的变化。

但是这些交易记录确实被保存在链上,那么这个事件的核心问题就在于:“这些记录是怎么被产生并记录的?”

事件原理

我们从合约分析入手

不出所料,这种事件型的合约代码并不会直接给你开放源代码,通过利用智能合约的逆向工具,反编译后得到如下部分代码:部分源码如下:

智能合约案例介绍:智能合约中最精准的广告推送案例分析(5)

从代码中可以很明显的看到一个特殊的函数x_975ef7df,这是唯一一个涉及到数组操作,且会触发Tranfser事件的函数。

智能合约案例介绍:智能合约中最精准的广告推送案例分析(6)

从代码中可以很清晰的看到, 在对地址列表的循环中,只触发了Transfer事件,没有任何其余的操作。

都知道遵守以太坊ERC20标准的合约代币才会被承认为ERC20代币,ERC20代币会直接被交易所承认。而在ERC20标准中规定,transfer函数必须触发Transfer事件,事件会被记录在event log中,是不是说明平台和交易所在获取ERC20代币交易信息,是通过event log事件获取的呢?我们来测试一下。

事件复现

测试合约地址

这里需要强调的是:转出/入账的地址都是可以自定义的,这也就是为什么所有的来源账户本身都是不持有这种代币的原因。然后直接发起交易

智能合约案例介绍:智能合约中最精准的广告推送案例分析(7)

然后就会提示了消息,注意收到的消息了包含在代码里symbol=“RMB”的值

智能合约案例介绍:智能合约中最精准的广告推送案例分析(8)

回看余额可以发现没有实际转账诞生。

事件目的

通过上面分析,可以发现整个事件最后只说了一件事情就是伪照了大量的虚假交易记录,并没有其他“实质”性的恶意操作,那么这个事件的目的是什么呢?

就来回顾一下整个事件的流程:

创建一个token ---> 伪造交易记录 ---> 钱包或交易平台获取交易记录 ---> 推送给用户

如果能找到自定义的消息,那么这是一条完美的消息推广链!!这个事件的始作俑者非常聪明的利用了token名这个自定义输入点:blockwell.ai KYC Casper Token,blockwell.ai这个就是本次事件的主要目的,牛皮癣小广告推广这个网站。

看你有的人会说如果只是用来做广告推广的话,完全可以使用代币的真实转账记录来推广,而不是利用伪造交易记录。这里需要提醒大家的是“广告费”的问题,这个“广告费”也就是合约操作里的gas消耗,伪造交易记录只需要Transfer操作的gas可以大大节省这个“广告费”,本次事件整个过程的话费的“广告费”约2.28美元的gas,就实现了对1000个用户有针对的推送了精准广告。

做个小解释:Gas 是什么?

Gas翻译成中文就是“燃气”,是以太坊世界的燃料,它决定了以太坊网络生态系统的正常运行。

Gas用来衡量执行某些动作需要多少“工作量”,这些“工作量”就是为了执行该动作支付给网络的费用额。通俗理解,Gas 是给矿工的佣金,并以 ETH 支付,无论是交易、执行智能合约并启动 DApps,还是支付数据存储费用,都需要用到 Gas。

总结

结合以往的各种事件,相比于区块链的各种应用场景里,在“恶意”攻击或者利用的层面,攻击者们都表现出了惊人的“小点子”,本次事件利用了“交易所平台却盲目信任符合ERC20标准的合约”的特点,使用了以太坊平台本身实现的“bug”,达到了最少的“广告费”实现了精准的用户广告的推送。

还有另外一个值得大家关注的点就是被用来做消息推送的点是可以自定义的,那么是非常值得思考一下可能导致的风险:比如推送钓鱼网站信息,推送其他非法类型的小广告及言论,都是会导致钱包等平台应用方的用户有着不可以预期的风险!在这里也提醒各大钱包、交易所等平台警惕此类风险,必要时针对这些可自定义点进行相关识别及过滤。

(作者:曲速未来安全区,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

猜您喜欢: