Solana账户粉尘攻击与地址投毒

该文章深入探讨了Solana区块链上两种新兴的欺诈形式:基于域名的粉尘攻击和外科手术式地址投毒攻击。文章详细解释了这两种攻击方式的原理、识别方法,以及如何通过建立工具来检测和预防这些攻击。文章强调,通过简单的逻辑和可扩展的方法,可以在钱包层面有效减少这些攻击。

概要

Solana 快速、低成本的架构实现了广泛采用,但也为一种新的交易级垃圾信息和欺骗创造了肥沃的环境。本报告调查了两种新兴的滥用形式,它们利用了用户行为和界面设计的可预测性:基于域的 撒币 (dusting)外科手术式地址投毒 (surgical address poisoning)

基于域的 撒币 涉及从虚名地址(例如,flip.gg,casino.sol)向钱包发送不经济的微交易来轰炸钱包。这些设计的目的是在钱包历史记录视图中吸引用户注意,并将他们重定向到链下诈骗、赌博网站或钓鱼页面。

地址投毒是一种更隐蔽的威胁,攻击者将看起来相似的地址注入钱包历史记录,目的是被误认为是合法的收款人。这种方法已经导致了数百万美元的损失,并且它通过利用 UI 设计模式和认知捷径来针对即使是经验丰富的用户。

在本文中,我们将引导你了解如何理解这些威胁,如何构建工具来检测和预防它们,以及在设计每个系统时我们考虑了哪些权衡。

基于域的 撒币

识别基于域的 撒币

此分析旨在检测在 Solana 上使用基于域的 撒币 攻击的恶意行为者。这些攻击者通常向数千个钱包发送少量、不经济的 SOL,通常使用虚名域(例如, flip.ggcasino.sol )来诱使用户参与,无论是用于诈骗、赌博网站还是钓鱼企图。

1. 建立 7 天行为窗口

为了评估交易是否是基于域的 撒币 模式的一部分,我们分析了发送者钱包在该交易之前的 7 天 内的行为。

我们提取该钱包在此期间进行的所有 SOL 转账,并重点关注所有转账金额都小于 0.000005 SOL(这是发送交易所需的最低 gas 费用)的交易, 并且 仅发送原生 SOL。发送小于此金额意味着每个接收者收到的价值低于发送成本,这通常表明转移不是出于经济动机。

对于该钱包,我们计算:

  • 他们向其发送少于 0.000005 SOL 的唯一钱包的数量

  • 交易转账事件的总数

  • 转移的 SOL 总量

  • 估计的最低 gas 成本(假设每次交易 0.000005 SOL)

2. 检查域名注册

接下来,我们检查发送者钱包是否已通过以下任一平台注册域名:

  • Solana 命名服务 (SNS)

  • AllDomains 注册表

这些平台提供虚名(例如, flip.ggsomething.sol ),垃圾邮件机器人经常使用这些虚名,以使其在交易历史记录中显得更合法或更易识别,从而增加了用户参与的可能性。

3. 标记基于域的撒币

如果发送者钱包注册了域名,并且在交易发生前的 7 天内,其消耗的 gas 至少是转移的 SOL 总价值的 2 倍(即 percent_of_gas < 50% ),则该交易被归类为 基于域的撒币活动 的一部分。

此阈值隔离表现出以下行为的钱包:

  • 经济上不合理

  • 可见品牌

  • 大规模且未经请求

此类交易会降低用户体验,使钱包历史记录混乱,并可能使用户遭受链下诈骗或钓鱼企图。

关于多重发送行为

我们还考虑使用多重发送行为(即,每次交易有多个转账事件)作为额外的检测信号。但是,我们发现它是多余的 —— 几乎所有基于域的 撒币 机器人已经使用多重发送作为一种节省成本的技术。包含它并没有显着提高检测准确性,因此我们将其从最终分类逻辑中排除。

基于域的 撒币 的规模

