0转账钓鱼攻击(Zero Transfer Phishing Attack)是一种简单却阴险的骗术,虽然技术含量不高,但在币圈屡屡得手,甚至酿成过惊天大案(见下文)。
每次听说这种攻击得逞,连我都忍不住暗想:这黑客咋不是我呢?
先打个生活中的比方:
假设你和好友张三经常通过银行卡转账,时间一长,你的转账记录里就有了张三的卡号(6666...1234...8888)。下次转账时,你凭印象找那个“6666开头、8888结尾”的账号,直接点了确认。可这时,一个恶意的“假张三”用一个超像的卡号(6666...1235...8888)给你转了0元。这笔0元交易混进你的交易记录中,你没多想,下次转账时手快选错了,结果钱全进了假张三的口袋。现实生活中银行会拦住这种乌龙,但在区块链的去中心化世界里,黑客无影无踪,防不胜防。
简单说,0转账钓鱼攻击就是黑客通过发送0金额的转账,把一个长得像你常交易地址的假地址塞进你的钱包交易历史。等你下次转账时,钱包的“最近交易地址”功能一推荐,你没细看就选了,钱就乖乖进了黑客的腰包。为啥这招管用?因为像MetaMask、Trust Wallet这样的钱包都会记录交易历史,还贴心地提供“最近地址”选项,用户图方便一点,结果就被黑客钻了空子。
你以为只是多了条没啥用的记录?错!这是黑客精心埋下的“诱饵”。
一起来看看这场惊天大案:
2024年5月3日,据Web3反诈骗平台Scam Sniffer的监测,一名巨鲸遭遇了相同首尾号地址钓鱼攻击,被钓走 1155 枚 WBTC,价值约 7000 万美元。
受害者的地址:
0x1E227979f0b5BC691a70DEAed2e0F39a6F538FD5
受害者的目标转账地址:
0xd9A1b0B1e1aE382DbDc898Ea68012FfcB2853a91
黑客地址:
0xd9A1C3788D81257612E2581A6ea0aDa244853a91
转账交易:
https://etherscan.io/tx/0x3374abc5a9c766ba709651399b6e6162de97ca986abc23f423a9d893c8f5f570
交易列表:
https://etherscan.io/txs?a=0x1E227979f0b5BC691a70DEAed2e0F39a6F538FD5&p=11

受害者在etherscan.io/idm上对黑客喊话,说:“你赢了兄弟,你可以留下10%,然后把90%还回来,我们可以当啥事没发生过。我们都清楚7百万刀够你活得很好了,但是7千万刀会让你睡不好的。”
后来有传闻称,黑客良心发现退了90%,但未经证实。😂
事件报道:
https://web3caff.com/zh/archives/92353
https://x.com/realScamSniffer/status/1786374327740543464
我们一步步拆解这招简单粗暴的套路:
1. 黑客造假地址黑客生成一个与你常交易地址首尾相似但中间不同的假地址,比如0x6666...1234...8888 vs 0x6666...1235...8888,肉眼很难分辨。
怎么造这种地址?我自己就这么造过,用for循环不停生成钱包地址,再用正则表达式挑出首尾符合条件的“靓号”(方便记忆,但也隐藏风险),成本低效率高。
2. 发送0转账黑客用假地址向你的钱包发送0 ETH或0代币的转账。这笔交易不会改变你钱包余额,通常不会引起注意,但会悄悄出现在交易历史里。
3. 诱导你误选下次你转账时,钱包输入框弹出“最近交易地址”,假地址混在里面。你急着操作,没仔细核对就点了,结果真金白银送给了黑客。
想知道黑客咋“埋雷”的?我们直接上代码,看看技术细节。
针对ETH的0转账:
contract ZeroTransferPhish {
function plantFakeAddress(address victim) external {
// 发送0 ETH转账,制造交易记录
(bool success, ) = victim.call{value: 0}("");
require(success, "Transfer failed");
}
}
针对ERC20代币的0转账:
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
}
contract ZeroTransferPhish {
function plantFakeAddress(IERC20 token, address victim) external {
// 发送0代币转账,混进交易历史
token.transfer(victim, 0);
}
}
0x6666...1234...8888 vs 0x6666...1235...8888。0转账攻击不会直接偷你的钱,但能诱导你“亲手送钱”。以下是几招实用防身术,保住你的资产。
alice.eth),把复杂地址变成易记名称,出错概率大大降低。0转账钓鱼攻击利用交易记录埋‘陷阱’,诱导你选错地址,把钱亲手送给黑客。在区块链世界,地址一错钱就没,转账前不核对,就像不数清楚钞票就给人,损失了可没回头路。
想保住资产,记住这几招:
✅ 转账前逐字核对地址;
✅ 关掉自动填充,手动输入;
✅ 先用小额测试;
✅ 定期查记录,清理隐患;
✅ 用ENS或硬件钱包加保险。
基于全文检索与主题相似度
说在前面 玩过币的人都知道,ERC20是以太坊上一个常见的代币标准(支持钱包交易交互),里面有个类似开支票的功能——approve授权和transferFrom转账兑现。 如同现实生活中你给人开了一张支票,写上金额,对方拿着支票去银行就能把钱取走。你账户里的钱少了,他的账户里钱多了。 在智能合约里,
说在前面 生活中,我们习惯了依赖时间来安排一切。闹钟提醒我们起床,高铁准点发车,考试到点交卷,股票交易精确到毫秒撮合…… 在 Web2 世界里,软件系统同样靠精准的时间戳来自动执行任务,比如定时扣款、会员到期、订单结算,这一切都建立在可信的时间基础上。但到了 Web3 世界里,时间居然能被“调表”!
闪电贷攻击是个啥东东? 先打个生活中的比方: 想象一下你去银行借了一大笔钱,条件是得在离开柜台前还清。你坐在柜台前,拿这钱顺手跟旁边的人做了笔生意,赚了差价,再把钱还给银行,几分钟倒腾下来,口袋里就多了利润(当然这种操作是不现实的,这里只是帮助理解闪电贷——就是速借速还)。 闪电贷(Flash Lo