黑客是如何使用 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 反洗钱追踪系统,我们先对地址进行一个大概的特征分析。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

从部分展示结果来看,可以看到交易行为里黑客使用较多的除了 Bridge 就是混合器 Mixer,这些对我们分析黑客画像十分重要。

接着,我们对 Ethereum 上的资金与行为进行深入分析:据慢雾 MistTrack 反洗钱追踪系统的分析,黑客将 2450 ETH 以5×10 ETH+24×100 ETH 的形式分批转入 Tornado.Cash,将 198 ETH 转入 FixedFloat,这让我们继续追踪 Tornado.Cash 部分留了个心眼。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

既然想要尝试追踪黑客从 Tornado.Cash 转出的地址,那我们就得从 Ethereum 上第一笔资金转入 Tornado.Cash 的时间点开始,我们发现第一笔 10 ETH 和第二笔 10 ETH 间的时间跨度较大,所以我们先从跨度小的 100 ETH 开始分析。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

定位到 Tornado.Cash:100 ETH 合约相对应的交易,发现从 Tornado.Cash 转出的地址非常多。经过慢雾 MistTrack 的分析,我们筛选出了符合时间线和交易特征的地址。当然,地址依然很多,这需要我们不断去分析。不过很快就出现了第一个让我们饶有怀疑的地址(0x40F…952)。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

据慢雾 MistTrack 的分析,地址(0x40F…952)将Tornado.Cash 转给它的 ETH 转到地址(0x8a1…Ca7),接着把 ETH 分为三笔转到了 FixedFloat。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

当然,这也可能是巧合,我们需要继续验证。

继续分析,接连发现三个地址均有同样的特征:

A→B→(多笔)FixedFloat

A→(多笔)FixedFloat

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

在这样的特征佐证下,我们分析出了符合特征的地址,同时刚好是 24 个地址,符合我们的假设。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

Polygon 部分

如下图,黑客将获利的 365,247 MATIC 中的部分 MATIC 分 7 次转到 Tornado.Cash。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

而剩下的 25,246.722 MATIC 转到了地址(0x75a…5c1),接着追踪这部分资金,我们发现黑客将 25,246.721 MATIC 转到了 FixedFloat,这让我们不禁思考黑客在 Polygon 上是否会以同样的手法来洗币。

我们首先定位到 Tornado:100,000 MATIC 合约与上图最后三笔对应的交易,同时发现从 Tornado.Cash 合约转出的地址并不多,此时我们可以逐个分析。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

很快,我们就发现了第一个让我们觉得有问题的地址(0x12e…69e)。我们看到了熟悉的 FixedFloat 地址,不仅FixedFloat 转 MATIC 到地址(0x12e…69e),从地址(0x12e…69e)转出资金的接收地址也都将 MATIC 转给了 FixedFloat。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

分析了其他地址后,发现都是一样的洗币手法,这里就不再赘述。从前面的分析看来黑客对 FixedFloat 实在独有偏爱,不过这也成了抓住他的把柄。

BSC 部分

下面我们来分析 BSC 部分。BSC 上黑客地址有两个,我们先来看地址(0x489…1F4):

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

黑客地址分 17 次转了 1700 ETH 到 Tornado.Cash,时间范围也比较连贯。就在我们以为黑客会故技重施的时候,发现并非如此。同样,经过慢雾 MistTrack 的分析与筛选,我们筛选出了符合时间线和交易特征的地址,再进行逐个突破。

分析过程中,地址(0x152…fB2)引起了我们的注意。如图,据慢雾 MistTrack 显示,该地址将 Tornado.Cash 转给它的 ETH 转出给了 SimpleSwap。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

继续分析后发现,换汤不换药,虽然黑客换了平台,手法特征却还是类似:

A→SimpleSwap

A→B→SimpleSwap

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

另一个黑客地址(0x24f…bB1)是以 10 BNB 为单位转到了 Tornado.Cash。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

而在这个地址的洗币手法中,黑客选择了另一个平台,不过手法依然类似。这里就不再一一分析。

黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?

总结

本文主要由一个真实案例开启,分析并得出在不同的链上黑客是如何试图使用 Tornado.Cash 来清洗盗取的资金,本次洗币手法具有极相似性,主要特征为从 Tornado.Cash 提币后或直接或经过一层中间地址转移到常用的混币平台(FixedFloat/SimpleSwap/Sideshift.ai)。当然,这只是通过 Tornado.Cash 洗币的其中一种方法,更多手法仍等着我们发现。

而想要更有效率更准确地分析出结果,必然得借助工具。凭借超 2 亿个钱包地址标签,慢雾MistTrack 反洗钱追踪系统能够识别全球主流交易平台的各类钱包地址,如用户充值地址、温钱包地址、热钱包地址、冷钱包地址等。通过 MistTrack 反洗钱追踪系统可对任意钱包地址进行特征分析和行为画像,在反洗钱分析评估工作中起到至关重要的作用,为加密货币交易平台、用户个人等分析地址行为并追踪溯源提供了强有力的技术支撑。

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 黑客是如何使用 Tornado.Cash 来清洗盗取来的资金的?