在过去的 14 天里,我们发现了 40 个活跃钱包参与了 Solana 上的基于域的 撒币 活动。这些钱包共同定位了大约 620 万个唯一地址每天的 撒币 活动在 100 万到 125 万个钱包之间

这些钱包总共执行了 520 万次 撒币 交易,其中包含 超过 8400 万次单独的 SOL 转账 —— 几乎所有都低于最低可行转账价值。然而,鉴于其庞大的覆盖范围,总成本仍然非常低

  • 每天花费 1.5 到 2 SOL 用于 gas

  • 每天花费 0.01 到 0.05 SOL 用于 撒币 本身

  • 在 14 天的活动中总共花费 26.1 SOL

按覆盖范围细分发送者行为时:

  • 4 个钱包的 撒币 地址超过 100 万个

  • 25 个钱包定位了 1,000 到 100,000 个地址

按花费细分时:

  • 6 个钱包花费超过 1 SOL

  • 23 个钱包花费在 0.01 到 0.1 SOL 之间

鉴于这些活动所达到的知名度 —— 使数百万个钱包变得杂乱无章,甚至促使了像本文这样的文章 —— 其成本令人震惊地高效。这些行为者只需花费低于一条备受关注的推文或广告活动的价格,就可以直接在钱包历史记录中嵌入带有域名品牌的推广信息,从而覆盖整个 Solana 网络。

基于域的 撒币 行为者

虽然许多与域名链接的钱包参与 Solana 上的 撒币 活动,但以下代表了过去两周内一些最活跃的罪魁祸首。每个钱包都花费了大量的 SOL gas 费用来向数千个钱包发送不经济的微交易 —— 通常作为一种未经请求的促销形式。

此列表绝非详尽无遗,但它高亮显示了目前正在用低价值垃圾邮件污染交易历史记录的最激进的一些行为者。以下是他们正在做的事情以及他们似乎正在推广的内容的更详细的介绍。

Flip.gg: 一个使用开箱机制的 Solana 加粗 赌博平台。其钱包在多个虚名下注册,向数百万个地址发送了不经济的 撒币,在过去两周内花费了超过 18 SOL —— 远远超过了转移的价值。

OdinBot.io: 一个复制交易平台,使用像“odinbot-io⚡fastest-copy-trading.sol”这样的长虚名重复 撒币 数千个钱包。其钱包在这些未经请求的微交易上花费了略高于 3 SOL 的 gas。

Crashout.fun: 一款围绕崩溃风格机制构建的赌博游戏。Crashout.fun 使用表情符号加载的虚名来 撒币 用户,以增加流量。尽管他们的钱包在两周内转移的价值微不足道,但花费了约 4 SOL。

WalletX.gg: 一个钱包分析工具,通过诸如“👉walletx-gg👈alpha-wallets-scraper.sol”之类的促销风格地址进行推广。它在花费仅 0.25 SOL 的同时执行了广泛的 撒币 活动,这表明这种未经请求的促销形式具有很高的投资回报率。

外科手术式地址投毒攻击

识别地址投毒

外科手术式地址投毒是现代加密货币中一种微妙而掠夺性的攻击媒介。与通常依赖于用户错误的传统网络钓鱼不同,此技术利用了一种完全不同的漏洞:即使是谨慎用户的可预测习惯。具体来说,它针对的是从自己的交易历史记录中复制和粘贴最近使用的钱包地址的常见行为。

此攻击的特别危险之处在于其优雅之处:

  • 它不需要任何权限

  • 它不涉及与攻击者的任何互动

  • 即使使用者仔细检查地址,它也会成功

这不是对鲁莽行为的攻击,而是对日常行为的攻击。即使是具有强大运营安全性的用户,避免空投和验证合约的用户,也可以通过重复使用一个看起来很熟悉的地址而成为受害者。一旦注入到交易历史记录中,一个具有精心设计的视觉相似性的恶意地址就可以悄悄地重定向资金。

