Unphishable防钓鱼攻防挑战
挑战地址:unphishable.io
初级
No.0x0001 Web3 钱包设置指s南
第一关就是创建一个MetaMask的小狐狸钱包,在这之前我就有一个钱包里。这关也重点强调了助记词的重要性。非常重要!!千万不能泄露,接下来一关我就中招了!
安全存储助记词方法附上:
- 将其写在纸上(多份副本)
- 存放在安全、防水、防火的地方
- 考虑使用金属备份解决方案以提高耐久性
- 切勿以数字方式存储(不要拍照、不要云存储、不要电子邮件)
- 切勿与任何人分享,包括”支持人员”
还有一个点就是要领取Holesky的测试币,找了几个水龙头都不是很好弄,看群里的小伙伴都是用Google水龙头领测试币,但是我的就用不了,Google的水龙头搞抽象,无法领取,问了群里大佬说他是这样的。不过最后找到一个好用的水龙头,不仅之前领了Sepolia的测试币,现在也领了Holesky的测试币,附上地址
https://www.alchemy.com/faucets/ethereum-sepolia
但是应该是需要eth主网上有一定量的以太币(0.001 ETH)才能在这里领测试币
领完测试币,连接钱包,这关就结束了
No.0x0002 钱包恢复助手
这是一个ai对话界面,功能是钱包恢复,然后让你输入你的助记词,我看到了这样的字样 “请放心,这是一个安全的环境,您的信息将被加密处理。”然后还真的去找了我的助记词给他添上了,我还特意用ai查了这个平台是否靠谱,结果输入进入,告诉我我被钓鱼了。身为一个学安全的人,我自认为安全意识还是有点的,但是也可能是我还没意识到这个挑战是在做个什么,所以被骗+1。
所以!!永远不要向任何人透露您的助记词,无论他们声称是谁
No.0x0003 USDC Permit 钓鱼模拟
这一个内容就到了我要学习的地方,之前没听过。开始学!
因为一开始还不知道所以还是点了授权,被骗+1
知识点:
通过使用 EIP-2612 的
permit签名功能,用户可以在不预先进行链上授权交易(即无需支付 Gas 费)的情况下,授权第三方合约使用自己的代币(如 USDC、DAI 等)。这是以太坊上一种更高效、更省 Gas 的授权方式,尤其适合优化用户体验(UX)和批量操作。1. EIP-2612
permit的核心机制(1)传统授权(
approve)的问题
- 需要发送一笔链上交易(支付 Gas)。
- 用户必须提前授权,导致交互流程变长。
(2)
permit的改进✅ 免 Gas 授权:用户签署一条链下消息(签名),第三方合约可凭此签名直接获得代币使用权,无需用户预先发送
approve交易。
✅ 单次有效:签名可设置过期时间(deadline),避免长期风险。
✅ 兼容 ERC-20:无需修改代币标准,只需代币合约实现permit函数。2.
permit的工作原理(1)用户签署离线消息
用户对以下数据进行签名(使用 EIP-712 结构化签名):
1
2
3
4
5
6
7 {
owner: "0x用户地址", // 代币持有者
spender: "0x合约地址", // 被授权方(如 Uniswap)
value: 1000000, // 授权数量(如 1 USDC = 1e6)
nonce: 123, // 防止重放攻击
deadline: 1698765432 // 过期时间(UNIX 时间戳)
}(2)第三方合约提交签名
合约调用代币的
permit方法,传入签名数据:
1 token.permit(owner, spender, value, deadline, v, r, s);
v, r, s是签名的 ECDSA 参数。- 代币合约验证签名,并更新授权状态(相当于执行了
approve)。3. 安全注意事项
✅ 优点
- 节省 Gas:用户只需签一次名,无需单独发
approve交易。- 更短交互流程:适合钱包内直接签名授权。
⚠️ 风险
- 签名钓鱼:恶意 DApp 可能诱导用户签署高额
permit(检查value和spender)。- 过期时间失效:若
deadline过长,签名可能被重复使用(建议设置较短有效期)。
我的理解就是 授权第三方合约使用自己的代币,然后可以省去gas费用
这个签名将允许攻击者控制您的 USDC 代币!通过使用 EIP-2612 permit 签名,攻击者可以:
- 获得对您所有 USDC 的完全访问权限
- 在未来任何时间转移您的代币
- 无需您进一步批准即可花费您的资金
安全检查要点
检查 Permit 类型,了解授权范围
验证 Spender 地址是否为可信来源
注意授权金额,警惕无限制授权
确认网站来源的可信度
所以此处不能进行授权
No.0x0004 专属代币空投
此交易实际上是向合约 0xbe535a82f2c3895bdaceb3ffe6b9b80ac2f832a0 发送 0.5 ETH,而不是领取任何代币。
函数选择器 0x5fba79f5 调用了一个名为 SecurityUpdate() 的函数,该函数可能会将您的资金转移给攻击者。
在真实情况下,永远不要在不了解交易内容的情况下签署交易!
No.0x0005 USDT 授权钓鱼模拟
挑战:请小心真实的授权请求
授权风险提示:
- 除了 approve 外,也要当心 increaseAllowance 函数
- increaseAllowance 同样可以增加代币授权额度
- 一些钓鱼网站会通过这个方式来掩饰其真实意图
💡 安全建议:永远不要给不明来源的网站无限授权!
increaseAllowance是 ERC-20 代币标准 中的一个扩展函数,用于安全地增加某个地址(spender)的代币授权额度。它是对传统approve方法的改进,旨在避免潜在的安全风险(如前端竞态条件攻击)。传统
approve的问题
竞态条件(Race Condition)
如果用户连续发起两笔approve交易(例如先授权 100,再改为 200),矿工可能以相反顺序打包交易,导致最终授权额度被意外覆盖(变成 100 而非 200)。solidity
1
2
3 // 危险操作:可能被覆盖
approve(spender, 100); // 交易1
approve(spender, 200); // 交易2
increaseAllowance的解决方案✅ 增量调整:基于当前授权额度增加数值,而非直接覆盖。
✅ 安全操作:避免竞态条件,适合前端交互。
No.0x0006 假冒代币空投钓鱼攻击
挑战:识别真假域名
- 场景描述
某天,你收到一封电子邮件,声称你有资格获得UNI代币的空投!邮件中包含一个链接,引导你到一个看似合法的网站。你点击了该链接,并看到以下交易记录:
仔细观察上面的交易记录。这种钓鱼攻击通常利用视觉上相似的字符(如用数字”1”替代字母”i”)来欺骗用户。
安全建议
- 始终逐字符检查域名
- 警惕使用数字代替字母的域名(例如,用’1’代替’i’)
- 收藏官方网站而不是点击电子邮件中的链接
- 使用密码管理器,它只会在合法域名上自动填充
- 安装警告钓鱼网站的浏览器扩展
No.0x0007 超高收益质押平台
挑战:了解如何识别可疑的质押合约
某些可疑的质押合约可能会引导您进行 approve 授权,表面上看似只为了质押特定金额,实际上却请求对整个代币余额的完全访问权限。一旦授权成功,攻击者即可任意转走您的所有资产。
如上图,存在approve方法需要谨慎!!
approve是 ERC-20 代币标准 中的一个核心方法,用于授权另一个地址(通常是智能合约)代表你支配一定数量的代币。它是 DeFi(去中心化金融)交互的基础,但错误使用可能导致资金风险。
No.0x0008 Telegram 代币钓鱼挑战
挑战:学习识别和避免 Telegram 上的助记词钓鱼攻击
风险点依旧是提供助记词,所以千万不要给别人提供自己钱包的助记词!!!
No.0x0009 Punycode 钓鱼攻击
挑战:识别 Punycode 钓鱼域名
- 场景描述
您收到一封电子邮件,声称是来自 Trezor(一个知名的硬件钱包品牌)的重要安全更新通知。电子邮件中的链接看起来像是指向官方 Trezor 网站,但实际上是一个精心伪装的钓鱼网站。
1 | trẹzor.com |
什么是 Punycode?
Punycode 是一种编码系统,允许将非 ASCII 字符(如西里尔字母、中文等)转换为 ASCII 字符,以便在域名系统中使用。攻击者经常利用视觉上相似的字符创建看似合法的域名。 例如,某些特殊字符看起来与拉丁字母几乎相同,但它们是不同的字符: 你可以使用 Punycoder 来转换 Unicode 和 Punycode 域名。
显示域名 实际 Punycode 域名 说明 trẹzor.com xn–trzor-o51b.com 使用特殊字符替换了某些字母
所以 trezor的官方域名应该为trezor.io
防御方式:
- 直接在浏览器中输入已知的官方网址,而不是点击电子邮件中的链接
- 使用书签保存常用的重要网站
- 安装可以检测 Punycode 域名的浏览器扩展
- 注意域名中不寻常的字符或拼写
No.0x0010 剪贴板钓鱼挑战
挑战:识别剪贴板型钓鱼攻击
- 场景描述
您需要转账 1 ETH 到朋友的钱包。他们已经分享了他们的钱包地址,您正在使用加密货币转账界面进行转账。
复制粘贴之后,发现钱包地址与之前的不同了
- 攻击原理:
- 攻击者创建一个看似合法的网站
- 当你点击”复制”按钮时,恶意JavaScript代码会秘密替换复制的地址
- 如果粘贴后没有验证地址,你可能会将资金发送给攻击者
防御方式:
粘贴后务必再次检查地址
考虑使用带有地址验证的硬件钱包
在电脑上复制敏感信息(如钱包地址)时要特别小心 - 即使使用Ctrl+C,恶意软件也可能篡改你的剪贴板内容
No.0x0011 Google 搜索广告钓鱼攻击
挑战:识别 Google 搜索广告钓鱼
- 场景描述
您想要使用 Lido Finance 质押 ETH。在 Google 上搜索”Lido Finance”时看到这些结果。您能识别出哪个是合法网站,哪个是钓鱼网站吗?
看第一条的左上角有一个Ad,是广告的意思,怀疑是钓鱼网站
辨别网站真伪的方法:
- 攻击者经常购买与热门加密货币项目相关的 Google 广告,这些广告会出现在搜索结果的顶部,标记为”赞助”或”广告”。
- 这些广告通常使用与官方网站非常相似的域名,但有细微的差别,例如:
- 使用不同的顶级域名(如用 .is 代替 .fi)
- 在域名中添加或删除字母
- 使用连字符或用数字替换字母
- 当用户点击这些广告时,他们会被引导到看起来与官方网站完全相同的钓鱼网站,这些网站旨在窃取资金或私钥。
No.0x0012 Microsoft Teams 钓鱼攻击
本页面模拟攻击者如何创建虚假的 Microsoft Teams 网站来分发恶意软件和窃取敏感信息。
本示例中的钓鱼指标
- 可疑 URL:注意域名是 “microsoft-meet.com” 而不是 “teams.microsoft.com”
- 简化界面:与真实的 Teams 登录相比,虚假页面具有简化的界面
- 缺乏安全功能:缺少 Microsoft 通常包含的安全元素
- 加入按钮:突出的 “在 Teams 应用程序中加入” 按钮可能会导致恶意软件下载
安全提示
- 在输入凭据或下载软件之前,始终验证 URL。
- 仅从官方 Microsoft 网站或应用商店下载 Microsoft Teams。
- 对任何异常的安装过程或请求保持警惕。
- 如果您下载了可疑的软件包,可以在打开之前使用 VirusTotal.com 进行扫描。但请注意,即使没有检测到威胁(0 检测),也不能保证绝对安全。
Microsoft Teams 钓鱼攻击的工作原理
攻击者创建令人信服的 Microsoft Teams 登录页面或更新通知的复制品,诱骗用户下载恶意软件或泄露其凭据。这些攻击变得越来越复杂,针对个人和组织。
风险1:数据泄露
通过虚假 Teams 更新安装的恶意软件可以访问您设备上的敏感文件,可能导致未经授权访问个人和公司数据。这可能导致知识产权盗窃、机密信息泄露和合规违规。
风险2:凭据盗窃
当用户在虚假 Teams 网站上输入其 Microsoft 凭据时,攻击者会捕获这些信息以获取对电子邮件、OneDrive、SharePoint 和其他 Microsoft 365 服务的访问权限。这可能导致账户被接管并进一步危及组织资源。
风险3:钱包资金耗尽
对于从同一设备访问加密货币钱包或金融服务的用户,通过虚假 Teams 更新安装的恶意软件可能包含扫描钱包凭据的功能,导致数字资产被盗。
No.0x0037 虚假扩展程序钓鱼
挑战:识别出虚假扩展程序
扩展程序安全最佳实践:
- 始终从官方网站下载:直接访问官方网站(例如 metamask.io),而不是在扩展商店中搜索。虚假或恶意扩展程序可能出现在搜索结果中,甚至出现在官方扩展商店中,有时会模仿真实扩展程序的名称、图标或品牌。通过访问官方网站,您可以确保获得正宗、安全的版本,避免落入可能危及您安全和资产的仿冒或诈骗列表的陷阱。
- 检查用户数量和评论:官方扩展程序拥有大量用户和普遍积极的评论
- 仔细阅读权限:只授予必要的权限
- 保持扩展程序更新:定期更新通常包含安全补丁
- 删除未使用的扩展程序:通过删除不再使用的扩展程序来减少攻击面
中级
No.0x0013 TransferFrom 零值转账钓鱼挑战
挑战:学习识别和避免零值转账诈骗

