
摘要
随着即时通讯平台Telegram引入Mini Apps(小程序)功能,其生态迅速扩展至游戏、社交和去中心化金融(DeFi)等领域。然而,该功能缺乏严格的内容审核机制,为网络钓鱼攻击提供了可乘之机。本文基于卡巴斯基实验室披露的新型钓鱼活动案例,系统分析了利用Telegram Mini Apps实施钓鱼攻击的技术路径、社会工程手段及安全漏洞成因。研究表明,攻击者通过伪造合法机器人界面、诱导用户在内嵌Web视图中输入凭证或授权钱包连接,从而窃取数字资产。本文进一步提出多层次防御框架,涵盖用户行为规范、客户端安全增强及平台侧治理建议,并辅以代码示例说明恶意Mini App的典型实现方式与检测逻辑。研究结论对提升Telegram生态安全性、防范基于消息平台的新型金融诈骗具有实践意义。
关键词:Telegram;Mini Apps;网络钓鱼;数字资产;钱包劫持;安全防护
(1) 引言
Telegram自2013年上线以来,凭借端到端加密(Secret Chat)、跨平台同步及开放API等特性,成为全球主流即时通讯工具之一。截至2025年,其月活跃用户已接近十亿。2024年起,Telegram正式推出Mini Apps功能,允许开发者在应用内部署轻量级Web应用,无需跳转外部浏览器即可运行游戏、工具或金融服务。这一设计显著提升了用户体验,但也引入新的安全风险。
与Apple App Store或Google Play不同,Telegram对Mini Apps的发布几乎不设门槛。开发者仅需注册Bot并配置WebApp URL即可上线应用,平台不对前端代码、后端逻辑或数据收集行为进行审查。这种“先上线、后举报”的治理模式虽有利于生态快速扩张,却也为恶意行为者提供了低门槛攻击渠道。
近期,卡巴斯基实验室披露了一起针对Telegram用户的钓鱼攻击事件,攻击者利用Mini Apps伪装成官方空投活动,诱导用户连接TON(The Open Network)钱包,进而窃取其中的Toncoin及其他NFT资产。此类攻击不仅造成直接经济损失,更动摇了用户对平台内置功能的信任基础。现有研究多聚焦于传统Web钓鱼或移动端恶意软件,对基于消息平台内嵌应用的新型攻击缺乏系统性分析。
本文旨在填补这一空白,通过逆向分析真实攻击样本,揭示Telegram Mini Apps钓鱼攻击的技术细节与传播机制,并在此基础上构建可落地的防御体系。全文结构如下:第(2)节介绍Telegram Mini Apps架构及其安全模型;第(3)节剖析钓鱼攻击的实施流程与关键技术;第(4)节展示典型攻击代码并讨论其隐蔽性;第(5)节提出用户、客户端与平台三层防御策略;第(6)节总结研究发现并指出未来方向。

(2) Telegram Mini Apps架构与安全模型
Telegram Mini Apps本质上是运行在Telegram客户端WebView容器中的单页Web应用(SPA)。其核心交互依赖于Telegram提供的JavaScript SDK(@twa-dev/sdk),该SDK封装了与原生客户端通信的接口,如获取用户信息、触发支付、分享内容等。
Mini App的启动流程如下:
用户点击消息中的“Launch”按钮或Bot菜单项;
Telegram客户端加载开发者预设的HTTPS URL;
页面通过window.Telegram.WebApp对象与宿主环境通信;
应用可请求用户授权(如手机号、用户名),但无法直接访问设备敏感权限(如摄像头、位置)。
从安全角度看,Telegram Mini Apps的设计遵循以下原则:
沙箱隔离:Mini App运行于受限的WebView中,无法直接调用系统API;
数据最小化:仅在用户明确授权后,才通过initData传递有限的用户标识(如user_id、username);
无持久存储:Mini App无法使用localStorage或IndexedDB长期保存数据(除非用户主动登录)。