一个真实的损失:通过地址投毒窃取了 290 万美元

2024 年 11 月,一名 Solana 用户在错误地从其钱包交易历史记录中复制了伪造的中心化交易所 (CEX) 存款地址后,损失了 291 万美元。尽管该地址看起来几乎与合法地址相同,但它是由攻击者植入的恶意虚名地址 —— 这表明了这种攻击媒介的有效性。

  • 受害者地址5LbwC1ewY3Sca7T8CwzX9wsjvwMAHbdRo6SCQL8j7EWc

  • 伪造地址4yfuQCL4fnNfSbBgqFcPTFn5GGZABDaEFQLhGpwjizcY

  • 正确地址4yfu48qwim7hGzD3Nphzd2A6ThydzysfKi4wBPFSgnhY

这些地址仅相差几个字符 —— 足以欺骗即使是细心的用户,尤其是在依赖显示缩短版本的钱包 UI 时。

加粗 “这不是对鲁莽行为的攻击,而是对日常行为的攻击。”

此事件在 Twitter 上被浏览了 120,000 次,引发了紧急的社区讨论,并强调了像本报告中描述的系统这样的检测工具的重要性。

过滤候选交易

为了精确地检测投毒企图 —— 同时最大限度地减少误报 —— 我们首先使用一个有重点的过滤器来隔离那些展示了外科手术式地址投毒的结构和行为特征的交易。

  • 转账规模很小(通常 < 0.5 SOL,通常低于 gas 成本)

  • 在高价值的合法转账后不久发生

  • 发送给与合法转账相同的发送者

  • 发送者地址在视觉上类似于合法的接收者

  • 发送者钱包是最近创建的(通常在 24 小时内)

这种严格的过滤器确保我们不仅仅是标记不寻常的行为 —— 我们正在隔离那些在结构上和行为上与已知的投毒策略相匹配的交易。

为什么每个信号都很重要

视觉相似性

攻击的核心是视觉欺骗。投毒依赖于看起来类似于合法地址的虚名生成的地址 —— 尤其是在地址的开头和结尾,用户在验证时通常会关注这些位置。

我们根据地址的开头和结尾在视觉上对齐的字符数来对匹配项进行评分。这些模式对应于统计上不可能发生的碰撞:

  • 在开头匹配 2 个字符,在结尾匹配 2 个字符,随机发生的概率约为 1/1100 万

  • 在开头匹配 3 个字符,在结尾匹配 3 个字符,随机发生的概率约为 1/380 亿

匹配的字符数越多,就越不可能是一种巧合 —— 也越有可能是一种故意的欺骗企图。

时间邻近性

时间对有效性起着关键作用。当攻击者在高价值交易之后立即发送 撒币 时,投毒效果最佳。这会将欺骗性交易直接放置在钱包 UI 中合法交易的旁边 —— 增加了用户复制错误地址的可能性。因此,如果交易发生在较大转账的几分钟内,我们会对其进行更重的加权。

钱包年龄

攻击者通常使用虚名工具生成新的钱包,然后立即部署它们以 撒币 目标。这些钱包没有任何历史记录或身份 —— 只有一个伪造的外观。我们将在投毒企图发生前 24 小时内创建的钱包视为高风险,因为它们的短寿命强烈表明了一种可支配的自动化攻击源。

金额约束

大多数投毒企图旨在隐形 —— 发送的 撒币 非常少,可以躲过钱包过滤器,并且看起来是良性的。这些交易通常转移的金额低于 gas 费,这使攻击者可以有效地免费进行攻击。

但是,我们也会考虑高成本的攻击。生成一个高相似度的虚名地址(例如,3+3)可能需要花费高达 30 美元的计算时间。在这些情况下,攻击者有可能发送更大的金额 —— 可能是为了冒充退款或与合法的交易模式混合在一起。

