
一、前言
应用外弹窗与骚扰弹窗问题已成为侵扰移动互联网环境的显著痼疾。此类弹窗不仅频繁弹出、难以彻底关闭,往往还夹杂着虚假关闭按钮、误导性点击诱导乃至低俗内容,严重干扰用户正常使用,并带来潜在安全隐患。究其根源,是商业利益驱使部分应用滥用如监听系统广播、设置后台定时器或植入恶意代码等技术手段,以实现自启动及强制性广告推送。部分弹窗行为甚至在用户关闭后再次出现,展现出强烈的规避与对抗特征。
面对这一挑战,尽管如Google Play等平台方已运用政策约束与技术方案(如强化应用风险提示)加以治理,然而恶意广告技术持续迭代升级,其隐蔽性与对抗性致使治理工作面临持久挑战。本次腾讯安全团队旨在围绕上述弹窗的技术机理与演进趋势进行深入分析,以期为构建清朗网络空间提供参考。
核心威胁关联性说明
二、影响情况说明
2.1 应用外弹窗家族感染用户数量超百万
如下图所示,2025年“应用外弹窗广告家族”恶意软件的感染用户数量在4月达到峰值后呈总体回落态势,但于9月略有反弹。

2.2 应用外弹窗家族舆情案例
应对安全挑战,协同治理刻不容缓:当前,Google Play商店正面临应用外弹窗家族的渗透威胁。部分恶意样本(例如伪装成“文件管理”、“清理工具”的应用)仍存在于官方商店中,并已引发大量用户投诉。这些应用常通过隐藏图标、滥用虚拟显示(VirtualDisplay)等系统功能等多种技术手段,来规避Google Play安全检测。尽管终端安全解决方案(如腾讯云天御)能够有效识别此类风险应用并进行行为拦截,但这些应用在官方商店的持续存在,已引发显著的负面舆情。此现象充分表明,应用商店的平台审核机制必须与终端的安全防护能力进行深度协同,形成治理合力。

