摘要
随着去中心化金融(DeFi)生态规模迅速扩张,针对用户资产的网络钓鱼攻击呈现高度专业化与平台化趋势。2025年8月,Aave协议在宣布净存款突破600亿美元次日,遭遇大规模谷歌广告钓鱼攻击,攻击者通过购买关键词广告投放伪造的Aave投资平台链接,诱导用户连接加密钱包并授权恶意合约,造成不可逆资产损失。本文以该事件为切入点,系统分析基于搜索引擎广告的DeFi钓鱼攻击技术路径、社会工程策略及现有防护体系的失效原因。研究发现,攻击链融合了品牌仿冒、域名欺骗、即时部署与权限滥用四大核心环节,并利用主流广告平台审核机制的滞后性实现快速扩散。在此基础上,本文提出一套涵盖前端检测、链上监控与用户行为干预的三层防御框架,并提供可部署的技术原型:包括基于浏览器扩展的广告来源验证模块、智能合约权限实时分析脚本,以及自动化钓鱼域名识别与上报工具。实验表明,该框架可在用户点击广告至钱包授权的关键窗口期内有效阻断90%以上的典型攻击。本研究不仅为DeFi用户和项目方提供实操性安全方案,亦对广告平台内容审核机制优化具有参考价值。
关键词:DeFi;钓鱼攻击;谷歌广告;钱包授权;智能合约;权限撤销;区块链安全

1 引言
去中心化金融(Decentralized Finance, DeFi)在过去五年中实现了指数级增长。截至2025年8月,仅Aave协议跨14条区块链的净存款已超过600亿美元,成为首个达到该里程碑的DeFi借贷平台。然而,生态繁荣也吸引了大量针对性网络犯罪活动。与传统金融不同,DeFi交易依赖用户自主管理私钥与钱包授权,一旦操作失误,资金损失通常不可追回。因此,社会工程类攻击——尤其是钓鱼——成为威胁用户资产安全的首要风险。
2025年8月7日,区块链安全公司PeckShield披露一起针对Aave投资者的大规模钓鱼事件。攻击者在谷歌广告平台(Google Ads)购买“aave invest”“aave staking”等高热度关键词,将广告指向精心仿制的Aave前端界面。用户点击后被诱导连接MetaMask等钱包,随后恶意网站请求“无限授权”(Infinite Approval)以转移代币。由于广告出现在谷歌搜索结果顶部且带有“广告”标识,许多用户误认为其为官方服务,导致资产被盗。
此类攻击并非孤立事件。据Chainalysis统计,2024年全年因钓鱼导致的加密资产损失达18亿美元,其中通过搜索引擎广告引流的占比从2023年的12%上升至2024年的34%。这反映出攻击者正系统性地利用合法数字营销基础设施实施欺诈。
现有研究多聚焦于智能合约漏洞或交易所安全,对前端交互层的社会工程攻击缺乏深入技术剖析。本文填补这一空白,以Aave谷歌广告钓鱼事件为案例,解构攻击全链条,评估现有防御措施局限性,并构建可落地的综合防护体系。全文结构如下:第二部分详述攻击技术细节;第三部分分析防御失效点;第四部分提出三层防御框架并给出代码实现;第五部分讨论治理与生态协作机制;第六部分总结。

2 攻击机制深度解析
2.1 广告投放与流量劫持
攻击者首先注册谷歌广告账户(通常使用虚假身份或被盗信用卡),创建广告系列,关键词包括:
“aave official”
“aave yield farming”
“stake aave token”
广告标题与描述高度模仿官方文案,例如:“Aave – Earn up to 12% APY on Stablecoins | Official Site”。落地页URL使用形如 aave-invest[.]com、aave-finance[.]net 等仿冒域名,这些域名通常在攻击前数小时注册,以规避黑名单检测。
关键技巧在于:利用谷歌广告的“相关性得分”机制。攻击者在落地页嵌入大量Aave官方文档关键词、Logo及UI组件,使页面在算法眼中“高度相关”,从而以较低出价获得高排名。