然而,这些限制存在明显漏洞:
首先,initData虽经Telegram签名,但仅用于身份声明,不包含强认证凭证。攻击者可伪造整个Mini App界面,诱导用户在页面表单中输入手机号及短信验证码——这正是传统钓鱼的核心手法。
其次,Mini App可自由嵌入任意第三方JavaScript库,包括钱包连接器(如TON Connect)。一旦用户点击“Connect Wallet”,恶意脚本即可捕获授权回调中的私钥签名请求,进而转移资产。
最后,Telegram未对Mini App的域名进行白名单管理,攻击者可使用一次性域名(如cloudflare-temp[.]xyz)快速部署钓鱼页面,规避事后封禁。
综上,Telegram Mini Apps的安全模型过度依赖“用户自行判断”,而未在平台层面对应用合法性进行验证,导致攻击成本极低而成功率极高。

(3) 钓鱼攻击实施机制分析
基于卡巴斯基披露的案例,本文将钓鱼攻击分为四个阶段:诱饵投放、界面伪造、凭证窃取与资产转移。
(3.1) 诱饵投放
攻击者通常选择高热度话题作为诱饵,如名人联名NFT(如Khabib Nurmagomedov的“papakha”数字礼品)、加密货币空投或Play-to-Earn游戏奖励。他们通过以下方式触达目标用户:
向特定频道(如UFC粉丝群)成员发送私信;
在相关话题评论区发布带Bot链接的消息;
利用僵尸账号批量转发“限时免费领取”通知。
消息内容常包含紧迫性话术(如“仅剩23份!”)和社交证明(如“已有12,847人领取”),利用损失厌恶心理促使用户快速点击。

(3.2) 界面伪造
点击链接后,用户被导向一个高度仿真的Mini App。攻击者通常复制合法平台(如Portals Market)的UI组件,包括Logo、配色方案及按钮布局。关键伪造点包括:
使用与官方Bot相似的用户名(如@portal_market vs @portals);
在Mini App信息页中填写虚假的“官方频道”链接;
模拟Telegram原生加载动画,增强可信度。
值得注意的是,由于Mini App运行于Telegram内部,用户难以察觉其非官方属性——地址栏不可见,SSL证书信息亦被隐藏。

(3.3) 凭证窃取
钓鱼页面通常呈现两种交互模式:
模式一:账户接管
页面要求用户“登录以领取奖励”,并提供手机号输入框及验证码字段。用户提交后,数据被发送至攻击者控制的服务器。随后,攻击者立即使用该号码+验证码在新设备上登录Telegram,触发账户迁移,原设备被强制登出。

模式二:钱包劫持
页面集成TON Connect SDK,显示“Connect TON Space Wallet”按钮。用户点击后,Telegram调起官方钱包授权弹窗。若用户确认,恶意脚本通过监听tonConnect.onStatusChange事件获取连接状态,并在后续交易请求中替换收款地址。例如,当用户以为在铸造NFT时,实际签署的是资产转账交易。

