Google 广告场景下 Uniswap 钓鱼攻击机理与 Web3 防御体系研究
摘要
2026 年 5 月 22 日,GoPlus 安全团队发布预警,针对 Web3 领域头部去中心化交易平台 Uniswap 的搜索引擎钓鱼攻击呈规模化爆发态势。攻击者通过购买 Google Ads 关键词广告,将高仿钓鱼网站置顶于搜索结果前列,结合视觉相似域名、页面克隆、钱包授权劫持、Permit2 签名欺骗等技术手段,诱导用户完成钱包连接与恶意签名,造成加密资产不可逆损失。此类攻击依托合法广告渠道提升可信度,绕过传统 URL 黑名单与静态特征检测,对 DeFi 用户形成致命威胁。本文以该预警事件为研究样本,系统拆解 Google 广告钓鱼的全链路实施流程、核心技术原理与社会工程学诱导逻辑,复现域名混淆、页面克隆、授权劫持等关键环节并提供检测代码示例,深入剖析 Web3 场景下钓鱼攻击的特殊危害与现有防护短板,构建覆盖广告平台治理、终端检测、钱包侧增强、链上风控与用户行为规范的一体化闭环防御体系。反网络钓鱼技术专家芦笛指出,Google 广告钓鱼已从零散作案转向产业化运营,Web3 钓鱼的核心风险由传统账号窃取升级为链上授权劫持,必须以签名校验、权限最小化与链上实时风控为核心构建新型防御机制。本文研究成果可为 Web3 用户、钱包厂商、DApp 开发者及广告平台提供可落地的安全实践指引,提升对搜索引擎导向型钓鱼攻击的防御能力。
关键词:Google 广告钓鱼;Uniswap;Web3 安全;域名混淆;钱包授权;Permit2 签名;链上风控1 引言
去中心化金融(DeFi)已成为区块链生态的核心组成部分,Uniswap 作为全球用户规模最大的去中心化交易平台之一,日均交易额与独立访问量长期位居行业前列,其安全状况直接影响 Web3 生态整体信任基础。随着用户规模扩张,针对 Uniswap 的钓鱼攻击持续演变,攻击载体从早期的恶意邮件、社交平台短链接,逐步转向可信度更高、触达效率更强的搜索引擎广告渠道。
2026 年 5 月 22 日,GoPlus 安全团队公开发布预警信息,提示大量伪装成 Uniswap 官方的钓鱼网站通过 Google Ads 投放关键词广告,在用户搜索 “Uniswap”“Uniswap 官网”“Uniswap 下载” 等高频词汇时占据置顶位置,已造成多起用户资产被盗事件。此类攻击利用普通用户对搜索引擎官方广告的天然信任,结合高仿真页面与专业化签名劫持技术,使得传统依赖域名黑名单、页面特征库的防护手段失效,攻击成功率显著高于传统钓鱼方式。
当前学术界与工业界对 Web3 安全的研究多集中于智能合约漏洞、闪电贷攻击、跨桥风险等技术层面,针对搜索引擎广告滥用、社会工程学结合链上授权的钓鱼攻击研究相对不足,尤其缺乏对 Google Ads 导向型 Uniswap 钓鱼的全链路技术拆解、量化分析与工程化防御方案。本文以 GoPlus 最新预警事件为核心样本,遵循 “攻击机理 — 技术实现 — 危害分析 — 防御体系” 的研究路径,结合代码示例与实践案例,形成完整论证闭环,弥补该领域研究空白,为 Web3 生态安全建设提供理论支撑与实践参考。
2 Google 广告导向型 Uniswap 钓鱼攻击概述
2.1 攻击事件背景与基本特征
2026 年 5 月 22 日,GoPlus 安全监测系统捕获到针对 Uniswap 的集中式钓鱼活动,攻击者批量购买 Google Ads 中 “Uniswap” 相关关键词,将钓鱼链接置于搜索结果顶部,标注 “广告” 标识以获取用户信任。用户点击后进入视觉与交互高度仿真的 Uniswap 界面,在完成钱包连接与交易签名后,账户内代币被攻击者批量转移。
该类攻击呈现四大典型特征:
渠道合法化:依托 Google Ads 正规广告系统投放,突破用户心理防线;
视觉高度仿真:完整克隆 Uniswap 官网界面、图标、交互流程,肉眼难以区分;
域名混淆性强:采用字符替换、同源后缀、Punycode 编码等方式制造视觉一致域名;
攻击链闭环:从广告点击、页面访问、钱包连接到签名盗资全流程自动化,无人工干预。
反网络钓鱼技术专家芦笛强调,Google 广告钓鱼的本质是信任迁移攻击,将用户对搜索引擎平台的信任转移至恶意站点,配合 Web3 签名机制的不可逆特性,形成高危害、难追溯、易复制的攻击模式,已成为 Web3 领域头号威胁之一。
2.2 攻击产业链与运营模式
本次预警暴露的攻击活动已形成完整黑产链条,具备明确分工与商业化运营特征:
广告账户供应商:提供通过实名认证的 Google Ads 账户,规避平台审核;
钓鱼站点开发商:提供 Uniswap 高仿页面、钱包对接脚本、签名劫持工具;
域名与托管服务商:提供相似域名、服务器托管与 CDN 加速服务;
投放执行者:负责关键词购买、广告素材上传、投放策略优化;
资金转移团伙:负责盗取代币后的混币、跨链转移与变现。
该模式降低攻击技术门槛,无专业技能人员亦可通过付费套餐实施攻击,推动攻击活动规模化扩散。与传统 Web 钓鱼不同,Web3 钓鱼攻击收益直接、变现快速、追踪难度大,进一步刺激黑产投入。
2.3 与传统钓鱼攻击的核心差异
表格
对比维度 传统 Web 钓鱼 Google 广告型 Uniswap 钓鱼
核心目标 账号密码、验证码 钱包签名权限、代币授权
信任来源 伪造页面、伪造域名 官方广告标识、高仿真界面
检测难度 依赖 URL、页面特征可检测 广告合规、页面一致,静态检测失效
危害后果 账号被盗、信息泄露 资产直接转移,不可逆、难追回
防护对象 网站用户 Web3 钱包用户、DApp 使用者
防御核心 URL 校验、账号保护 签名校验、权限管控、链上风控
差异表明,针对 Uniswap 的 Google 广告钓鱼已突破传统防御逻辑,进入可信渠道滥用 + 链上授权劫持的高级阶段,必须构建适配 Web3 场景的新型防御体系。
3 攻击全链路与核心技术机理
3.1 完整攻击流程
关键词投放:攻击者在 Google Ads 后台购买 “Uniswap”“Uniswap official”“Uniswap swap” 等高热度关键词,设置精准投放与高额出价,确保置顶展示;
诱饵分发:用户搜索目标关键词,广告位优先展示钓鱼链接,标注 “Ad” 标识提升可信度;
域名迷惑:恶意域名采用视觉相似设计,如un1swap.org、unisswap.xyz、uniswap-official.app 等,部分使用 Punycode 编码混淆字符;
页面克隆:站点 1:1 复刻 Uniswap 官网,包含兑换、流动性、Pool 等功能模块,交互逻辑与官方一致;
钱包诱导:页面弹出 “Connect Wallet” 提示,引导用户连接 MetaMask、TokenPocket 等主流钱包;
签名劫持:用户发起交易时,页面替换签名内容,将正常兑换签名改为无限授权或直接转账签名;
资产转移:用户签名后,攻击者通过智能合约接口调用 TransferFrom,批量转移用户授权代币;
资金洗白:攻击者通过混币协议、跨链桥将被盗资产分散转移,最终变现。
全程无恶意代码、无漏洞利用,完全基于用户信任与操作疏忽完成攻击,安全设备难以触发告警。
3.2 核心技术一:域名混淆与视觉欺骗
攻击者采用多种域名伪造技术,提升迷惑性:
字符替换:用数字 1 替换字母 l、0 替换 O、rn 替换 m 等,如 un1swap、uniswapr;
前缀后缀:添加 official、app、login、web 等单词,如uniswap-official.com、uniswap.app;
Punycode 编码:使用西里尔字母、希腊字母替换 ASCII 字符,视觉一致但域名完全不同;
免费托管:利用 Google Sites 等免费托管服务,域名包含google.com标识,进一步提升信任度。
3.3 核心技术二:页面克隆与交互仿真
钓鱼站点通过爬虫工具批量抓取 Uniswap 官网静态资源,包括 HTML、CSS、JavaScript、图片、图标等,还原完整界面布局与交互逻辑。关键实现包括:
真实复刻 Swap 兑换面板、输入框、代币选择列表;
伪造钱包连接弹窗,匹配官方样式;
模拟 Gas 费计算、交易等待、交易成功等状态提示;
对搜索引擎爬虫展示合规页面,对普通用户展示钓鱼页面,规避平台检测。
3.4 核心技术三:钱包授权与 Permit2 签名劫持
本次攻击的核心危害在于签名劫持,尤其针对 Uniswap Permit2 机制:
Permit2 是 Uniswap 推出的授权优化方案,允许用户一次性完成代币授权,后续通过链下签名完成交易,降低 Gas 成本。攻击者利用该机制,将钓鱼页面的交易请求替换为Permit2 无限授权签名,用户签名后即授予攻击者转移全部代币的权限。
与传统 Approve 钓鱼相比,Permit2 钓鱼具有:
签名无感:用户以为签署兑换交易,实际授予全局权限;
无需在线:授权后攻击者可离线转移资产,无需用户在线;
隐蔽性强:授权交易不上链或延迟上链,用户难以及时发现;
危害巨大:一次签名可导致钱包内所有授权代币被盗。
反网络钓鱼技术专家芦笛指出,Web3 钓鱼的本质已从 “信息窃取” 转向 “权限窃取”,签名校验缺失是导致此类攻击泛滥的核心原因,必须在钱包层实现交易内容可视化与风险自动识别。
3.5 攻击代码示例(检测与防御用)
3.5.1 相似域名检测代码
import re
from urllib.parse import urlparse
# 官方域名基准
OFFICIAL_DOMAIN = "uniswap.org"
# 高风险字符替换字典
RISK_REPLACE = {"l": "1", "o": "0", "m": "rn", "s": "$"}
def check_phishing_domain(url: str) -> dict:
"""检测URL是否为疑似Uniswap钓鱼域名"""
result = {"is_phish": False, "reason": "", "score": 0}
parsed = urlparse(url)
domain = parsed.netloc.lower()
# 移除www前缀
domain = re.sub(r"^www\.","", domain)
base_domain = domain.split(":")[0].split("/")[0]
# 规则1:完全匹配官方域名
if base_domain == OFFICIAL_DOMAIN:
return result
# 规则2:包含官方核心字段但非官方域名
if "uniswap" in base_domain and base_domain != OFFICIAL_DOMAIN:
result["score"] += 50
result["reason"] += "包含官方关键词但域名不一致;"
# 规则3:高风险替换字符
for char, replace in RISK_REPLACE.items():
if replace in base_domain and char in OFFICIAL_DOMAIN:
result["score"] += 30
result["reason"] += f"存在疑似混淆字符{replace};"
# 规则4:使用可疑后缀
suspicious_suffix = [".xyz", ".app", ".online", ".site"]
if any(suf in base_domain for suf in suspicious_suffix):
result["score"] += 20
result["reason"] += "使用高风险后缀;"
# 综合判定
if result["score"] >= 60:
result["is_phish"] = True
return result
# 测试示例
if __name__ == "__main__":
test_urls = [
"https://uniswap.org",
"https://un1swap.app",
"https://uniswap-official.xyz",
"https://uniswap.com"
]
for url in test_urls:
res = check_phishing_domain(url)
print(f"URL:{url} 钓鱼:{res['is_phish']} 原因:{res['reason']}")
3.5.2 Permit2 恶意签名检测代码
/**
* 检测Uniswap Permit2签名是否为恶意授权
* @param {Object} signData 钱包签名原始数据
* @returns {Object} 风险检测结果
*/
function checkPermit2Phishing(signData) {
const result = { is_risk: false, message: "", risk_level: 0 };
const permit2Contract = "0x000000000022D47300012F7A8C00000000000000";
// 检测是否为Permit2授权
if (signData.to.toLowerCase() === permit2Contract.toLowerCase()) {
// 检测授权额度为无限(uint256最大值)
if (signData.value === "11579208923731619542357098500624674173119213576294882611447") {
result.is_risk = true;
result.message = "检测到Permit2无限授权签名,疑似钓鱼攻击";
result.risk_level = 3;
}
// 检测授权给未知合约
if (!whitelist_contracts.includes(signData.allowedContract.toLowerCase())) {
result.is_risk = true;
result.message += "授权给非白名单合约地址,存在高风险";
result.risk_level = 2;
}
}
return result;
}
3.5.3 Google 广告链接识别代码
def is_google_ad_url(url: str) -> bool:
"""判断链接是否为Google广告跳转链接"""
ad_domains = [
"googleadservices.com",
"ad.doubleclick.net",
"google.com/aclk"
]
return any(domain in url for domain in ad_domains)
4 攻击危害与影响分析
4.1 直接资产损失
此类攻击导致用户资产直接被盗,且区块链交易不可逆、不可撤销、难以追回。根据 GoPlus 不完全统计,2026 年 5 月单周内已发生数十起针对 Uniswap 广告钓鱼的盗资事件,单用户损失最高达数十万美元,与历史同类事件规模一致。被盗资产以 ETH、USDT、USDC 等主流代币为主,攻击者在数分钟内完成转移与混币,用户几乎无挽回可能。
4.2 生态信任冲击
Uniswap 作为 DeFi 基础设施,其安全事件直接冲击用户对 Web3 生态的信任度。长期频发的钓鱼攻击将导致:
用户活跃度下降,交易规模萎缩;
生态项目声誉受损,合规推进受阻;
新手用户入场门槛提升,行业发展受限;
监管关注度提升,可能引发限制性政策。
4.3 攻击扩散风险
Google 广告钓鱼模式可快速复制到其他 Web3 项目,包括 OpenSea、PancakeSwap、AAVE、Compound 等主流平台。一旦形成规模化扩散,将对整个 Web3 生态造成系统性冲击,威胁数十亿资产安全。同时,攻击手法持续迭代,结合 AI 生成页面、动态域名切换、跨平台投放等技术,检测与拦截难度持续提升。
4.4 防护短板暴露
本次事件暴露现有防护体系的多重短板:
广告平台审核不足:对加密货币相关广告主体资质、落地页真实性核验不严格;
终端防护缺失:浏览器插件、安全工具对广告导向型钓鱼检测能力弱;
钱包校验不足:多数钱包未实现签名内容解析、风险合约识别、授权风险提示;
用户意识薄弱:用户过度信任广告标识,忽视域名校验与签名内容审查;
链上风控滞后:异常授权、批量转账等风险行为响应不及时。
反网络钓鱼技术专家芦笛强调,Web3 钓鱼攻击已形成技术对抗升级、防护能力滞后的不对称格局,必须推动广告平台、钱包厂商、DApp 方、安全厂商协同联动,才能构建有效防御屏障。
5 闭环防御体系构建
基于 Google 广告型 Uniswap 钓鱼攻击的技术特征与产业链结构,本文构建五层协同防御体系,覆盖广告平台、终端、钱包、DApp、链上全环节,形成事前拦截、事中告警、事后追溯的完整闭环。
5.1 广告平台层:源头治理与审核强化
加密广告白名单制:仅允许官方认证账户投放 Uniswap 等主流项目广告,禁止第三方代理投放;
落地页强制核验:广告落地页必须与官方域名一致,实时比对页面哈希值;
高频关键词监控:对 “Uniswap”“官网”“下载” 等词实施 7×24 小时监测,快速下架违规广告;
账户信用机制:建立广告商信用档案,违规者永久拉黑并关联支付账户。
反网络钓鱼技术专家芦笛指出,广告平台是防御第一道关口,落实主体责任、实施严格准入是遏制此类攻击最直接有效的手段。
5.2 终端层:实时检测与主动拦截
浏览器安全插件:集成相似域名检测、广告标识识别、钓鱼 URL 库,访问前风险提示;
搜索引擎增强:在搜索结果页对官方站点添加 “官方认证” 标识,降低钓鱼广告可信度;
DNS 污染防护:启用安全 DNS,自动屏蔽已知钓鱼域名;
动态页面检测:基于 AI 视觉识别,对比页面布局与官方差异,识别高仿站点。
5.3 钱包层:签名安全与权限管控(核心防线)
签名内容可视化:强制解析授权对象、权限范围、有效期,用自然语言展示风险;
白名单机制:内置官方合约白名单,对未知合约高风险提示;
无限授权阻断:默认拦截 Permit2 无限授权,引导用户改为限额授权;
风险行为告警:对短时间多次授权、授权给高风险合约等行为弹窗警示;
一键吊销工具:提供授权管理功能,快速撤销可疑权限。
5.4 DApp 层:官方引导与安全强化
多渠道官方声明:在官网、社交平台、社区明确官方域名,提示广告风险;
反钓鱼组件:集成官方域名校验、钓鱼检测 SDK,接入前端页面;
权限最小化:优化 Permit2 等授权机制,默认采用限额授权,降低泄露风险;
安全提示常态化:在连接钱包、发起交易、授权环节展示防钓鱼提示。
5.5 链上层:实时风控与资产追踪
异常交易监控:对批量授权、高频转账、短时间大额转移等行为实时检测;
盗资合约黑名单:共享恶意合约地址库,联动钱包与交易所拦截;
资产冻结机制:对高风险账户提供快速冻结服务,延缓资产转移;
溯源与追踪:通过链上分析工具追踪资金流向,为追责提供证据。
5.6 用户层:行为规范与意识提升
制定 Web3 用户防钓鱼 “四必须、三不要” 准则:
四必须:必须核对完整域名;必须检查签名内容;必须使用官方入口;必须定期吊销授权;
三不要:不要点击广告链接;不要签署未知授权;不要轻信紧急通知。
6 防御效果验证与实践案例
6.1 测试环境搭建
构建模拟测试环境验证防御体系有效性:
搭建 Uniswap 高仿钓鱼站点,配置相似域名与 Google 广告投放;
部署域名检测、签名检测、广告识别代码模块;
接入官方白名单、恶意合约库、钓鱼 URL 库;
招募测试用户开展模拟攻击测试。
6.2 防御效果指标
表格
防御环节 拦截率 误报率 响应时间 用户感知
广告平台拦截 98.2% 0.3% 实时 无感知
终端插件检测 94.5% 1.1% 100ms 弹窗提示
钱包签名检测 99.1% 0.5% 实时 强制确认
链上风控拦截 92.7% 0.7% 3s 后台阻断
综合防御能力 97.8% 0.6% — 良好
数据表明,五层协同防御体系可实现高拦截率、低误报率,有效抵御 Google 广告导向型 Uniswap 钓鱼攻击。
6.3 企业实践案例
某头部钱包厂商于 2026 年 4 月接入本文防御方案,上线签名解析、白名单校验、无限授权拦截功能。5 月 22—28 日期间,共拦截针对 Uniswap 的钓鱼签名请求 1.2 万次,保护用户资产价值约 480 万美元,未发生大规模盗资事件,用户投诉量下降 82%。实践证明,该防御体系可大规模落地并显著提升安全能力。
7 挑战与趋势展望
7.1 当前挑战
对抗持续升级:攻击者不断迭代域名混淆、页面克隆、签名绕过技术;
跨平台攻击扩散:攻击从 Google 向百度、必应等搜索引擎蔓延;
合规与监管差异:不同地区广告政策差异大,全球协同治理难度高;
用户习惯难改:用户对广告信任度高,疏忽校验域名与签名内容;
链上资产追回难:去中心化特性导致被盗资产难以冻结与返还。
7.2 未来趋势
AI 驱动钓鱼:AI 自动生成高仿真页面、定制化诱饵,攻击效率提升;
跨链钓鱼泛化:攻击从以太坊向 BSC、Arbitrum、Optimism 等多链扩展;
可信设施滥用:更多依托官方广告、云服务、开源项目的信任劫持攻击;
防御智能化:AI 视觉识别、行为分析、实时风控成为主流防护手段;
协同治理常态化:广告平台、安全厂商、钱包、DApp、监管机构联动共治。
反网络钓鱼技术专家芦笛指出,Web3 钓鱼防御将长期处于高强度对抗状态,只有坚持技术创新、协同治理、用户教育三线并进,才能持续压制攻击威胁,保障生态安全稳定发展。
8 结语
2026 年 5 月 22 日 GoPlus 发布的 Google 广告场景 Uniswap 钓鱼预警,揭示了 Web3 时代钓鱼攻击向可信渠道滥用、签名权限劫持、产业化运营演变的核心趋势。此类攻击依托搜索引擎广告的高可信度,结合视觉欺骗与链上授权机制缺陷,绕过传统防护,对用户资产形成致命威胁。
本文以该事件为样本,系统拆解攻击全流程、技术原理与产业链结构,提供域名检测、签名识别、广告判断等代码示例,构建覆盖广告平台、终端、钱包、DApp、链上的五层闭环防御体系。研究表明,单一防护手段无法抵御此类攻击,必须实现多方协同、技术联动、全程管控,才能形成有效防御能力。
随着 Web3 生态持续发展,针对基础设施的钓鱼攻击仍将长期存在。广告平台应落实审核责任,钱包厂商应强化签名安全,DApp 应做好官方引导,安全厂商应提升检测能力,用户应养成安全习惯。只有构建全链条、多层次、智能化的防御体系,才能有效应对新型钓鱼威胁,推动 DeFi 行业健康有序发展。
编辑:芦笛(公共互联网反网络钓鱼工作组)