2.3 应用外弹窗家族高危样本警示通告
以下恶意应用伪装成清理工具,已导致超百万台设备被控,沦为广告弹窗的“傀儡节点”:
包名 | 软件名称 | 下载次数 |
|---|---|---|
com.cleanispace.release | Vivid Clean | 100万+ |
com.ventra.dustbust.app | DustBuster Clean | 100万+ |
com.clearout.virexa.cleaner | ClearOut | 100万+ |
com.debrisclear.cleankitn | DebrisClear Kit | 10万+ |
com.spark.cleancc.win | Spark Clean | 10万+ |
com.clmyuennd.clepuger | Clean Purge | 10万+ |
com.yourclean.flashsecure | Clean Orderly | 10万+ |
com.leanx.storagecleaner | Storage Clean | 5万+ |
三、当前核心攻击技术特征
3.1 滥用悬浮窗权限和蒙层权限
通过申请SYSTEM_ALERT_WINDOW(系统级悬浮窗权限)和SYSTEM_OVERLAY_WINDOW(覆盖式悬浮窗权限),在广告内容加载完成后,利用WindowManager.addView()方法创建TYPE_APPLICATION_OVERLAY类型的视图层,从而覆盖在其他应用界面之上。
// 伪代码:描述创5建覆盖窗口的流程IF应用已获取SYSTEM_ALERT_WINDOW权限
THEN创建WindowManager.LayoutParams对象 设置窗口类型为
TYPE_APPLICATION_OVERLAY设置标志位FLAG_NOT_FOCUSABLE 调用
WindowManager.addView()方法添加视图END IF
关键点:此代码描述了权限滥用创建悬浮窗的基本逻辑,真实环境中的坐标计算、事件拦截等细节已省略。
3.2 规避电池优化机制以维持后台活跃
通过获取REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限(需用户手动授权)或诱导用户将应用加入电池优化白名单,恶意应用可规避系统的休眠策略,从而在后台长期存活。
// 伪代码:描述引导用户加入电池优化白名单的流程PowerManager powerManager=获取系统电源服务IF应用未在电池优化白名单中THEN创建Intent,动作为Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS启动该Intent,引导用户至设置页面END IF
关键点:此代码仅展示了检查和建议设置的路径,规避了自动化的具体实现。
3.3 滥用系统广播监听
通过在AndroidManifest中静态注册或通过代码动态注册广播接收器,持续监听用户操作行为(如设备解锁、特定按键触发等),以此作为条件激活应用外弹窗行为。
// 伪代码:描述注册广播接收器以监听用户操作,判断解锁屏幕等特定操作 注册此Receiver,监听Intent.ACTION_USER_PRESENT等广播
关键点:展示了通过系统广播触发动作的通用模式,未指定具体的恶意载荷。
3.4 云端配置与动态加载机制
通过云端接口下发广告触发策略(包括触发条件、地域限制等参数),并借助热修复技术(例如使用DexClassLoader)动态加载恶意功能模块,从而实现攻击逻辑的灵活更新与隐蔽执行。
// 伪代码:描述从云端获取加密配置的流程 String encryptedConfig = 通过网络请求从(动态生成/配置的)域名获取 String decryptedConfig = 使用本地密钥解密(encryptedConfig) // 解密逻辑已混淆 解析并应用decryptedConfig中的策略
关键点:聚焦于“请求-解密-解析”的数据流,隐藏了通信加密、域名生成等关键实现细节。
3.5 广告欺诈与虚假流量生成
通过伪造广告曝光日志、模拟自动点击广告等技术手段,恶意应用骗取广告主的推广费用,其中以刷量作弊是主要形式。
// 伪代码:描述模拟触摸事件的流程 创建MotionEvent对象,动作为ACTION_DOWN 分发事件至目标视图 延迟一段时间(模拟按压) 创建MotionEvent对象,动作为ACTION_UP 分发事件至目标视图
关键点:此代码说明了模拟点击的事件序列,但精确的坐标获取、注入方式等核心技术点已被移除。
3.6 利用系统漏洞实现弹窗覆盖
在Android 10以下版本中,系统对从后台启动Activity的限制较为宽松。自Android 10起,Google逐步加强了相关限制。部分恶意广告通过利用系统漏洞实现弹窗,例如借助VirtualDisplay创建虚拟显示区域以渲染悬浮窗界面。
// 伪代码:描述利用VirtualDisplay创建虚拟显示区的流程 DisplayManager displayManager = 获取显示管理服务 VirtualDisplay virtualDisplay = displayManager.createVirtualDisplay() // 参数已简化 SurfaceView surfaceView = 新建SurfaceView,关联virtualDisplay的Surface WindowManager.LayoutParams params = 新建窗口布局参数(设置悬浮窗类型) WindowManager.addView(surfaceView, params) // 将内容显示到虚拟屏幕
关键点:概述了创建虚拟显示的基本步骤,复杂参数设置、Surface控制等易被滥用的细节均已省略。
四、当前流行攻击方法分析和应对
4.1 攻击方法分析
当前,恶意广告攻击主要依托云端控制、权限滥用、技术伪装和灰色产业链协作等方式进行,呈现出较强的隐蔽性和危害性。
1.恶意SDK通过预留“后门”接收云端指令,在通过应用商店审核后,再动态下发恶意代码包,实现弹窗广告、推广应用等恶意功能的开启与切换,以此规避应用商店的静态安全检测。部分恶意应用还利用热修复技术动态加载恶意模块。云控系统通常设置多重触发条件(如特定时间段、用户无操作时),以降低被发现概率,并具备灰度发布能力,可先小范围测试后再大规模传播。
2.滥用系统权限与漏洞:
3.伪装与隐藏技术:恶意应用常采用透明图标、无文件名的方式隐藏自身,使用户难以察觉和卸载。它们可能伪装成清理工具、Wi-Fi助手等常见工具类应用,诱导用户下载并授权。部分恶意软件甚至采用“主程序+守护程序”的模式,使主程序被卸载后能被自动重新安装,增加清除难度。
4.成熟的灰色产业链:恶意广告推送背后已形成分工明确的灰色产业链,上游提供技术支持和资源,下游负责作恶变现。其中衍生出专门提供恶意高频弹窗广告的公司,通过广告分红(依赖观看次数、点击跳转、下载量等数据)进行非法获利。
4.2 应对措施
为有效应对上述攻击,需要用户、应用商店多方协同,构建防护体系。
面向用户的防护建议:
应用商店治理责任:
五、应用外弹窗广告未来发展趋势
未来流氓广告将呈现“技术隐蔽化、攻击协同化、AI智能化”三大趋势。防御需从单一技术对抗转向“动态检测+AI对抗+生态治理”的综合体系,并重点关注AI生成内容识别、跨平台等前沿威胁技术。
六、当前流行攻击案例介绍
6.1 案例一:利用设备状态监控触发应用外弹窗
该手法通过静态或动态注册广播接收器,监听如ConnectivityManager.CONNECTIVITY_ACTION等系统广播,以捕获Wi-Fi连接或断开等状态变化。一旦条件满足,便调用WindowManager.addView()方法强制弹出全屏或半屏广告。为规避静态检测,部分样本会采用代码混淆技术,如动态生成弹窗布局。此类广告常伪装成“高速Wi-Fi推荐”或“垃圾清理提示”等系统通知,具有较强诱导性。