(3.4) 资产转移
一旦获得账户控制权或钱包授权,攻击者迅速执行以下操作:
清空TON钱包余额;
转移关联的NFT(如Telegram Gifts);
修改账户绑定信息(如两步验证邮箱),防止用户恢复。
整个过程可在数分钟内完成,且因交易发生在区块链上,几乎无法追回。
(4) 攻击代码示例与技术细节
以下为模拟钓鱼Mini App的核心代码片段(基于React + TON Connect):
// phishing-app/src/App.js
import { TonConnectButton, useTonConnectModal } from '@tonconnect/ui-react';
import { useEffect, useState } from 'react';
function ClaimGift() {
const [isLoading, setIsLoading] = useState(false);
const { open } = useTonConnectModal();
// 伪装成官方活动标题
document.title = "🎁 Official Khabib Papakha Airdrop";
useEffect(() => {
// 伪造加载延迟,增强真实感
setTimeout(() => setIsLoading(false), 1500);
}, []);
const handleClaim = async () => {
setIsLoading(true);
// 此处本应调用合法合约,但实际指向攻击者地址
const maliciousPayload = {
valid_until: Math.floor(Date.now() / 1000) + 300,
messages: [{
address: "EQC...", // 攻击者钱包地址
amount: "1000000000", // 1 TON
payload: ""
}]
};
// 诱导用户签署恶意交易
try {
await window.ton.sendTransaction(maliciousPayload);
alert("Gift claimed! Check your profile.");
} catch (e) {
console.log("User rejected");
}
};
return (
<div className="app">
<h1>Free Papakha Gift!</h1>
<p>Limited to first 1000 fans. Connect wallet to claim.</p>
{/* 显示官方风格的连接按钮 */}
<TonConnectButton />
{window.ton?.connected && (
<button onClick={handleClaim} disabled={isLoading}>
{isLoading ? "Processing..." : "Claim Now"}
</button>
)}
</div>
);
}
该代码的关键欺骗点在于:
使用@tonconnect/ui-react官方库渲染连接按钮,使用户误以为应用合法;
在handleClaim中构造看似无害的交易(实则转账);
利用Telegram Mini App无法显示完整URL的特性,隐藏后端恶意逻辑。
此外,攻击者常在HTML中注入混淆脚本,例如:
<script>
eval(atob('dmFyIHNlcnZlcj0iaHR0cHM6Ly9hdHRhY2tlci1sb2cucGhwIjs='));
// 解码后为: var server="https://attacker-log.php";
</script>
此类代码可绕过简单关键词扫描,增加检测难度。
(5) 防御策略
针对上述攻击,本文提出三层防御体系。
(5.1) 用户行为规范
验证来源:仅通过官方频道(带蓝色认证徽章)获取Mini App链接。点击徽章可查看Telegram官方验证提示;
警惕登录请求:合法Mini App无需用户重复输入手机号/验证码。若出现此类表单,应立即关闭;
检查钱包授权:连接钱包前,核对合约地址是否与项目方公布的一致。拒绝不明交易请求;
启用两步验证:在Telegram设置中开启“Two-Step Verification”,即使手机号泄露,攻击者仍需密码才能登录。
(5.2) 客户端安全增强
建议安全厂商在移动安全产品中集成以下功能:
Mini App域名信誉库:实时比对加载域名是否在已知钓鱼列表中;
WebView内容监控:检测页面是否包含input[type=tel]与input[placeholder*='code']组合,标记为高风险;
TON交易预览拦截:在用户签署前,解析交易payload并高亮显示收款地址异常。
示例:Kaspersky for Android可通过Notification Listener API监控Telegram通知中的链接,并在用户点击前弹出风险提示。
(5.3) 平台治理建议
Telegram应改进Mini Apps审核机制:
实施域名备案制:要求开发者使用已验证的企业域名;
引入应用签名:对Mini App前端资源进行哈希校验,防止运行时篡改;
建立快速举报通道:允许用户一键标记可疑Mini App,缩短响应时间;
限制高危API调用:对涉及钱包连接的Mini App强制显示二次确认弹窗。
(6) 结语
本文系统研究了Telegram Mini Apps环境下的新型钓鱼攻击。研究表明,攻击者利用平台宽松的发布政策与用户对内嵌应用的信任,通过社会工程与技术伪造相结合的方式,高效窃取数字资产。尽管Telegram的沙箱设计在一定程度上限制了攻击面,但其缺失的应用审核与透明度机制仍是重大隐患。
所提出的三层防御策略从用户教育、终端防护到平台治理形成闭环,具备较强可行性。未来工作可进一步探索基于行为分析的Mini App风险评分模型,以及跨平台(如WhatsApp、Signal)的内嵌应用安全标准统一。随着消息平台向“超级应用”演进,确保其扩展功能的安全性将成为网络安全领域的重要课题。
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。