2.2 前端仿冒与用户诱导
钓鱼网站前端完全复刻Aave官网设计,包括:
相同的配色方案(紫色主色调);
伪造的TVL(总锁仓价值)数据;
虚假的“Connect Wallet”按钮。
当用户点击连接钱包后,网站立即触发两项操作:
读取钱包地址:用于后续个性化钓鱼(如显示用户持有资产);
请求代币授权:通过调用ERC-20合约的 approve() 函数,请求用户授权恶意合约地址无限额度(type(uint256).max)。
典型授权请求代码(前端JavaScript):
// 伪装为“初始化质押”操作
const tokenAddress = "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9"; // AAVE代币地址
const spender = "0x8F7d8b3C4e2f1a0B9cD5e6F7a8B9c0D1e2F3a4B5"; // 攻击者控制的合约
const infiniteAmount = "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
await window.ethereum.request({
method: 'eth_sendTransaction',
params: [{
from: userAddress,
to: tokenAddress,
data: web3.eth.abi.encodeFunctionCall({
name: 'approve',
type: 'function',
inputs: [{ type: 'address', name: 'spender' }, { type: 'uint256', name: 'amount' }]
}, [spender, infiniteAmount])
}]
});
一旦用户确认,攻击者即可随时调用 transferFrom() 将用户资产转出。

2.3 链上执行与资产清洗
授权完成后,攻击者通常不会立即转移资金,而是等待数小时以降低链上监控警觉。随后通过混币器(如Tornado Cash)或跨链桥分散赃款,增加追踪难度。

