智能合约内部转账与一起洗钱案例分析

admin 2022年7月12日08:36:41评论75 views字数 2663阅读8分52秒阅读模式

一、简介

说到ETH的转账方式,人们最常用的的就是sendTransaction,但是有一种转账方式经常被人们忽视,这种转账方式不仅在大量转账的时候手续费更低,而且隐蔽性相对sendTransaction来说更高,这种转账方式常常用于脚本批量转账当中,这种转账方法就是以太坊合约内部转账。

二、特点

合约内部转账有以下几种优点

  1. 手续费低

    相对于普通的sendTransaction要求的手续费最少也要21000 GAS,通过合约进行转账仅需2300 GAS。

  2. 隐蔽性强

    普通的sendTransaction的转账数量与目标地址可通过web3中的getTransaction直接查询,但是合约中的内部转账要通过对转账进行debug_traceTransaction才可以进行分析,相对于getTransaction直接获得结果来说,对自动化分析更加困难。

三、分析

伏宸区块链威胁情报平台通过全网交易自动化分析后发现当前以太坊上有6%的ETH转账都是通过智能合约进行的,虽然占比较小,但是其大多数都是用于大量的ETH转账,其对于分析黑色资产的流向来说重要性不言而喻。

近日,伏宸区块链威胁情报平台发现了以下地址有涉嫌黑色资产转移的嫌疑。

0x02CACEb4BFc2669156B2eb3b4d590E7aC10A4E73  

该合约在ETHScan上开源了其合约代码,代码如下:

/**  * @title Ownable  * @dev The Ownable contract has an owner address, and provides basic authorization control  * functions, this simplifies the implementation of "user permissions".  */ contract Ownable {   address public owner;     event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);     /**    * @dev The Ownable constructor sets the original `owner` of the contract to the sender    * account.    */   function Ownable() {     owner = msg.sender;   }     /**    * @dev Throws if called by any account other than the owner.    */   modifier onlyOwner() {     require(msg.sender == owner);     _;   }     /**    * @dev Allows the current owner to transfer control of the contract to a newOwner.    * @param newOwner The address to transfer ownership to.    */   function transferOwnership(address newOwner) onlyOwner public {     require(newOwner != address(0));     OwnershipTransferred(owner, newOwner);     owner = newOwner;   } }   contract DistributeETH is Ownable {     function distribute(address[] _addrs, uint[] _bals) onlyOwner{     for(uint i = 0; i < _addrs.length; ++i){       if(!_addrs[i].send(_bals[i])) throw;     }   }    function () payable {} }

可以看的出,其合约代码其实很简单,就只有一个主要功能就是合约管理员通过数组来分发合约内的ETH。

在分析时,该合约已经向1800个地址发送了总共204,979.07个ETH

以下是其中一个交易


智能合约内部转账与一起洗钱案例分析


可以看的出其只支付了0.004251912个ETH就可以向25个地址发送了730.33678个ETH,可见这种转账方式如果用于黑色资金的混淆,将大大增加追踪的难度。

经过进一步分析,发现该地址最大的ETH来源就是

0x6705120db9fb682dec120cdecc8220385d25fc50

该地址向 0x02CACEb4BFc2669156B2eb3b4d590E7aC10A4E73转入了879笔总计181145.6个ETH。

而资金最大来源0x6705120db9fb682dec120cdecc8220385d25fc50的ETH来源于数千个钱包地址不断的转移,而这些钱包地址都是属于通过脚本创建的以试图掩盖其资金的来源,但是经过我们的跟踪,追踪发现资金其实来源于以下几个钱包地址。

地址 流出ETH总量 ETH来源 备注
0xb18cb7cda7779139b4c660275afa309a600b71bf 31,813.98 ETH Kraken交易所
0xEcB979D7294c82d8B07a279f942AAe0ec458b0EF 1,729.65 ETH 币安交易所
0x9ae63ee2e8ed29f4a4edb982f918a33c2caf3f98 11,370,000 ETH Poloniex交易所
Bitfinex交易所
Kraken交易所
Bittrex交易所

0xe4abc54f5a6288b60c18b361442a151fc4911da6 30,297.50 ETH Poloniex交易所
Bittrex交易所
总共流出 26,150,000 GNT币
总共流出 25,055 REP币
总共流出48,730,000 ZRX币
总共流出 21,793.17 MKR币
总共流出107,140.00 NMR币
0xd9acba6f45c7bed110cf7e86406ba2d295e9cc3a 774.42 ETH XRPC 和 ARB ICO XRPC 和 ARB 的发行者

四、结论

可以看得出这个合约背后的主人通过做庄小币种和发行数字货币,并通过ICO和操盘获得大量的ETH后通过脚本或智能合约对ETH进行打散以试图掩盖其操盘的痕迹。

所以安全人员想追踪或分析以太坊上的黑色资金转移,则不应该仅仅关注普通的转账过程,更应注意的重点应该是合约内部转账,因为其天然的手续费低,隐蔽性强成为了滋养黑色资金转移的温床。


原文始发于微信公众号(伏宸区块链安全实验室):智能合约内部转账与一起洗钱案例分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日08:36:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   智能合约内部转账与一起洗钱案例分析https://cn-sec.com/archives/1057167.html

发表评论

匿名网友 填写信息