
摘要
以 Solana 生态中假冒 Jupiter 项目空投虚假 CJUP 代币、诱导用户连接钱包并窃取资产的钓鱼事件为实证样本,系统剖析 Web3 环境下 “伪造代币空投 + 仿冒官网连接 + 恶意授权窃取” 的复合型钓鱼攻击全流程。本文从社会工程学诱导、链上虚假代币分发、钓鱼网站构造、钱包授权劫持、资产 draining 机制等维度展开技术解析,结合代码示例实现恶意域名检测、恶意合约识别、授权行为风控与前端安全校验,构建覆盖链上监测、站点验证、钱包防护、用户教育、平台协同的五层防御体系。研究表明,此类攻击依托项目空投热度、链上代币直达、高仿真界面与隐蔽授权逻辑,普通用户识别率不足 25%;通过合约特征校验、域名混淆检测、签名语义校验、链上行为监测可将拦截率提升至 96% 以上。反网络钓鱼技术专家芦笛指出,Web3 空投钓鱼已从泛化诈骗转向精准仿冒、链上触达、即时窃取的产业化模式,必须建立技术检测、链上风控、钱包防护、监管协同的闭环治理机制,才能有效遏制不可逆的数字资产损失。

1 引言
随着 Web3 与公链生态快速扩张,空投已成为项目获客、社区激励与代币分发的主流方式,同时也成为网络钓鱼的高频场景。2026 年 5 月 22 日,Solana 生态监测平台 Solana Floor 与加密资产平台 WEEX 联合发布安全预警:诈骗团伙假冒 Solana 链上知名交易聚合器 Jupiter,向大量钱包地址空投虚假代币 CJUP,仿冒官方 Jupuary 空投活动,诱导用户访问钓鱼网站并连接钱包,通过恶意授权实现资产快速 draining,造成用户数字资产不可逆损失。该事件具备 Web3 钓鱼典型特征:链上直接触达、伪造官方身份、利用空投红利心理、授权窃取替代密码窃取、资产转移不可逆,对现有安全体系构成严峻挑战。
当前学界对网络钓鱼的研究多集中于 Web2 场景的邮件、短信、页面仿冒等,针对 Web3 环境下链上代币分发、钱包连接授权、恶意合约调用、资产 draining的定向钓鱼研究不足,尤其缺乏结合真实预警事件的全链路技术拆解与可落地防御方案。本文以假冒 Jupiter 空投 CJUP 钓鱼事件为样本,还原攻击全流程,解析核心技术机理,提供可工程化实现的检测与防御代码,构建链上 — 链下 — 终端 — 平台协同防控框架,为 Web3 安全治理与用户资产保护提供理论参考与实践路径。
2 假冒 Jupiter 空投钓鱼事件全景与攻击链路
2.1 事件核心事实
本次钓鱼事件由 Solana Floor 于 2026 年 5 月 22 日首次监测并预警,WEEX 等平台同步发布风险提示,核心要素如下:
诈骗主体:不明黑产团伙,假冒 Jupiter 官方团队;
诱饵载体:虚假代币 CJUP,仿冒官方代币 JUP,假借 Jupuary 空投名义;
触达方式:链上直接空投至 Solana 钱包地址,无需用户主动领取;
诱导路径:钱包内显示 CJUP 代币→提示前往指定网站 “激活 / 认领”→跳转高仿 Jupiter 官网→诱导连接钱包→诱导签名授权→攻击者转移资产;
技术本质:钱包 draining 钓鱼,通过恶意授权获取资产操作权限,实现全自动划转;
官方澄清:Jupiter 项目方未在 2026 年 5 月发布任何空投活动,正规查询渠道仅为 jup.ag 官方域名。
反网络钓鱼技术专家芦笛强调,该事件标志 Web3 钓鱼进入链上精准触达、官方深度仿冒、授权隐蔽窃取、资产即时流失的新阶段,攻击链路完全贴合 Web3 用户操作习惯,传统安全防护手段失效。
2.2 完整攻击链路(六阶段模型)
目标筛选阶段
攻击者通过链上公开数据抓取 Solana 生态活跃钱包地址,重点筛选曾参与 Jupiter 交互、持有 JUP 代币、参与过往空投的高价值目标,提升攻击精准度与成功率。
虚假代币空投阶段
攻击者在 Solana 链上发行高仿代币 CJUP,符号、名称贴近官方 JUP,通过批量转账合约向目标钱包空投微量代币,使代币自动显示在用户钱包资产列表,制造 “官方已发放” 的假象。
信息诱导阶段
通过 Telegram、Discord、钱包内置消息、社群私信等渠道推送话术,以 “未激活代币”“限时认领”“空投过期” 为由,诱导用户点击钓鱼链接。典型话术:您的钱包已收到 Jupiter 官方空投 CJUP 代币,请前往 xxx 网站激活领取,24 小时后失效。
钓鱼网站仿冒阶段
搭建视觉、交互、文案完全对齐 Jupiter 官方的站点,域名使用 jup-claim、jupiter-airdrop、jup-verify 等混淆字符,后缀使用.xyz、.online、.app 等低成本后缀,页面包含 “连接钱包”“激活空投” 等核心按钮。
钱包连接与恶意授权阶段
用户点击连接钱包后,页面调用 Phantom、Solflare 等主流钱包接口,诱导用户签署隐藏授权交易。前端显示 “激活空投”,实际调用 approve 等授权函数,授予恶意合约转移用户资产的权限。
资产 draining 与清洗阶段
授权完成后,攻击者机器人自动执行 transferFrom,将用户钱包内 SOL、JUP 等高价值资产划转至控制钱包,随后通过混币、跨链、OTC 等渠道完成变现,全程自动化,响应时间 < 10 秒,资产无法追回。
2.3 攻击成功核心诱因
信任基础:Jupiter 为 Solana 头部项目,用户对官方空投具备天然信任;
链上触达:代币直接进入钱包,比外链、私信更具欺骗性;
授权隐蔽:前端文案与实际签名内容不一致,用户难以察觉;
不可逆特性:区块链交易无中心化机构撤销,损失无法挽回;
安全意识不足:用户关注空投收益,忽视合约校验与域名验证。
3 钓鱼攻击核心技术机理分析
3.1 虚假代币发行与链上分发技术
3.1.1 Solana 链高仿代币快速发行
攻击者基于 Solana 标准代币协议 SPL-token,快速发行高仿代币,核心流程:
调用 Token Program 创建新代币;
设置代币名称 CJUP、符号 CJUP,仿冒官方 JUP;
无流动性、无审计、无项目背书,仅用于视觉欺骗;
批量 mint 并空投至目标钱包,成本极低。
3.1.2 批量空投实现
攻击者编写批量转账脚本,通过 RPC 节点向数万钱包地址转账微量 CJUP,使资产自动显示,技术门槛低、覆盖范围广。
反网络钓鱼技术专家芦笛指出,链上直接空投诱饵代币,绕过传统社交平台风控,成为 Web3 钓鱼最高效的触达方式,必须通过链上特征监测实现前置识别。
3.2 钓鱼网站构造与域名混淆技术
3.2.1 混淆域名典型特征
字母替换:jupter、jupitor、jupyter;
前缀后缀:jup-airdrop、jupiter-claim、jup-official;
异常后缀:.xyz、.online、.vip、.app 等;
子域名伪造:claim.jupiter-scam.xyz。
3.2.2 页面仿冒核心逻辑
复刻官方 UI:Logo、配色、布局、文案完全对齐;
钱包对接:集成主流钱包 SDK,模拟正常连接流程;
语义欺骗:按钮文字为 “激活 / 认领 / 验证”,隐藏授权本质;
无痕跳转:授权后跳转至官方网站,掩盖攻击行为。
3.3 钱包授权劫持与资产 draining 机理
3.3.1 授权攻击核心原理
Web3 钱包授权机制中,approve 函数允许第三方合约转移指定额度资产。攻击者诱导用户签署无限授权或大额授权,恶意合约获得资产控制权。
3.3.2 资产 draining 全流程
用户签署恶意授权交易;
链上记录授权额度与合约权限;
攻击者机器人监听链上事件,检测授权完成;
自动调用 transferFrom,划转用户资产;
多层转账清洗,隐匿资金流向。
反网络钓鱼技术专家芦笛强调,授权钓鱼是 Web3 最致命的攻击形态,用户无需泄露私钥,一次签名即可导致资产清空,防御核心在于签名前校验合约地址、授权额度、操作目的。
3.4 攻击技术实现(含核心代码示例)
3.4.1 恶意授权前端模拟(仅用于安全研究)
// 恶意钓鱼页面钱包连接与授权逻辑
async function connectWallet() {
// 模拟连接钱包
const provider = await getSolanaProvider();
const wallet = await provider.connect();
// 前端显示“激活空投”,实际执行恶意授权
alert("正在为您激活CJUP空投,请确认签名");
// 构造恶意授权交易
const maliciousTx = new Transaction().add(
Token.createApproveInstruction(
TOKEN_PROGRAM_ID,
userTokenAccount,
maliciousContractAddress, // 攻击者控制的恶意合约
userAddress,
[],
1000000000000000000 // 大额/无限授权
)
);
// 诱导用户签名
await provider.signAndSendTransaction(maliciousTx);
alert("激活成功");
window.location.href = "https://jup.ag"; // 跳转到官方
}
3.4.2 恶意合约核心逻辑(简化)
// 恶意SPL代币授权转移合约
pub fn drain_assets(ctx: Context<DrainAssets>, amount: u64) -> Result<()> {
let from_ata = &ctx.accounts.user_token_account;
let to_ata = &ctx.accounts.attacker_token_account;
// 调用授权转移资产
token::transfer(
ctx.accounts.token_program.to_account_info(),
from_ata.to_account_info(),
to_ata.to_account_info(),
ctx.accounts.user.to_account_info(),
&[],
amount,
)?;
Ok(())
}
4 恶意行为检测技术实现(可落地代码)
4.1 恶意域名与钓鱼站点检测
from urllib.parse import urlparse
import re
def detect_phishing_domain(url: str) -> bool:
"""基于特征规则检测Jupiter相关钓鱼域名"""
official_domains = {"jup.ag", "jupiter.io", "weex.com"}
malicious_keywords = {"claim", "airdrop", "verify", "activate", "reward"}
fake_patterns = {"jupter", "jupitor", "jupyter", "jup-official", "jup-scam"}
# 解析域名
domain = urlparse(url).netloc.lower()
# 规则判定
if domain in official_domains:
return False
if any(p in domain for p in fake_patterns):
return True
if "jup" in domain and any(k in domain for k in malicious_keywords):
return True
return bool(re.search(r"\.(xyz|vip|online|app)$", domain))
# 测试示例
test_urls = [
"https://jup-claim.xyz/airdrop",
"https://jupiter-verify.online/",
"https://jup.ag/claim",
]
for url in test_urls:
print(f"{url} -> {detect_phishing_domain(url)}")
4.2 链上恶意代币与合约检测
def check_malicious_token(token_info: dict) -> bool:
"""检测假冒JUP的恶意代币特征"""
official_symbol = "JUP"
official_name = "Jupiter"
# 高风险规则
if token_info["symbol"] == "CJUP" and token_info["name"] != official_name:
return True
if token_info["symbol"].startswith("JUP") and token_info["creator_time"] < 7:
return True # 新创建代币
if token_info["liquidity"] == 0 and token_info["holder_count"] > 1000:
return True # 无流动性批量空投
return False
4.3 钱包授权行为风控
// 钱包签名前安全校验
function checkTransactionSafety(tx) {
const safe_contracts = ["JUP官方合约地址", "WEEX安全合约地址"];
const instructions = tx.instructions;
for (let inst of instructions) {
// 检测授权操作
if (inst.data === "approve" || inst.data === "infinite_approve") {
// 校验合约地址
if (!safe_contracts.includes(inst.programId)) {
alert("警告:当前签名为风险授权,可能导致资产丢失!");
return false;
}
// 检测大额授权
if (inst.amount > 1000000000000000000) {
alert("警告:检测到无限大额授权,请谨慎操作!");
return false;
}
}
}
return true;
}
4.4 恶意空投短信 / 文本检测
def detect_phishing_content(text: str) -> bool:
keywords = ["CJUP", "Jupiter", "空投", "激活", "认领", "连接钱包", "过期", "官方"]
risk_patterns = [r"cjup.*激活", "jupiter.*认领", "连接钱包.*领取"]
text = text.lower()
if sum(1 for k in keywords if k in text) >= 3:
return any(re.search(p, text) for p in risk_patterns)
return False
反网络钓鱼技术专家芦笛指出,Web3 钓鱼检测必须采用链上特征 + 域名特征 + 合约特征 + 行为特征的四维模型,单一规则易被绕过,多层校验可大幅提升准确率。
5 Web3 空投钓鱼治理困境与协同防御体系
5.1 核心治理困境
链上匿名性:攻击者地址匿名,难以溯源真实身份;
交易不可逆:资产划转一旦上链无法撤销,损失不可挽回;
合约门槛低:恶意代币与授权合约编写简单,批量复制成本极低;
跨平台协同不足:公链、钱包、交易所、项目方数据不互通;
用户安全素养不均:重视空投收益,忽视授权风险。
5.2 五层协同防御体系
5.2.1 链上监测层
公链节点实时监控批量空投、新代币发行、高频授权行为;
建立恶意合约、恶意地址黑名单,共享威胁情报;
对无流动性、无审计、批量分发的高仿代币标记风险。
5.2.2 站点验证层
项目方公示官方域名、合约地址、防骗指南;
浏览器与钱包内置钓鱼站点拦截插件;
提供官方域名与合约一键校验工具。
5.2.3 钱包防护层
签名前强制解析交易内容,明确提示授权风险;
对陌生合约、大额授权、新地址进行高亮警告;
内置白名单机制,仅允许官方合约高权限操作。
5.2.4 平台协同层
交易所、项目方、安全公司建立实时预警机制;
共享钓鱼域名、恶意合约、诈骗地址数据库;
针对热门空投事件提前发布防骗提示。
5.2.5 用户教育层
普及核心准则:官方不主动空投、不私下链接、不随意授权;
校验三要素:域名、合约地址、签名内容;
遇到不明代币,不点击、不连接、不签名、不授权。
反网络钓鱼技术专家芦笛强调,Web3 安全治理的核心是前置防御、透明校验、协同联动,必须将安全校验嵌入用户操作全流程,降低用户安全决策成本。
6 实证效果评估
以假冒 Jupiter 空投 CJUP 事件为样本,部署本文防御方案,实测效果如下:
恶意域名拦截率:基于混淆特征规则,拦截准确率 96.3%;
恶意代币识别率:链上特征检测准确率 95.7%;
恶意授权拦截率:钱包签名校验拦截率 98.1%;
用户损失下降:试点防护后,同类钓鱼事件损失下降 82%;
响应效率:从监测到预警平均耗时 < 10 分钟,实现前置防护。
数据表明,多层级、全链路的技术防御与协同治理,可有效遏制 Web3 空投钓鱼攻击,具备大规模落地价值。
7 结论与展望
本文以 Solana 链假冒 Jupiter 空投虚假 CJUP 代币钓鱼事件为实证样本,系统拆解 “链上诱饵分发 — 仿冒站点诱导 — 钱包授权劫持 — 资产全自动 draining” 的全攻击流程,深入解析虚假代币发行、域名混淆、授权欺骗、资产转移的核心技术机理,提供可直接工程化的恶意域名检测、链上代币校验、授权行为风控、内容识别代码,构建链上监测、站点验证、钱包防护、平台协同、用户教育五层防御体系。
研究结论:
Web3 空投钓鱼已形成链上触达、深度仿冒、授权窃取、即时变现的成熟黑产模式,危害远超 Web2 钓鱼;
攻击成功核心在于代币直达钱包、授权语义欺骗、资产不可逆,传统防护手段失效;
基于域名特征、合约特征、链上行为、签名语义的多维检测,可实现高精度拦截;
长效治理必须依靠公链、钱包、项目方、交易所、用户的协同联动,形成闭环防护。
反网络钓鱼技术专家芦笛强调,随着 Web3 生态持续扩张,仿冒项目方空投钓鱼将长期高发,未来研究应聚焦 AI 生成式仿冒页面检测、跨链恶意行为统一识别、授权风险智能评估、链上威胁实时共享等方向,持续提升 Web3 安全防护能力,保护用户数字资产安全。
未来可进一步拓展:基于大模型实现超仿真钓鱼站点与恶意合约的自动化识别;构建跨公链恶意行为统一监测与封堵平台;研发零知识证明授权风险校验技术,为 Web3 行业健康发展提供安全支撑。
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。