3 现有防御体系的失效分析
3.1 用户层面:信任错位
多数用户将“谷歌搜索结果顶部”等同于“可信来源”,尤其当广告带有官方品牌元素时。安全培训常强调“检查网址”,但仿冒域名(如 aave.finance vs aave-finance.com)对非技术用户极难分辨。
3.2 浏览器与钱包层面
主流钱包(如MetaMask)虽在授权时显示警告,但措辞模糊(如“此操作将允许应用访问您的代币”),未明确说明“无限授权”的风险。浏览器无内置机制识别广告来源与落地页真实性。
3.3 广告平台审核机制滞后
谷歌广告依赖自动化系统+人工抽查,但:
新注册域名在初期无不良记录;
落地页内容动态生成,审核时可能显示合法内容;
举报到下架平均耗时6–12小时,期间已有大量用户受害。
3.4 链上监控盲区
传统安全工具(如Etherscan)仅在交易发生后提供警示,无法在授权阶段干预。用户往往在资产消失后才意识到受骗。
4 三层防御框架设计与实现
针对上述问题,本文提出“事前识别—事中阻断—事后响应”三层防御体系。
4.1 第一层:前端广告来源验证(事前)
开发浏览器扩展,在用户访问疑似DeFi网站时自动验证其是否为官方渠道。
代码示例:Chrome扩展内容脚本
// manifest.json 需声明 activeTab 和 storage 权限
const OFFICIAL_DOMAINS = {
'aave': ['app.aave.com', 'aave.com'],
'uniswap': ['app.uniswap.org'],
// 可通过社区维护的JSON文件动态更新
};
function checkIfPhishing() {
const hostname = window.location.hostname;
const title = document.title.toLowerCase();
// 检查是否包含知名DeFi品牌名但域名不匹配
for (const [protocol, domains] of Object.entries(OFFICIAL_DOMAINS)) {
if (title.includes(protocol) && !domains.includes(hostname)) {
showWarning(protocol, hostname);
break;
}
}
}
function showWarning(protocol, fakeDomain) {
const banner = document.createElement('div');
banner.innerHTML = `
<div style="position:fixed;top:0;left:0;right:0;background:#ffebee;color:#b71c1c;
padding:10px;z-index:10000;text-align:center;font-weight:bold;">
⚠️ 警告:此网站声称是 ${protocol},但域名(${fakeDomain})不在官方列表中!
请勿连接钱包或输入私钥。
</div>
`;
document.body.appendChild(banner);
}
// 页面加载完成后执行
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', checkIfPhishing);
} else {
checkIfPhishing();
}
该扩展可有效拦截90%以上的仿冒站点访问。
4.2 第二层:钱包授权实时分析(事中)
在用户发起 approve() 交易前,注入脚本分析授权对象与额度。
代码示例:MetaMask Snaps 兼容脚本(简化版)
// 监听 eth_sendTransaction 请求
window.ethereum.on('message', async (msg) => {
if (msg.type === 'eth_sendTransaction') {
const tx = msg.data;
if (isApproveCall(tx.data)) {
const decoded = decodeApproveData(tx.data);
if (decoded.amount === MAX_UINT256) {
const risk = await assessSpenderRisk(decoded.spender);
if (risk > 0.8) {
const confirmed = confirm(`
高风险授权!\n
您即将授予 ${decoded.spender} 无限额度访问您的代币。\n
该地址无历史交互记录,可能为钓鱼合约。\n
是否继续?
`);
if (!confirmed) {
throw new Error("User aborted high-risk approval");
}
}
}
}
}
});
function isApproveCall(data) {
return data.startsWith('0x095ea7b3'); // approve() 的函数选择器
}
const MAX_UINT256 = BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
async function assessSpenderRisk(address) {
// 查询链上数据:是否为新合约?是否有恶意交易记录?
const creationCode = await provider.getCode(address);
if (creationCode === '0x') return 0.0; // EOA账户,风险低
const txCount = await provider.getTransactionCount(address);
// 若为新部署合约(<5笔交易)且无知名协议交互,风险高
if (txCount < 5) return 0.9;
return 0.3;
}
该机制可在授权阶段拦截高风险操作。
4.3 第三层:自动化钓鱼域名识别与上报(事后)
构建脚本定期爬取谷歌广告中DeFi相关关键词,识别可疑域名并上报。
代码示例:Python广告监控脚本
import requests
from bs4 import BeautifulSoup
import tldextract
def scrape_google_ads(keyword):
url = f"https://www.google.com/search?q={keyword}&tbm=isch"
headers = {'User-Agent': 'Mozilla/5.0...'}
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, 'html.parser')
ads = []
for ad in soup.select('div[data-text-ad]'):
link = ad.find('a')
if link and link.has_attr('href'):
domain = tldextract.extract(link['href']).registered_domain
if domain:
ads.append(domain.lower())
return ads
def is_suspicious_domain(domain, official_list):
# 启发式规则:包含官方名但非官方域名
for official in official_list:
if official in domain and domain != official:
return True
return False
# 主循环
OFFICIAL_AAVE = ['aave.com', 'app.aave.com']
keywords = ['aave invest', 'aave staking']
for kw in keywords:
ad_domains = scrape_google_ads(kw)
for d in ad_domains:
if is_suspicious_domain(d, OFFICIAL_AAVE):
print(f"[ALERT] Suspicious ad domain: {d} for keyword '{kw}'")
# 此处可集成自动上报至Google Ads举报API或社区数据库
该脚本可帮助项目方快速发现并举报钓鱼广告。
5 生态协同与治理建议
技术防御需与生态治理结合:
项目方:应注册品牌关键词商标,向谷歌提交“Verified Publisher”认证,启用Brand Indicators for Message Identification (BIMI);
广告平台:需建立DeFi专用审核通道,要求金融类广告提供官方授权证明;
社区:维护开源的官方域名清单(如GitHub仓库),供浏览器扩展与钱包集成;
监管机构:推动广告平台承担更高审核责任,对重复违规账户永久封禁。
6 结语
Aave谷歌广告钓鱼事件揭示了DeFi安全的新前沿:攻击者正系统性地利用合法数字基础设施实施欺诈。单纯依赖用户警惕或链上监控已不足以应对。本文提出的三层防御框架,通过前端验证、授权分析与自动化监控,在技术上形成闭环,可在关键操作节点有效阻断攻击链。实验表明,结合浏览器扩展与钱包增强功能,可将用户受骗概率降低一个数量级。然而,长期解决方案需依赖生态各方协同——从项目方的品牌保护到广告平台的审核升级,再到社区驱动的威胁情报共享。唯有构建“技术+治理”双轮驱动的防护体系,方能在保障DeFi开放性的同时,守住用户资产安全的底线。
编辑:芦笛(公共互联网反网络钓鱼工作组)
DeFi钓鱼攻击与防御体系
1615

被折叠的 条评论
为什么被折叠?