为了考虑到这一点,我们仅在金额超过其相似度级别的合理金额时才惩罚交易。这使我们能够:

  • 以很高的置信度标记低成本的垃圾邮件

  • 避免来自小型合法交易的误报

  • 检测出升级的攻击,其中欺骗行为很复杂 —— 并且风险更高

数学原理

此检测系统的优势在于虚名地址生成的可预测结构和视觉相似性的数学上可定量的稀有性。与概率性垃圾邮件或网络钓鱼过滤器不同,此方法利用固定的熵分布(来自 Solana 的 Base58 地址格式)和真实世界的计算成本模型,以很高的置信度识别外科手术式投毒。

地址匹配概率

Solana 地址是 44 个字符的 Base58 字符串。两个随机生成的地址在相同字符上匹配的概率极低 —— 并且随着每个附加字符的增加而呈指数级下降:

  • 匹配 1 个字符:1/58

  • 匹配 2 个字符:1/3,364

  • 匹配 3 个字符:1/195,112

  • 匹配 4 个字符:1/1130 万

  • 匹配 5 个字符:1/6.56 亿

  • 匹配 6 个字符:1/380 亿

  • 匹配 7 个以上字符:如果没有暴力破解,几乎不可能

我们根据地址开头和结尾匹配的字符数来计算相似度,例如“匹配前 2 个字符和后 2 个字符”。这些组合的匹配模式是我们视觉风险评分系统的基础。

鉴于这些几率,没有经过深思熟虑的攻击者意图,高相似度、低价值的交易在统计上是不可能发生的。自动丢弃涉及两侧均有 4 个或更多匹配字符的匹配项(这些匹配项非常罕见且在视觉上很危险)可能非常有用。例如,最近的 290 万美元投毒攻击涉及 5 个字符的重叠。

唯一现实的临界情况(其中交易可能看起来有风险但不是恶意的)发生在较低的相似度级别:

  • 在开头匹配 1 个字符,在结尾匹配 1 个字符(得分 1):约 1/3,364

  • 在一侧匹配 1 个字符,在另一侧匹配 2 个字符(得分 2):约 1/195,112

仅凭这些模式在大型数据集中并不令人怀疑。但是,当它们与其他攻击者行为同时发生时,它们就会成为有意义的信号。

处理临界情况匹配(低相似度)

为了安全地检测低相似度的投毒攻击,而不会标记合法的交易,我们应用了一种上下文感知的评分系统,该系统会根据周围的信号进行调整:

  • 如果可疑交易在高价值的合法转账发生后的五分钟内发生,我们会应用一个基于时间的得分提升,反映了钱包历史记录排序的可能操作。

  • 如果发送钱包的创建时间不到 24 小时,我们会应用一个钱包年龄奖励,因为在这些攻击中,新生成的虚名地址很常见。

  • 如果转账金额超过其匹配类别的 撒币 阈值,我们会应用一个惩罚,反映了在较大金额下欺骗的可能性降低。

这种分层启发式区分了自然的巧合(例如,来自旧钱包的小额转账)和故意的低成本欺骗 —— 并且仅在多个风险因素对齐时才会升级。

结果:精确且不做过度干预

有了这个系统,我们:

  • 仅在其他高信号指标加强时才标记临界情况匹配

  • 最大限度地减少误报,即使在大型、高吞吐量的环境中也是如此

  • 保留完整的可审计性,提供对分配的每个分数的清晰洞察

在极少数情况下,一个良性系统有意生成高相似度的地址(例如,用于品牌推广或用户体验),可以 安全地将这些钱包列入白名单,以避免错误分类。

检测工具和实施

为了从理论走向实践,我们开发了能够识别基于域的 撒币 和地址投毒攻击的工具。这些工具专为钱包提供商、浏览器和研究人员设计,他们需要大规模地标记或过滤可疑交易。所有这些工具都依赖 Flipside 和/或 Helius 作为底层数据提供商。