6.2 案例二:滥用开源框架后门实施广告欺诈
该手法利用Xamarin等跨平台开发框架的DLL加载机制及辅助功能服务,在基于该框架开发的应用中植入恶意逻辑。其通过劫持或模拟用户操作,伪造广告点击与曝光数据,从而骗取广告收益。该手法的隐蔽性在于,其恶意行为被封装在框架层,难以通过常规的应用行为分析进行有效识别。

6.3 案例三:利用VirtualDisplay系统漏洞实现后台弹窗
该手法利用部分Android系统版本中VirtualDisplay机制的安全缺陷,通过创建虚拟显示实例并构建弹窗视图,诱使系统误判其满足后台弹窗条件。此举并非为了向用户显示弹窗,而是利用此过程在后台伪造广告曝光数据,完成欺诈行为,隐蔽性极高。

6.4 案例四:仿冒系统应用并结合桌面级广告弹窗
该手法使恶意应用在应用列表中伪装成“Google One”等官方应用图标,同时隐藏自身桌面入口,以极大增加用户识别与卸载的难度。其具备在系统桌面层直接弹出全屏或半屏广告的能力,触发方式包括预设时间规则或监听系统广播(如解锁、充电)。由于广告完全脱离应用进程运行,干扰性极强且溯源困难。

七、案例代码分析
7.1 案例一:监控设备状态,应用外弹窗
7.1.1样本基础信息
软件图标 | |
|---|---|
软件名 | WiFi钥匙天天连 |
包名 | com.youying.wfysttl |
证书MD5 | 3289A52494C243B3A89FC7F883CA8C72 |
sha1信息 | 935845a838bcddee8ef13143912816c1e3e7f5d5 |
风险行为 | 1.动态注册广播接收器监控网络状态变化2.当网络状态发生变化后应用外弹窗 |
7.1.2代码分析
该样本通过调用getRomVersionName方法识别设备系统版本与手机品牌,旨在根据不同品牌设备的系统特性,定向引导用户开启必要权限,以提升恶意行为的成功率。其主要适配市面上主流手机品牌,增强兼容性。
样本在运行过程中会主动检测是否已获取关键权限,包括:后台弹窗权限、悬浮窗权限(通过Settings.canDrawOverlays(context)进行检测)、使用情况访问权限。

如检测到权限未开启,样本将自动跳转至对应品牌的系统权限设置页面,引导用户完成授权。

在权限获取后,样本通过动态注册广播接收器,监听系统广播ConnectivityManager.CONNECTIVITY_ACTION,实时捕获网络连接状态变化。当Wi-Fi连接状态发生改变时,注册的广播接收器将拦截该广播,并通过intent.getAction()判断广播类型。

样本进一步从广播中提取NetworkInfo对象,调用getState方法获取当前网络连接状态,并依据不同状态执行相应的业务逻辑:
当Wi-Fi连接成功时,网络状态为CONNECTED;当Wi-Fi连接断开时,网络状态为DISCONNECTED。

针对不同网络状态,样本执行对应的应用外弹窗策略。每种弹窗策略均设有特定的popStyle标识,可通过getPopStyle方法获取弹窗类型。样本将根据当前环境与策略条件判断是否满足弹窗触发条件,如满足条件则执行应用外弹窗行为,否则保持静默。

判断是否满足弹窗条件:

如果满足条件则应用外弹窗,如果不满足条件就不弹窗:

7.2 案例二:利用开源框架后门实施广告欺诈
7.2.1样本基础信息
软件图标 | |
|---|---|
软件名 | Service Android Accessibility |
包名 | com.android.accessibility.service |
证书MD5 | 859D4F326789BD59A26D1F84A257B5CF |
sha1信息 | 470d3c29cf2bafb0666abd06a86b64eb5e24fd3d |
风险行为 | 1.滥用开源框架Xamarin的DLL加载机制与无障碍服务(Accessibility Service)权限2.动态加载由.NET和C#编写的恶意DLL库3.通过模拟用户操作实施广告欺诈行为 |
7.2.2代码分析
权限诱导与初始化:样本在安装运行后,通过界面伪装诱导用户授予无障碍服务权限。该权限是后续自动化操作的基础,一旦启用,恶意应用可监控界面变化并模拟用户交互。

恶意DLL的加载机制:
恶意逻辑由.NET语言编写并编译为DLL库,存储在APK的assemblies目录下(如core.dll、GoogleService.dll)。
通过Xamarin框架的本地库(如libmonodroid.so)调用initInternal等方法动态加载这些DLL,规避传统静态代码检测。

Xamarin框架加载DLL库的方法在so文件里面,需先加载so文件,然后调用initInternal方法去加载恶意DLL库。

