基于搜索引擎广告的DeFi钓鱼攻击机制与防御体系研究

DeFi钓鱼攻击与防御体系

摘要

随着去中心化金融(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开放性的同时,守住用户资产安全的底线。

编辑:芦笛(公共互联网反网络钓鱼工作组)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦熙霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值