“揭开” Tornado.Cash 的匿名面纱
随着 DeFi、NFT、跨链桥等项目的火热发展,黑客攻击事件也层出不穷。有趣的是,据慢雾统计,80% 的黑客在洗币过程中都使用了混币平台 Tornado.Cash,本文以 KuCoin 被盗事件为例,试图从追踪分析过程中找到一丝揭开 Tornado.Cash 匿名性的可能。
事件概述
据 KuCoin 官网公告,北京时间 2020 年 9 月 26 日凌晨,KuCoin 交易所的热钱包地址出现大量异常的代币提现,涉及 BTC、ETH 等主流币以及 LINK、OCEN 等多种代币,牵动了无数用户的心。

图 1
据慢雾 AML 团队统计,本次事件被盗资金超 2.7 亿美元,具体如下图:

图 2
值得注意的是,我们全面追踪后发现黑客在这次攻击事件中大量使用了 Tornado.Cash 来清洗 ETH。在这篇文章中,我们将着重说明黑客如何将大量 ETH 转入到 Tornado.Cash,并对 Tornado.Cash 的转出进行分析,以分解出被盗资金可能流向的地址。
Tornado.Cash 是什么?
Tornado.Cash 是一种完全去中心化的非托管协议,通过打破源地址和目标地址之间的链上链接来提高交易隐私。为了保护隐私,Tornado.Cash 使用一个智能合约,接受来自一个地址的 ETH 和其他代币存款,并允许他们提款到不同的地址,即以隐藏发送地址的方式将 ETH 和其他代币发送到任何地址。这些智能合约充当混合所有存入资产的池,当你将资金放入池中(即存款)时,就会生成私人凭据(随机密钥),证明你已执行了存款操作。而后,此私人凭据作为你提款时的私钥,合约将 ETH 或其他代币转移给指定的接收地址,同一用户可以使用不同的提款地址。
如何转入?
攻击得手后,黑客开始大范围地将资金分批转移到各大交易所,但还没来得及变现就被多家交易所冻结了。在经历了白忙一场的洗钱后,黑客将目光转向了 DeFi。
据慢雾 AML 旗下 MistTrack 反洗钱追踪系统显示,黑客 (0xeb31...c23) 先将 ERC20 代币分散到不同的地址,接着使用 Uniswap、1inch 和 Kyber 将多数 ERC20 代币换成了 ETH。

图 3
大部分 ERC20 代币兑换成 ETH 后,被整合到了以下主要地址:

表 1
在对 ETH 和 ERC20 代币进行完整追踪后,我们梳理出了资金是如何在黑客地址间移动,并分解出了资金是以怎样的方式进入 Tornado.Cash。

图 4
黑客将资金按时间先后顺序转入 Tornado.Cash 的详情如下:

表 2
转到了哪?
猜想
1. 巨额的 ETH 进入 Tornado.Cash,会集中表现出一些可追踪的特征。
2. 以黑客急于变现的行为分析,猜想黑客将资金存入 Tornado.Cash 后会随即提款,或下次存入时提款。
3. 分析攻击者使用洗币平台的方式和行为,可以获得资金的转移地址。
可能的链上行为
1. 资金从 Tornado.Cash 转出的时间范围与黑客将资金转入 Tornado.Cash 的时间范围近似(转出会延后于转入)。
2. 一定时间段内,从 Tornado.Cash 转出的资金会持续转出到相同地址。
验证
以黑客地址 (0x34a...c6b) 为例:
如表 2 结果所述,黑客在 2020-10-23 16:06:28 ~ 2020-10-26 10:32:24 (UTC) 间,以每次 100 ETH,存 115 次的方式将 11,500 ETH 存入 Tornado.Cash。为了方便说明,我们只截取了该地址在 2020-10-24 3:00:07~6:28:33 (UTC) 间的存款记录,如下图:

图 5