Day 14
【实战5.2】钓鱼攻击监控与防护:类型分类与钱包安全PRD
分类Web3钓鱼攻击类型(授权钓鱼/假网站/恶意签名/地址投毒),设计钱包安全防护功能和用户安全教育方案
2026-03-20
实战项目钓鱼攻击安全防护钱包安全授权管理PRD
实战项目 5.2:钓鱼攻击监控与防护
项目信息
项目编号:5.2
所属方向:反欺诈分析
难度:⭐⭐⭐ 进阶
预计时间:4-5小时
前置技能:安全基础(Day 20, 55-56)、UX 设计(Day 52-54)
项目目标
分类 Web3 钓鱼攻击类型,设计钱包安全防护功能
产出清单:
├── ✅ 钓鱼类型分类手册
├── ✅ 钱包安全功能 PRD
└── ✅ 用户安全教育方案
Task 1:钓鱼类型分类手册
六大 Web3 钓鱼类型
类型 1:授权钓鱼(Approval Phishing)— 损失最大
═══════════════════════════════════════════════════════════
方式:诱导用户 approve 恶意合约无限额度
原理:approve(malicious_contract, type(uint256).max)
→ 恶意合约可随时转走你的所有 Token
案例:2024 年多起 NFT 钓鱼,总损失 $100M+
防护:限制授权额度 + 定期检查和撤销授权
═══════════════════════════════════════════════════════════
类型 2:恶意签名(Signature Phishing)— 最隐蔽
═══════════════════════════════════════════════════════════
方式:诱导用户签署看似无害的消息
原理:eth_sign / personal_sign 签署的内容可能是交易授权
Permit 签名 = 无需链上 approve 的授权
案例:Permit2 钓鱼,签名后 Token 被直接转走
防护:签名内容解析 + 风险提示
═══════════════════════════════════════════════════════════
类型 3:假网站(Clone Phishing)— 最常见
═══════════════════════════════════════════════════════════
方式:克隆 Uniswap/OpenSea 等网站,域名微差
案例:uniiswap.com / opensea.io.phishing.com
Google Ads 投放假网站排在搜索第一
防护:域名验证 + 书签访问 + 浏览器插件
═══════════════════════════════════════════════════════════
类型 4:地址投毒(Address Poisoning)
═══════════════════════════════════════════════════════════
方式:向你发送 0 值交易,地址首尾和你常用地址相似
原理:用户复制交易历史中的地址时复制到假地址
案例:2024 年某用户因此损失 $6,800 万 WBTC
防护:完整地址校验 + 地址簿功能
═══════════════════════════════════════════════════════════
类型 5:Discord/Telegram 社工
═══════════════════════════════════════════════════════════
方式:假冒管理员 DM → 引导到钓鱼网站
假 Mint 公告 → 钓鱼合约
案例:Bored Ape / Moonbirds 等社区钓鱼
防护:不点击 DM 链接 + 仅通过官方渠道操作
═══════════════════════════════════════════════════════════
类型 6:恶意空投(Airdrop Scam)
═══════════════════════════════════════════════════════════
方式:向你钱包空投未知 Token → 交互时触发恶意合约
原理:Token 合约的 transfer 函数中嵌入恶意逻辑
案例:大量 BSC 空投骗局
防护:不交互未知 Token + 隐藏可疑资产
═══════════════════════════════════════════════════════════
损失统计与趋势
| 类型 | 2023 损失 | 2024 损失 | 趋势 | 检测难度 |
|---|---|---|---|---|
| 授权钓鱼 | $374M | $500M+ | ↑ | 中 |
| 恶意签名 | $50M | $200M+ | ↑↑↑ | 高 |
| 假网站 | $100M | $80M | ↓ | 低 |
| 地址投毒 | $20M | $100M+ | ↑↑ | 低 |
| 社工 | $50M | $40M | → | N/A |
| 恶意空投 | $30M | $20M | ↓ | 低 |
Task 2:钱包安全功能 PRD
PRD:WalletShield — 钱包安全防护层
产品定位:为 DeFi 用户提供交易前的安全检查层
集成方式:浏览器插件 / 钱包内置模块 / SDK
核心功能
功能 1:交易模拟预览
═══════════════════════════════════════════════════════════
用户发起交易 → 在弹窗中显示:
├── 你将花费:100 USDC
├── 你将收到:0.05 ETH
├── 授权变更:无 / 新增 approve XXX 合约
├── 风险提示:🟢 安全 / 🟡 注意 / 🔴 危险
└── "这笔交易和你预期的一样吗?"
触发场景:
├── 所有合约调用
├── 所有 approve 操作
└── 所有签名请求
═══════════════════════════════════════════════════════════
功能 2:授权管理面板
═══════════════════════════════════════════════════════════
├── 展示所有当前授权(Token + 合约 + 额度)
├── 风险标记(未知合约 / 无限额度 / 长期未用)
├── 一键撤销高风险授权
├── 定期提醒:"你有 3 个高风险授权待清理"
└── 类似 Revoke.cash 但集成在钱包内
═══════════════════════════════════════════════════════════
功能 3:地址验证
═══════════════════════════════════════════════════════════
├── 发送前:显示完整地址 + 高亮首尾
├── 已知地址:显示标签("你之前转过的地址")
├── 可疑地址:与地址投毒库比对 → 红色警告
├── 合约地址:显示合约信息 + 是否验证
└── 地址簿:保存常用地址,减少手动输入
═══════════════════════════════════════════════════════════
功能 4:签名解析
═══════════════════════════════════════════════════════════
├── 将 eth_sign / personal_sign 内容翻译为人类语言
├── Permit 签名 → 显示"你正在授权 X 合约花费 Y Token"
├── 危险签名 → 红色警告 + 阻止确认
└── 未知签名类型 → 黄色提醒
═══════════════════════════════════════════════════════════
技术实现优先级
| 功能 | 优先级 | 开发周期 | 用户价值 |
|---|---|---|---|
| 交易模拟预览 | P0 | 3 周 | 极高(防止 80% 钓鱼) |
| 签名解析 | P0 | 2 周 | 极高(防止 Permit 钓鱼) |
| 授权管理面板 | P1 | 2 周 | 高(清理历史风险) |
| 地址验证 | P1 | 1 周 | 高(防止地址投毒) |
Task 3:用户安全教育方案
分层教育策略
Level 0:零门槛提示(所有用户)
═══════════════════════════════════════════════════════════
├── 首次使用钱包 → 3 页安全指南(30 秒读完)
├── 首次 approve → 解释什么是授权 + 风险
├── 高风险操作 → 弹窗教育("你知道这意味着什么吗?")
└── 定期安全报告 → "本月你撤销了 2 个高风险授权"
═══════════════════════════════════════════════════════════
Level 1:情境教育(活跃用户)
═══════════════════════════════════════════════════════════
├── 当新钓鱼手法出现时 → 推送安全通知
├── 当用户即将交互可疑合约 → 展示同类骗局案例
├── 月度"安全评分"→ 激励安全行为
└── 社区安全讨论区 → 互相预警
═══════════════════════════════════════════════════════════
Level 2:深度内容(进阶用户)
═══════════════════════════════════════════════════════════
├── 审计报告阅读指南
├── 合约代码安全检查清单
├── 高级钱包安全配置教程
└── 安全事件复盘分析
═══════════════════════════════════════════════════════════
安全行为激励
安全评分体系:
+10 分:撤销一个高风险授权
+5 分:使用地址簿转账(vs 手动输入)
+5 分:完成安全教程
+10 分:设置交易模拟为默认开启
+20 分:配置硬件钱包签名
-10 分:忽略红色安全警告
-5 分:授权未知合约无限额度
安全评分 > 80 → 显示"安全达人"徽章
安全评分 < 40 → 推送安全提醒
面试题准备
Q: 设计一个防钓鱼功能,不牺牲用户体验
30 秒版本: 核心是"交易模拟预览" — 用户发起任何交易前,用人类语言显示"你将花费 X / 你将收到 Y / 授权变更 Z"。安全的交易一键确认(零摩擦),可疑的交易增加确认步骤(合理摩擦)。关键是分级提示:🟢 绿色直接过、🟡 黄色多一步确认、🔴 红色强制阻止。这样 95% 正常交易体验不受影响,5% 危险交易被有效拦截。
下一步
完成本项目后,推荐继续:
- 项目 5.3:异常交易监控系统