本文分析了一起 Solana 钱包遭受钓鱼攻击的案例,攻击者通过诱骗用户签署包含修改账户 Owner 权限的交易,从而完全控制了受害者钱包,转移了超过 300 万美元的资产。文章详细解析了 Solana 账户 Owner 修改机制,并对攻击者的资金转移路径进行了追踪分析,最后给出了预防此类攻击的安全建议。

最近,我们收到一位用户的求助请求,该用户当天遭受了网络钓鱼攻击。该用户发现其钱包中存在异常的授权记录,并且无法撤销这些权限。受影响的钱包地址为 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb。
通过我们的链上分析,我们发现该用户账户的 Owner 权限已经转移到地址 GKJBELftW5Rjg24wP88NRaKGsEBtrPLgMiv3DhbJwbzQ。此外,该用户已经损失了超过 300 万美元的资产,另有价值 200 万美元的资产被锁定在 DeFi 协议中,无法移动。(这部分约 200 万美元的资产后来在相关 DeFi 协议的帮助下成功追回。)

受害者试图从被盗账户向自己的地址发起转账以验证控制权,但所有交易均失败。这种情况与 TRON 生态系统中常见的“恶意多重签名”攻击非常相似。换句话说,此事件不是传统的“批准盗窃”案例;相反,攻击者替换了核心的 Owner 权限。因此,受害者无法转移资金、撤销授权或操作 DeFi 资产——即使他们尝试这样做。这些资产仍然“可见”,但不再受受害者的控制。
攻击者利用了两种违反直觉的场景,成功诱骗用户进行签名:
在签署交易时,钱包通常会模拟交易的执行,并在界面中显示任何由此产生的余额变化。然而,攻击者精心制作了一笔交易,没有产生可见的余额变化。
在传统的 Ethereum 模型中,EOA 帐户的所有权完全由私钥控制,因此用户没有直观地意识到 Solana 帐户允许修改其 Owner 字段。
下面,我们分析一下 Solana Owner 修改操作的实际内容以及它的工作原理。
当我们使用钱包创建一个帐户时,它的 Owner 通常是系统程序 (11111111111111111111111111111111)。 在交易期间,系统需要验证交易签名是否由相应的公钥生成。 你可以使用 solana account 命令查看帐户的基本信息。

还有另一种类型的帐户称为 PDA。 它是由智能合约派生的帐户,主要用于存储程序数据。 它的 Owner 通常是派生它的智能合约,尽管可以进行其他配置。 例如,用于存储 token mint 和 token holding 信息的帐户是 PDA 帐户。 当你使用 solana account 查看它们的基本信息时,你会看到它们的 Owner 是 token 程序 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA。

两种类型的帐户都可以修改其 Owner,但它们遵循不同的规则和限制。
普通账户
普通帐户的 Owner 无法通过外部命令或脚本直接修改,但可以通过程序调用来更改。 关键指令如下:

/// Assigns ownership of an account.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct Assign {
/// New owner of the account
pub owner: Pubkey,
}
assign 指令将帐户的 Owner 从其当前值更改为指定的新 new_owner。 部署程序后,可以通过 Solana CLI 或通过 Solana Web3.js 等客户端调用此指令。 在此网络钓鱼事件中,攻击者利用此机制,诱骗受害者签署包含 assign 指令的交易,从而悄悄地转移了受害者钱包帐户的 Owner。
PDA 账户
简而言之,可以修改 PDA 帐户的 Owner,但前提是该帐户的数据为空。 此修改也使用 assign 指令执行。 我们进行了一些基本测试,并观察到以下不同情况下的行为:
新创建的 PDA 帐户可以将其 Owner 设置为任何值。 但是,如果 Owner 不是派生它的程序,则该程序将没有写入权限。
尝试修改已初始化的 PDA 帐户的 Owner 会导致错误:“instruction illegally modified the program id of an account.”
在最终分配操作之前尝试将数据写入 PDA 帐户会导致:“instruction modified data of an account it does not own.”
与普通帐户不同,PDA 的签名权限基于其派生过程(seeds + program ID),而不依赖于 Owner 字段。 只要程序可以派生正确的 PDA 地址和 bump,它就可以在交易中代表 PDA 进行“签名”。
另一种常见的所有权变更涉及 Token 帐户。 本质上,这种形式的所有权由 token 程序本身的逻辑管辖,而不是由 Solana 的底层帐户模型管辖。 但是,这种机制也经常在网络钓鱼攻击中被滥用,用户应保持警惕。
根据链上追踪和反洗钱工具 MistTrack 对受害者地址 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb 的分析,攻击者的资金流动模式非常复杂。 攻击者主要通过两个关键地址转移资产:BaBcXDg… (流 1) 和 7pSj1R… (流 2)。
这条主要路线涉及大约 238 万美元的资产。 它的鲜明特征是多层分散、存款分散在多个 CEX 上以及通过众多中间地址进行中继。 通过此地址,攻击者将他们收到的各种 token(包括 PAYAI、CASH、CARDS、JitoSOL、POLYFACTS、PUMP、PYUSD 和 CAP)兑换为 SOL。 其中,PUMP 首先被转移到 7E4eNkK… ,然后被兑换为 SOL。

从交换中获得的 SOL 主要按以下方式流动:

2) 7,556.89 SOL + 2,218 SOL(来自 PUMP 交换)合并到 7E4eNkK…。 从那里,部分 SOL 被发送到 Letsexchange 平台,5,050.93 SOL 被转移到 FyB2jDJbTdmW…,剩余资金分散在约 13 个中间地址中。