通过AccessibilityNodeInfo定位目标控件,并调用performAction(AccessibilityNodeInfo.ACTION_CLICK)模拟点击,伪造广告流量。该过程通常结合云端配置,动态调整点击策略(如触发频率、目标应用范围),以降低被发现的风险。


7.3 案例三:利用系统漏洞实现应用外弹窗
7.3.1样本基础信息
软件商标 | |
|---|---|
软件名 | LinkLeap |
包名 | com.browserzheng.foundernews |
证书MD5 | 41D5CD66D062116543BF3B60ACCEC8AC |
sha1信息 | 3944d75309d469391c9f651e2582ce54b3341af5 |
风险行为 | 1.安装后隐藏桌面图标,增加用户发现和卸载的难度2.滥用VirtualDisplay机制创建虚拟显示区域,并在此基础上实现应用外弹窗 |
7.3.2代码分析
该样本安装后不会在桌面创建启动图标,而是以此隐蔽自身。其核心恶意行为在于利用Android系统的VirtualDisplay接口创建虚拟显示区域。具体流程如下:
1. 创建VirtualDisplay:样本首先通过DisplayManager.createVirtualDisplay方法创建虚拟显示器。该虚拟显示器配置有特定的显示参数,为后续渲染弹窗内容提供底层支持。


2. 在虚拟显示器上展示Presentation:在成功创建VirtualDisplay后,样本实例化一个Presentation对象。Presentation是Android提供的一种专用于在辅助显示屏(如通过VirtualDisplay创建的虚拟屏幕)上显示内容的特殊对话框。样本通过调用Presentation的show方法,将弹窗内容渲染到该虚拟显示区域。

3. 延时启动弹窗线程:为确保弹窗能够成功触发,样本会启动一个延时线程。该线程最终通过启动一个Activity的方式,在虚拟显示环境上呈现应用外弹窗内容。由于系统将VirtualDisplay识别为一个有效的显示上下文,这使得本应在应用内弹出的窗口能够突破限制,在其他应用界面之上显示。
此攻击手法利用了系统对虚拟显示区域权限管理的特性,绕过了Android系统对后台应用启动Activity的限制,实现了隐蔽的应用外弹窗。

7.4 案例四:仿冒Google系应用,桌面广告弹窗
7.4.1样本基础信息
软件商标 | |
|---|---|
软件名 | Perfect Cleaner |
包名 | com.mbae.perfect.cleaner |
证书MD5 | 560D8EAB2E95C1D19FD87749412802FA |
sha1信息 | 12f084fe9cdd29322469121e0516a5470c6d5976 |
风险行为 | 1.安装后隐藏桌面图标,增加用户发现和卸载难度2.仿冒Google系列应用图标与名称,误导用户信任3.在系统桌面层直接弹出广告窗口,干扰正常使用 |
7.4.2代码分析
伪装与审核规避机制:样本在AndroidManifest.xml中通过设置android:icon和android:label属性,使用与Google官方应用相似的图标和名称(如“Google One”),以此规避Google Play上架时的自动检测机制。安装后,实际显示在应用列表中的图标和名称被动态替换为伪装的Google系标识,利用用户对知名品牌的信任降低警惕性。


安装后在应用列表中图标显示的图标和名称:


图标隐藏技术:样本通过PackageManager.setComponentEnabledSetting()方法动态禁用自身的启动器组件,使应用安装后在桌面无图标显示。

此操作使普通用户难以直接发现和卸载应用。必要时,恶意代码可通过相同方法恢复图标显示(如需诱导用户交互时):

广播监听与弹窗触发:样本在AndroidManifest.xml中静态注册广播接收器MediaHijackReceiver,监听自定义广播(如com.qjzep.irdlt.waxmu.D)和系统媒体按钮广播(android.intent.action.MEDIA_BUTTON)。

当接收器被触发时,会检查Intent中是否包含特定Extra数据(如广告配置参数)。若校验通过,则启动一个透明的Activity,并在其中加载远程下发的广告内容,实现桌面级弹窗。该设计使弹窗行为与用户操作(如按下耳机媒体键)或云端指令绑定,增强隐蔽性和灵活性。


技术特征总结:
此类样本通过伪装身份、动态隐藏和事件驱动弹窗的组合手法,构建了一条完整的灰色产业链条:
其技术核心在于滥用Android组件的动态配置能力,并与云端指令协同,实现“潜行-触发-变现”的自动化攻击流程。
八、前应用商店侧(Google Play) 治理探讨
作为应用生态的“守门人”,应用商店的平台治理是遏制恶意广告的关键。对此,我们提出以下治理建议:

END
更多精彩内容点击下方扫码关注哦~
关注云鼎实验室,获取更多安全情报
