黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?
By:Lisa@慢雾 AML 团队
校对:Zero@慢雾 AML 团队
前段时间,我们发布了链上追踪:洗币手法科普之 Peel Chain,今天继续该系列。这次的主题是混币器 Tornado.Cash。
随着黑客盗币事件愈演愈烈,Tornado.Cash 也变得越来越“有名”,大多数黑客在获利后都毫不留情地将“脏币”转向 Tornado.Cash。我们曾对 Tornado.Cash 的匿名性进行过探讨,详见:慢雾 AML:“揭开” Tornado.Cash 的匿名面纱。而今天以一个真实案例来看看这名黑客是怎么通过 Tornado.Cash 洗币的。
基础知识
Tornado.Cash 是一种完全去中心化的非托管协议,通过打破源地址和目标地址之间的链上链接来提高交易隐私。为了保护隐私,Tornado.Cash 使用一个智能合约,接受来自一个地址的 ETH 和其他代币存款,并允许他们提款到不同的地址,即以隐藏发送地址的方式将 ETH 和其他代币发送到任何地址。这些智能合约充当混合所有存入资产的池,当你将资金放入池中(即存款)时,就会生成私人凭据(随机密钥),证明你已执行了存款操作。而后,此私人凭据作为你提款时的私钥,合约将 ETH 或其他代币转移给指定的接收地址,同一用户可以使用不同的提款地址。
案例分析
今天要分析的是一个真实案例,当受害平台找到我们时(具体不便透露),在 Ethereum、BSC、Polygon 三条链上的被盗资金均被黑客转入 Tornado.Cash,所以我们主要分析 Tornado.Cash 的部分。
黑客地址:
(为保护受害平台,文中地址均做了处理)
0x489…1F4(Ethereum/BSC/Polygon)
0x24f…bB1(BSC)
Ethereum 部分
借助慢雾 MistTrack 反洗钱追踪系统,我们先对地址进行一个大概的特征分析。
从部分展示结果来看,可以看到交易行为里黑客使用较多的除了 Bridge 就是混合器 Mixer,这些对我们分析黑客画像十分重要。
接着,我们对 Ethereum 上的资金与行为进行深入分析:据慢雾 MistTrack 反洗钱追踪系统的分析,黑客将 2450 ETH 以5×10 ETH+24×100 ETH 的形式分批转入 Tornado.Cash,将 198 ETH 转入 FixedFloat,这让我们继续追踪 Tornado.Cash 部分留了个心眼。
既然想要尝试追踪黑客从 Tornado.Cash 转出的地址,那我们就得从 Ethereum 上第一笔资金转入 Tornado.Cash 的时间点开始,我们发现第一笔 10 ETH 和第二笔 10 ETH 间的时间跨度较大,所以我们先从跨度小的 100 ETH 开始分析。
定位到 Tornado.Cash:100 ETH 合约相对应的交易,发现从 Tornado.Cash 转出的地址非常多。经过慢雾 MistTrack 的分析,我们筛选出了符合时间线和交易特征的地址。当然,地址依然很多,这需要我们不断去分析。不过很快就出现了第一个让我们饶有怀疑的地址(0x40F…952)。
据慢雾 MistTrack 的分析,地址(0x40F…952)将Tornado.Cash 转给它的 ETH 转到地址(0x8a1…Ca7),接着把 ETH 分为三笔转到了 FixedFloat。
当然,这也可能是巧合,我们需要继续验证。
继续分析,接连发现三个地址均有同样的特征:
A→B→(多笔)FixedFloat
A→(多笔)FixedFloat
在这样的特征佐证下,我们分析出了符合特征的地址,同时刚好是 24 个地址,符合我们的假设。
Polygon 部分
如下图,黑客将获利的 365,247 MATIC 中的部分 MATIC 分 7 次转到 Tornado.Cash。
而剩下的 25,246.722 MATIC 转到了地址(0x75a…5c1),接着追踪这部分资金,我们发现黑客将 25,246.721 MATIC 转到了 FixedFloat,这让我们不禁思考黑客在 Polygon 上是否会以同样的手法来洗币。
我们首先定位到 Tornado:100,000 MATIC 合约与上图最后三笔对应的交易,同时发现从 Tornado.Cash 合约转出的地址并不多,此时我们可以逐个分析。
很快,我们就发现了第一个让我们觉得有问题的地址(0x12e…69e)。我们看到了熟悉的 FixedFloat 地址,不仅FixedFloat 转 MATIC 到地址(0x12e…69e),从地址(0x12e…69e)转出资金的接收地址也都将 MATIC 转给了 FixedFloat。
分析了其他地址后,发现都是一样的洗币手法,这里就不再赘述。从前面的分析看来黑客对 FixedFloat 实在独有偏爱,不过这也成了抓住他的把柄。
BSC 部分
下面我们来分析 BSC 部分。BSC 上黑客地址有两个,我们先来看地址(0x489…1F4):
黑客地址分 17 次转了 1700 ETH 到 Tornado.Cash,时间范围也比较连贯。就在我们以为黑客会故技重施的时候,发现并非如此。同样,经过慢雾 MistTrack 的分析与筛选,我们筛选出了符合时间线和交易特征的地址,再进行逐个突破。
分析过程中,地址(0x152…fB2)引起了我们的注意。如图,据慢雾 MistTrack 显示,该地址将 Tornado.Cash 转给它的 ETH 转出给了 SimpleSwap。
继续分析后发现,换汤不换药,虽然黑客换了平台,手法特征却还是类似:
A→SimpleSwap
A→B→SimpleSwap
另一个黑客地址(0x24f…bB1)是以 10 BNB 为单位转到了 Tornado.Cash。
而在这个地址的洗币手法中,黑客选择了另一个平台,不过手法依然类似。这里就不再一一分析。
总结
本文主要由一个真实案例开启,分析并得出在不同的链上黑客是如何试图使用 Tornado.Cash 来清洗盗取的资金,本次洗币手法具有极相似性,主要特征为从 Tornado.Cash 提币后或直接或经过一层中间地址转移到常用的混币平台(FixedFloat/SimpleSwap/Sideshift.ai)。当然,这只是通过 Tornado.Cash 洗币的其中一种方法,更多手法仍等着我们发现。
而想要更有效率更准确地分析出结果,必然得借助工具。凭借超 2 亿个钱包地址标签,慢雾MistTrack 反洗钱追踪系统能够识别全球主流交易平台的各类钱包地址,如用户充值地址、温钱包地址、热钱包地址、冷钱包地址等。通过 MistTrack 反洗钱追踪系统可对任意钱包地址进行特征分析和行为画像,在反洗钱分析评估工作中起到至关重要的作用,为加密货币交易平台、用户个人等分析地址行为并追踪溯源提供了强有力的技术支撑。