3) 2,161.88 SOL + 上述 5,050.93 SOL 在 FyB2jD… 处进一步分散,流入多个平台(HTX、Binance、KuCoin、ChangeNOW、Changelly)和部分流入未知地址(25nULbv…)。 剩余资金分散并剩余在约 25 个中间地址中。

4) 2,053 SOL 被转移到 6qdtH5D…。 部分进入 Letsexchange 平台,其余部分分散并剩余在约 15 个中间地址中。

5) 20 SOL 被转移到 5rJdvkp…,然后转发并剩余在 2etvjZH…。

6) 2,142 SOL 被转移到 2xFzAda…。 其中,352 SOL 进入 Binance,200 SOL 进入 Letsexchange,剩余资金分散并剩余在约 11 个中间地址中。

这第二条主要路线涉及大约 790,000 美元的资产。 其核心特征是跨链移动和多链循环交换。 与流 1 类似,攻击者将收到的各种 token 兑换为 SOL,其中 JitoSOL、PUMP 和 POLYFACTS 占了很大一部分。

从这些交换中获得的 SOL 主要按以下方式流动:
5,742 SOL 被转移到 FiywJZ2Z…,该地址还从其他被 MistTrack 标记为_“Phishing”_的网络钓鱼事件地址收到了 2,772.8 SOL。

在这些资金中,攻击者使用 Relay.link 将 8,579.92 SOL 交换为 ETH,并将其桥接到 Arbitrum 地址 0xDCFa6f…。 然后,他们使用 1inch 将资金换回 SOL,并将其桥接到多个 Solana 地址,通过 1inch 重复执行跨链交换。 为了简洁起见,此处省略了详细的循环过程。

FiywJZ2Z… 将剩余的 215.89 SOL 转移到 Ah5Rs916…,在那里它被交换为 29,875 USDC。 然后,USDC 通过 Relay.link 兑换为 DAI,金额分别为 5,000、5,000、5,000、5,000 和 19,875.38,并桥接到 Base 和 Ethereum 地址 0xd2c1c2A…。 其中 2 笔 5,000 USDC 交易已退回。 截至目前,DAI 尚未移动。


此外,在多方协助下,受害者剩余的 DeFi 资产已成功追回,并通过地址 fgR5PJF…转移,包括约 217 万 PYUSD 和 4,548 USDC。

资金流清晰地揭示了攻击者的运营模式:快速资产分散、多地址跳跃、多平台混合、跨链循环、中心化交易所存款以及 DeFi 资产的再利用——形成了一个多层次、跨生态系统的洗钱网络,大大增加了追踪的难度。 MistTrack 现在已经标记了所有相关地址。
对于普通用户来说,此类事件本质上是网络钓鱼攻击。 攻击者将恶意链接伪装成空投、奖励、任务、早期白名单访问权限,甚至伪造官方公告。 这些链接看起来无害,但它们触发的签名请求可能包含高风险操作,例如更改帐户 Owner。 一旦确认,攻击者实际上完全控制了钱包。 因此,在单击链接或批准签名之前,请务必停下来并询问:
如果钱包要求你不理解的权限 - 立即停止。 永远不要仅仅因为不确定就批准签名。
最好的做法是避免使用持有大量资产的钱包进行日常互动。 使用单独的低价值钱包来执行任务、空投和链上活动,同时将高价值资产存储在隔离的钱包中——最好是冷钱包。 这样,即使你签署了恶意内容,损失也会受到控制。 此外,尽可能避免授予无限制的批准。 限制限额数量和范围,以减少攻击者可以利用的长期风险敞口窗口。
简而言之,始终在点击前验证,并在签名前仔细检查。 不要盲目互动或批准你不理解的签名——谨慎是你的第一道防线。 将大额资产分开存放,使用低风险钱包进行链上互动,并将你的主钱包仅用于存储。 如果有任何感觉不对劲,请立即停止——不要依赖运气。 通过遵循这些做法,可以大大降低成为网络钓鱼攻击受害者的风险。 最后,我们强烈建议阅读 区块链暗森林自卫手册 。
SlowMist 是一家专注于区块链安全的威胁情报公司,成立于 2018 年 1 月。该公司由一支拥有超过十年网络安全经验的团队创立,旨在成为一支全球力量。我们的目标是使区块链生态系统对每个人都尽可能安全。我们现在是一家著名的国际区块链安全公司,曾与 HashKey Exchange、OSL、MEEX、BGE、BTCBOX、Bitget、BHEX.SG、OKX、Binance、HTX、Amber Group、Crypto.com 等各种知名项目合作。
SlowMist 提供各种服务,包括但不限于安全审计、威胁信息、防御部署、安全顾问和其他安全相关服务。我们还提供 AML(反洗钱)软件、MistEye(安全监控)、SlowMist Hacked(Crypto hack 档案)、FireWall.x(智能合约防火墙)和其他 SaaS 产品。我们与 Akamai、BitDefender、RC²、天际伙伴、IPIP 等国内外公司建立了合作伙伴关系。我们在加密货币犯罪调查方面的广泛工作已被国际组织和政府机构引用,包括联合国安全理事会和联合国毒品和犯罪问题办公室。
通过提供针对各个项目的综合安全解决方案,我们可以识别风险并防止其发生。我们的团队能够发现并发布多个高风险的区块链安全漏洞。通过这样做,我们可以传播意识并提高区块链生态系统中的安全标准。
- 原文链接: slowmist.medium.com/bewa...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!