有些 Solana drainer 不只是清空你的 SOL。它们会修改钱包账户本身,使它无法再发送 SOL,而你充入的任何 SOL 都可以被攻击者提走。你的代币和 NFT 通常还在原处,但常规的转移方式,也就是从钱包应用发送,要么失败,要么反而让攻击者拿到更多 SOL。
本指南说明发生了什么变化、为什么不应向该钱包发送 SOL,以及如何在由另一个钱包支付手续费的同时,把剩余资产转到新钱包。
如何判断你的 Solana 钱包已被转换?
钱包里明明还有代币,发送却总是失败;在区块浏览器中,这个地址显示为 authority 不是你的 nonce 账户,或显示为归某个程序所有的账户。连接 Sol Incinerator 时,它会显示“你的钱包已被黑客控制”,并附上接管时间和交易链接。
普通的 Solana 钱包是没有数据的简单 System Program 账户。被转换的钱包地址不变,但地址背后的账户已经改变。可以通过三种方式检查:
- 在区块浏览器中打开地址。 Solana Explorer 会为被转换的钱包显示 nonce 账户详情,包括一个 authority 地址。如果这个 authority 不是你拥有的地址,说明账户里的 SOL 由别人控制。
- 找到造成这一切的交易。 在我们检查的案例中,受害者联署了一笔包含两条 System Program 指令的交易:
allocate为钱包地址分配了 80 字节的数据,initializeNonce把它变成以攻击者为 authority 的 durable nonce 账户。网络手续费由攻击者支付。在其中一个案例里,受害者的 SOL 在 30 秒后被提走。 - 把钱包连接到 Sol Incinerator。 它会在连接时读取账户,发现接管时会显示警告,并附上接管时间和 Solscan 链接。
有些 drainer 采用另一种改动:把地址分配给某个程序。对你来说结果相同:钱包再也无法自行支付费用。
为什么被黑的钱包无法支付网络手续费?
durable nonce 账户是 Solana 的一项常规功能,用于提前签署交易。它保存一个 nonce 值和一个 authority,只有这个 authority 能推进 nonce、更改 authority 或提走账户中的 SOL。当 drainer 把你的地址变成这种账户,它就成了你地址上 SOL 的 authority。
- SOL 无法再以正常方式转出。 System Program 拒绝从带有数据的账户转出 SOL,而你的钱包现在带有 nonce 数据。
- 手续费来自攻击者可以拿走的 SOL。 nonce 账户只能用其 rent 储备金以上的 SOL 支付网络手续费,而 authority 可以在这些 SOL 出现时立即提走。
- 归程序所有的地址完全无法支付手续费。 Solana 只接受来自简单 System 账户或 nonce 账户的手续费。
- 你无法撤销。 只有当前的 authority 才能更改 nonce 账户的 authority,所以你签署的任何交易都无法把它夺回。
你的代币则是另一回事。每个代币账户都把你的地址记录为所有者,代币程序检查的是你的签名,而不是钱包账户的状态。你的密钥仍然可以转移每一个代币和每一个 NFT,只需要由另一个钱包支付网络手续费。
不要向被黑地址发送 SOL,哪怕只是用来付手续费的一小笔。请假定有机器人在监视它。不要签署任何来自网站或私信、声称能“解锁”或“修复”钱包的请求:通过私信提供的付费恢复服务是被黑后常见的二次诈骗。
如何把代币转出被黑的 Solana 钱包?
使用由另一个钱包支付网络手续费、被黑钱包只以代币所有者身份签名的交易。钱包应用会向发送方钱包收取手续费,所以请使用专为被入侵钱包打造的恢复工具,例如 Sol Recovery,并把所有资产发送到新钱包。
Sol Recovery 是面向被入侵 Solana 钱包的独立服务。它能识别被转换的钱包,其免费账户可以把接收资产的钱包与支付手续费的钱包分开。
- 创建新钱包。 如果你曾在网站上输入过助记词或私钥,请用全新的助记词创建新钱包。旧助记词下的另一个账户并不是新钱包。
- 查看还剩什么。 把被黑地址粘贴到 Sol Recovery。它无需连接钱包,就能扫描代币、质押仓位、DeFi 仓位、收藏品和域名。
- 设置安全钱包和付款钱包。 把新钱包添加为目标地址,再添加一个单独的钱包来支付网络手续费。只给付款钱包充值,永远不要给被黑地址充值。
- 检查并签名。 被黑钱包以代币所有者身份签署每一笔转账。批准前请确认每笔交易的作用,并核实资产已经到账。
Sol Recovery 还为在固定时间解锁的质押中或锁定仓位提供机器人服务,在解锁的瞬间与攻击者抢先。该服务收取所恢复资产的 10%,并需要被黑钱包的私钥以便即时签名。这是一个真正关乎信任的决定:只分享已经被入侵的钱包的密钥,绝不要分享新钱包的助记词。
Sol Recovery 与 Sol Incinerator 没有关联。签名前请确认它当前的费用和每一笔交易。开发者也可以自己构建同样的转账:只要代币所有者签名,代币转账就有效,无论由哪个钱包支付手续费。
你还能领取代币账户里的 SOL 吗?
可以。空代币账户里有可退还的 rent 押金,关闭账户就能取回这些 SOL。普通领取会把 SOL 付给钱包本身,在这里就等于付给攻击者,所以 Sol Incinerator 会以不同方式处理被转换的钱包。
当你连接被转换的钱包时,Sol Incinerator 会要求你提供一个安全钱包地址,并把回收的 SOL 付到那里。它自行支付网络手续费,这笔手续费和常规清理费会从回收的 SOL 中扣除。不会向被黑地址发送任何东西。支持关闭空代币账户和提取多余的 rent;不支持销毁以及其他需要钱包自行支付手续费的操作。
转走代币后,这些代币账户会变空。如果你的恢复工具没有关闭它们,之后请再领取一次,把这部分 rent 也收回来。
你还应该检查什么?
- 完整阅读接管交易。 它可能还转走了资产或批准了某个 delegate。请记下交易签名和所有陌生地址,以便举报。
- 列出质押中和锁定的仓位。 有些仓位需要先解除质押或度过等待期才能转移,而攻击者可能也在等待同一时刻。
- 在所有收款的地方替换旧地址。 交易所的提现地址列表、收款设置和 airdrop 登记中凡是付款到被黑地址的,现在都会付给攻击者。
- 停止使用这个地址。 资产转出后,不要再使用这个钱包,哪怕是小额。