撒币活动仪表板

https://flipsidecrypto.xyz/pine/domain-based-dusting-metrics-0v65qW


一个 Flipside 托管的仪表板,其中:

  • 跟踪过去 14 天内已识别的基于域的 撒币 钱包的每日活动。

  • 显示与活跃垃圾邮件活动相关的虚名钱包

  • 显示过去 2 周内所有活动的 gas 使用量、撒币 量和目标钱包总数

每日 撒币 查询

https://flipsidecrypto.xyz/studio/queries/9fe973d5-ea06-493a-b5a5-3b92f7880e7c


一个 Flipside 托管的查询,用于跟踪每个已识别的 撒币 钱包的每日指标,基于创建每行之前的 7 天内的活动。每日更新,它捕获 撒币 行为的滚动窗口。

包括:

  • 在之前的 7 天内,从 撒币 者那里收到 撒币 的钱包数量

  • 在之前的 7 天内,发送到收到 撒币 的钱包的 SOL 量

  • 在之前的 7 天内,撒币 者可能花费的 SOL gas 费用的最低金额

  • 在之前的 7 天内,SOL 撒币 事件的数量

  • 在之前的 7 天内,SOL 撒币 交易的数量

用例: 它也可以用作当前活跃 撒币 钱包的实时列表 —— 使其易于插入到其他 Flipside 查询或外部代码库中,以实现实时的检测、监控或响应自动化。

基于域的 撒币 交易分类器 (Python)

https://github.com/jms1192/dust-tx_checker

一个 Python 脚本,其中:

  • 接受 Solana 交易 ID ( tx_ids ) 列表和一个 Helius API 密钥作为输入

  • 从 Helius API 获取解码的转账数据

  • 将发送钱包与 Flipside 的基于域的 撒币 地址的实时列表进行交叉引用

  • 将每个交易分类为 DUSTINGclean

返回: 将每个 tx_id 映射到布尔 撒币 判决的字典

用例: 适用于安全分析师、机器人集成或 Solana 基础设施团队的轻量级取证工具,旨在实时标记 撒币 活动。

地址投毒风险评分器(Python 脚本)

https://github.com/jms1192/Poisoning_checker

接受 tx_id 的列表

根据以下因素计算风险:

  • 地址相似度,例如地址前后的字符匹配(例如,3 字符前缀和 3 字符后缀匹配)

  • 交易时间(与最近的入站资金的接近程度)

  • 钱包年龄(自首次注资以来的时间)

  • 转账金额(针对欺骗阈值进行调整)

返回:归一化的风险评分 (0–100) 和风险标签( CleanLowMedium-LowMediumHigh

使用:Flipside Crypto 作为后端查询引擎 —— 由于数据摄取延迟,会受到约 ~15 分钟的数据滞后影响

用例:对 Solana 交易批次进行评分以查找地址投毒企图。

最后的想法

在深入研究基于域的 撒币 和地址投毒之后,有一点是显而易见的:这些攻击中最常见和最有破坏性的变体可以通过简单的、可扩展的逻辑来捕获 —— 并且几乎可以在钱包级别消除。

对于 撒币,几乎所有低价值的虚名发送都可以被过滤掉而没有风险。迫使攻击者发送更大的金额才能通过过滤器几乎会立即使整个活动在经济上变得不可行。

对于地址投毒,这只是数学问题。与最近地址共享 4 个以上匹配字符(前后)的钱包在统计上不可能自然发生 —— 这些可以完全过滤掉。对于较低相似度的情况,结合可疑时间或新建钱包等因素,可以提供足够的信号来放心地标记或隐藏交易。

这些不是协议级别的缺陷 —— 而是接口差距。修复它们不需要深入的 ML 或新的标准。只需要一些放置得当的过滤器。


  • 原文链接: pineanalytics.substack.c...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
pineanalytics
pineanalytics
江湖只有他的大名,没有他的介绍。