
钱包排水器是如何工作的:批准和签名如何清空账户
钱包排水器通过从受害者的钱包中收集可重用的授权,然后使用该权限移动代币、NFT,有时甚至是本地币,而无需再次请求。区块链将这些签名的批准和类型数据许可视为有效指令,因此盗窃通常看起来像正常的去中心化金融活动,而不是“黑客攻击”。
关键要点
- 一个钱包排水器通常在没有种子短语的情况下成功,通过让受害者签署一个ERC-20批准,一个NFT操作员批准,或一个许可式类型数据签名。
- 该骗局通常是两阶段的:首先捕获权限,然后使用 transferFrom 或 setApprovalForAll 等功能立即或稍后进行自动清扫。
- 签名钓鱼通常比看起来更危险,因为类型数据签名可以在事后转化为链上批准。
- 排水器经常通过合法的DEX路由器进行路由,因此链上的痕迹类似于正常的交换,这延迟了检测和响应。
钱包排水器和批准钓鱼基础知识
核心技巧很简单:攻击者不需要破解钱包加密,如果受害者可以被说服授权攻击者作为支出者。这就是为什么钱包排水器位于正常的去中心化金融用户体验内部,而不是外部。受害者连接一个钱包,看到一个熟悉的提示,并签署看起来很常规的东西。区块链随后执行其设计的功能,即严格按照签署的内容执行授权。
这就是为什么批准钓鱼是正确的心理模型。攻击者并不是以受害者的身份“登录”。攻击者获得协议认可的权限,然后像使用信用额度一样使用它。FinanceFeeds 的 Trust Wallet 排水器活动报告明确指出,这些流程可以在“用户点击批准的瞬间”清空钱包,并且这些机制反映了合法的去中心化金融使用,而不是恶意软件或漏洞。
对于来自 Web2 安全的读者来说,一个有用的区别是,钱包可以在不离开设备的情况下被“破坏”,以至于可以被排水。CryptoAdventure 将其框架化为同意:用户签署,链验证,攻击者转移。这也是为什么“我使用硬件钱包”并不是一个完整的防御。FinanceFeeds 指出,硬件钱包降低了私钥被盗的风险,但如果用户签署了错误的批准,它们并不能防止用户批准的排水。这个解释位于更广泛的加密钱包骗局及如何避免它们的话题中,因为防御主要是权限卫生,而不是杀毒软件。连接和批准攻击流程最高概率的排水器路径首先是一个分发问题,其次是一个智能合约
问题。FinanceFeeds 描述了与印度国家网络犯罪咨询 TAU/ADV/013 相关的五步剧本:在 Telegram、Discord 或 X 上冒充 DM,一个克隆网站,通过 WalletConnect 或钱包内浏览器的连接提示,一个单一的批准,然后是自动清扫。Blockaid 的拆解增加了另一个对快速交易者重要的分发向量:前端劫持,其中合法网站的用户界面被恶意版本替换。
从头到尾,流程通常是:
1. 引诱用户到一个相似域名或劫持的前端。诱饵通常是“验证”、“索取”或“空投”,旨在制造紧迫感。 2. 早期强制钱包连接。Blockaid 观察到一个页面,任何按钮都触发连接对话框,这是一个常见的行为特征。 3. 收集钱包上下文。Blockaid 显示排水器与指挥和控制基础设施通信,并使用 JSON-RPC 读取如 eth_call 来了解可以针对的资产和 nonce 状态。 4. 收获权限。这是受害者认为自己在做一些无害的事情,比如批准一个代币进行交换,或“签署一条消息”的时刻。 5. 执行清扫。FinanceFeeds 描述“几秒钟内清扫一切”,而 Coca 强调排水可以被延迟,这就是受害者对导致损失的行为感到困惑的原因。“排水器即服务”的角度很重要,因为它解释了为什么这些流程看起来像模板。Coca 将排水器描述为卖给诈骗者的工具包,这种包装就是为什么相同的用户体验模式在不同链和钱包中重复。权限排水器滥用链上
ERC-20 允许是工作马。一个正常的去中心化应用请求批准,以便在用户的代表下进行代币移动,进行交换或存款。一个加密排水器请求相同的批准,但将支出者指向攻击者控制的合约或地址,并且通常推动无限制的上限。一旦该批准存在,攻击者可以稍后回来,使用 transferFrom 移动代币,而无需对受害者发出新的提示。FinanceFeeds 和 Coca 都指出无限制的批准是使其可扩展的杠杆。
延迟排水模式是人们误诊发生了什么的地方。Coca 描述了一个序列,用户今天批准,未见立即移动,然后稍后补充钱包,在几秒钟内被排水,因为现有的批准已经到位。这就是为什么正确的阅读批准方式不是“钱现在离开了吗”,而是“我刚刚授权谁在以后提取钱”。
NFT 也有自己版本的同样陷阱。FinanceFeeds 和 Coca 都指出 setApprovalForAll,它授予操作员移动该钱包中所有 NFT 的能力。用户通常将其视为列出或铸造的单一步骤。对于排水器来说,这是该集合的主密钥。
两个实际的影响是:
1. 攻击者的优势在于持久性。单个批准可以保持有效,直到被撤销。 2. 受害者的优势在于权限的可逆性。FinanceFeeds 和 Coca 都指出像 Revoke.cash 和 Etherscan 的代币批准检查器这样的工具,以审查和撤销允许和操作员批准。
这也是“钱包排水器”一词应落脚的地方:它不是一个“破坏”钱包的魔法合约。它是滥用去中心化金融所依赖的确切权限轨道的自动化。
基于签名的排水器和许可陷阱
最昂贵的弹出窗口通常是那些看起来不像交易的。Blockaid 的 2024-10-13 拆解显示一个排水器使用 eth_signTypedData_v4 捕获一个编码了 EIP-2612 许可的 EIP-712 类型数据签名。排水器首先通过 eth_call 收集 nonce 和代币元数据,然后提示受害者签署结构化数据,授权支出者一个非常大的值。关键点是,在受害者签署时,签名是链下的,但可以通过代币的许可功能在稍后提交到链上。
这就是最干净形式的签名钓鱼。受害者认为“我没有发送交易”。攻击者认为“我刚刚获得了一个我可以在想要时执行的批准。”Coca 将许可和 Permit2 风格的签名风险标记为现代排水器工具包的一部分,而 CryptoAdventure 将这些归类为与经典链上批准排水器不同的基于签名的排水器。
Blockaid 还观察到 wallet_switchEthereumChain 在同一流程中,强制切换到 Arbitrum One,即使该页面伪装成 BNB Chain 空投。该链切换请求并不是外观上的。它是一种针对受害者实际持有资产的网络的方式。
两个后果对用户很重要:
1. 类型数据签名可能比链上批准提示更难以推理,因为它们表现为“签署一条消息”。Blockaid 认为大多数钱包无法像模拟链上交易那样模拟这些链下签名。 2. 攻击者可以将权限捕获与执行分开。这样的时间灵活性就是为什么排水器可以等待低费用时刻或等待钱包被补充。
这也是为什么盲签名是一个反复出现的失败模式。如果钱包用户界面没有清楚地显示类型数据授权的内容,用户实际上是在黑暗中签署。
为什么排水看起来像正常活动
排水操作员希望链条看起来无聊。Blockaid 显示了一个通过合法的 SushiSwap 路由器合约路由的本地资产排水,调用 swapETHForExactTokens,而不是直接将 ETH 转移到攻击者地址。关键在于 SushiSwap 并没有被攻破。关键在于通过一个广泛使用的路由器进行路由使得交易看起来像常规的交换行为。
FinanceFeeds 从受害者的角度做出了相同的观察:Darktrace 跟踪到一种变体,在两分钟内从单个受害者那里排走了 470,000 美元,而链上的交易“看起来与常规的 Uniswap 交换没有区别。”这就是伪装层。如果盗窃看起来像交换,普通观察者甚至一些自动启发式算法就会浪费时间。
这就是论点的关键:授权是产品。一旦攻击者拥有有效的授权、操作员批准或许可签名,区块链将会忠实地在稍后执行它,快速,并且可以通过合法合约进行路由。
对于交易者和高级用户来说,操作上的启示是“在链上发现盗窃”是一种薄弱的防御。当类似交换的排水变得可见时,资产已经被转移,并且通常已经交换成更具流动性的代币。更高信号的时刻是在权限边界之前:意外的链切换提示、重复的连接对话框,以及在执行任何有用操作之前就推动批准的网站。
如何降低排水风险
防御主要是减少任何单击可以授予的权限,以及减少该权限背后存在的价值。FinanceFeeds 建议从钱包的“连接网站”或“权限”面板开始,撤销任何未积极使用的内容,然后使用 Revoke.cash 检查代币批准。Coca 将撤销视为常规,而非紧急,因为排水可以被延迟。
一个干净的工作流程如下:
1. 在钱包之间分离角色。保持一个“保险库”钱包,该钱包从不连接到 dApp,以及一个用于铸造、空投和新协议的支出或燃烧钱包。Coca 明确建议这种结构以限制爆炸半径。 2. 将每个批准或签名视为一个常设信用额度。如果提示显示无限,假设支出者可以稍后提取全部余额,除非 dApp 提供更严格的限制。 3. 注意与排水者相关的用户体验红旗。Blockaid 的例子包括无休止的连接提示和与网站声明的链相矛盾的 wallet_switchEthereumChain 请求。 4. 定期审计和撤销。FinanceFeeds 和 Coca 都指出 Revoke.cash 和 Etherscan 的代币批准检查器用于审查和撤销授权。 5. 如果被针对,首先处理权限。断开连接的网站,撤销批准和 NFT 操作员权限,并将剩余资金转移到一个新的地址。FinanceFeeds 强调,排水者并不利用 Trust Wallet 本身,相同的风险适用于 MetaMask 和 Phantom 等热钱包。
这是加密钱包诈骗及如何避免它们的部分内容,在压力下确实成立:假设支出钱包最终会签署一些愚蠢的东西,并设计系统使得这个错误是可以生存的。
总结
我看到太多人将排水者框架视为“黑客攻击”,然后浪费第一个小时寻找恶意软件,而真正的问题则作为他们授予的权限存在于链上。昂贵的心理转变是将批准和输入数据签名视为打开常设信用额度。一旦该额度存在,攻击者就不需要再次请求。他们只需稍后以 transferFrom 或操作员转账的方式出现,链条就会强制执行。
重复出现的失败模式是伪装成无害点击的盲签名。Blockaid 的 2024-10-13 拆解是一个干净的例子:eth_signTypedData_v4 收获一个许可,然后排水可以通过一个真实的路由器进行路由,以便它看起来像正常的交换。硬件钱包保持密钥安全,但它们并不保存判断。权限卫生做到了。
来源
FinanceFeeds
Blockaid
Coca
CryptoAdventure
常见问题
钱包盗窃者需要我的种子短语来窃取我的加密货币吗?
通常不需要。许多钱包盗窃活动依赖于您签署批准或类似许可的签名来授权转账。一旦存在该授权,攻击者就可以在不拥有您的私钥的情况下转移资产。
在我点击批准后,盗窃者如何窃取加密货币?
ERC-20批准为特定的支出者创建了一个限额,该支出者可以在之后使用transferFrom转移代币,而无需再次请求。如果批准是无限的,那么上限实际上就是您的全部余额。一些活动会延迟清算,直到您为钱包充值。
什么是签名钓鱼,为什么它很危险?
签名钓鱼会诱使您签署结构化数据,例如EIP-712类型数据消息,这些数据可以用于后续授权操作。Blockaid显示盗窃者捕获eth_signTypedData_v4签名以获得EIP-2612许可批准。受害者可能认为他们只是“签署了一条消息”,但该签名可以在链上提交。
为什么钱包盗窃者的交易在链上看起来像正常的交换?
盗窃者可以通过合法的合约(如DEX路由器)来进行盗窃,因此交易看起来像常规的交换行为。Blockaid显示通过SushiSwap路由器进行的本地资产盗窃,FinanceFeeds指出追踪看起来像典型的Uniswap交换的案例。这种伪装可能会延迟检测。
我如何检查和撤销批准以阻止盗窃者?
检查您钱包中的连接网站和权限,然后使用Revoke.cash或Etherscan的代币批准检查工具审核代币限额和NFT操作员批准。如果您看到不熟悉的支出者或无限额度,请撤销它们。撤销在钱包再次充值之前最为有效。