发现我的钱包地址和发送方发送到接收方的地址不同
1 | 我的钱包: 0x1234ab7890123456781232345678901234567890 |
诈骗者经常使用零值转账来创建与伪造地址的虚假交易历史,让受害者以为该地址为可信地址,从而做到地址混淆,让受害者向攻击方地址进行转账。
如何保护自己:
- 始终验证完整地址,而不仅仅是开头和结尾
- 警惕看起来与您之前交互过的地址相似的地址
- 仔细检查交易历史,包括零值转账
- 使用钱包的地址簿功能标记可信地址
- 考虑使用带有地址验证功能的硬件钱包
诈骗者利用“零值转账”伪造交易历史的原理及防范措施
1. 攻击原理
诈骗者通过发送 零值转账(0 ETH 或 0 代币) 到 伪造地址,目的是在区块链浏览器(如 Etherscan)上制造虚假的交易历史,诱导受害者误认为该地址是可信的。具体手法如下:
- 伪造交易历史:
攻击者向目标地址(如0x123...abc)发送多笔0 ETH转账,使该地址在 Etherscan 上显示与“知名地址”(如交易所、项目方)有交互记录。
- 例如:攻击者可能伪造一个与 Uniswap 路由合约 相似的地址,并提前用零值转账制造“活跃记录”。
- 地址混淆(Address Poisoning):
攻击者生成一个与受害者常用地址 开头和结尾相似 的地址(如0x1234...5678vs0x1234...9876),并发送零值转账,使受害者在复制粘贴时误选错误地址。- 诱导转账:
当受害者看到该地址有“历史交易”时,可能误以为是合法地址,从而将资金转入诈骗者的钱包。