Android广告软件的新趋势:滥用Android插件框架,

简介: 本文讲的是Android广告软件的新趋势:滥用Android插件框架,合法的移动应用程序通常会嵌入广告SDK或为其他应用程序打广告,毋庸置疑,展示广告或为其他应用程序打广告可为合法的应用程序提供收益。不过,最近我们观察到移动广告社区的一个令人震惊的趋势,Google Play商店中的一些广告软件程序正在滥用第三方Android插件框架DroidPlugin,这是一个实现动态加载的Android插件框架,可以免安装、免修改的运行第三方APK。
本文讲的是 Android广告软件的新趋势:滥用Android插件框架,

Android广告软件的新趋势:滥用Android插件框架

合法的移动应用程序通常会嵌入广告SDK或为其他应用程序打广告,毋庸置疑,展示广告或为其他应用程序打广告可为合法的应用程序提供收益。不过,最近我们观察到移动广告社区的一个令人震惊的趋势,Google Play商店中的一些广告软件程序正在滥用第三方Android插件框架DroidPlugin,这是一个实现动态加载的Android插件框架,可以免安装、免修改的运行第三方APK。

DroidPlugin的原理是利用Android一个进程可以运行多个APK的机制,通 过API欺骗让系统以为只有宿主App存在,同时通过预先占坑来创造插件App的运行环境,最后通过动态代理实现函数hook、Binder代理绕过部分系统服务限制,从而实现应用的组件化。

我们已经发现DroidPlugin的滥用已经让合法的移动应用程序成为了一种广告骚扰软件,目前,我们的研究人员已与Google分享了我们的调查结果,并将所有发现的滥用DroidPlugin的应用程序从Google Play商店中删除。

Android插件技术的“好”和“坏”

Android插件技术最初是由第三方引入,旨在为Android添加额外的增强功能。例如,Twitter应用程序可以使用这些增强的功能来让用户同时在一个手机上运行两个Twitter应用程序。另外,插件技术也可以提高热补丁的修复速度,但插件技术提供的增强功能也可以被用于恶意攻击,恶意软件的开发者一直在滥用合法的插件技术来实施端到端攻击,例如绕过设备上的反恶意软件检测,特别是静态检测来实施网络钓鱼攻击。

我们在以前的研究中就曾发现,恶意软件就滥用过最流行的开源插件框架“DroidPlugin”和“VirtualApp”,这两种框架都可以启动任意的Android应用,从理论上讲,它们不会被安装在手机上,从技术上讲,Android插件技术是一个应用级的虚拟化环境。

就在最近,我们发现了Android插件功能为了软件推广的广告模式提供了一种新的方式。支持插件的应用程序可以自动启动不同的应用程序,而无需安装它们。这为广告宣传提供了一种快捷方式,从而让使用插件的应用程序开发商获得巨大收入,因为开发商可以在没有任何用户交互的情况下,推出广告。

这种模式的广告宣传可能会发生安全风险,因为插件框架的安全机制是比较脆弱的,这些插件框架无法在不同的插件实例之间分隔权限和隔离数据。因此,当通过插件框架执行升级后的应用程序时,它具有与主机应用程序(通常是所有Android权限)相同的权限,并且可以访问主机应用程序或其他插件应用程序的数据。这明显与Android应用程序沙盒机制不符,

Android沙盒的本质是为了实现不同应用程序和进程之间的互相隔离,即在默认情况 下,应用程序没有权限访问系统资源或其它应用程序的资源。每个应用程序和系统进程都被分配唯一并且固定的User Id,这个User Id与内核层进程的User Id对应。每个应用程序在各自独立的Dalvik虚拟机中运行,拥有独立的地址空间和资源。运行于Dalvik虚拟机中的 进程必须依托内核层Linux进程而存在,因此Android使用Dalvik虚拟机和Linux的文件访问控制来实现沙盒机制,任何应用程序如果想要访 问系统资源或者其它应用程序的资源必须在自己的manifest文件中进行声明权限或者共享User Id。

例如,在Google Play中,我们观察到32个应用程序使用了DroidPlugin框架,21个应用程序使用了VirtualApp框架,其中大多数是PUP(潜在有害的程序)或广告软件,目前,这些应用程序已从Google Play中删除,详细信息请看下表:

Android广告软件的新趋势:滥用Android插件框架

Android广告软件的新趋势:滥用Android插件框架

下面,我们将演示两个广告软件家族是如何在应用程序中滥用插件技术的。

样本1:自动式和攻击式的广告宣传

在2016年9月,名为“Clean Doctor”(全名为“com.nianclub.cleandoctor”)的应用程序的开发人员在1.2.0版本中让该应用变得更具攻击性,该广告软件滥用了VirtualApp框架。 下图清楚地显示了Clean Doctor 在Google Play的变异时间表:

Android广告软件的新趋势:滥用Android插件框架

Clean Doctor与其他广告软件的对比:

为了宣传新的应用程序,广告软件通常会先下载应用程序,然后经常向用户显示应用程序的安装界面。用户安装该应用后,广告软件的开发者便会收到“促销”新应用的回款。Clean Doctor采取了不同的策略来实现推广新应用的目标。

Clean Doctor会从其C2服务器“familysdk[.]com””中获取任务信息,并从云存储服务中隐藏下载许多升级的应用程序。它不要求用户安装这些下载的应用程序,而是以两种不同的方式启动应用程序。

1.单击快捷方式启动:

Clean Doctor会在每个下载的应用程序的设备主屏幕上创建快捷方式(如下图所示)。当用户点击快捷方式时,它会在Clean Doctor的沙盒中启动相应的应用程序作为插件应用程序。对于大多数Android用户来说,点击快捷方式时,很难注意到这种启动与默认启动模式之间的区别。例如,当用户点击游戏“文明帝国”的快捷方式时,该游戏将会直接显示出来,但游戏实际上是作为插件应用启动的,并且在插件虚拟环境中运行。

Android广告软件的新趋势:滥用Android插件框架

2.自动启动:

由于所有插件应用程序都受主机应用程序的完全控制,主机应用程序可以控制每个插件应用程序的运行周期。在收到主机的命令时,Clean Doctor可以自动启动广告应用程序作为插件应用程序。

Android广告软件的新趋势:滥用Android插件框架

样本2:多个应用程序的广告宣传

在2017年1月底,我们观察到,Google Play中广告软件应用程序“bloodpressure”(全名为“com.blood.pressure.bost”)也通过滥用Android插件技术来对宣传应用程序。此广告软件会自动启动单独的应用来显示广告,并在单个屏幕中推荐多个应用。

Bloodpressure最开始使用的是2.5版的嵌入式VirtualApp框架,但在2017年2月初已被Google Play删除。在删除时,Bloodpressure的安装次数已经到达为10000到50000次。 Bloodpressure在Google Play中的生命周期如下图所示:

Android广告软件的新趋势:滥用Android插件框架

Bloodpressure与其他广告软件的对比:

大多数广告SDK使用网络视图组件来展示横幅广告和全屏广告。使用这些SDK构建的应用程序一次只能显示一个广告。而我们发现的Bloodpressure广告软件却完全不是这样的,它可以在单个屏幕上向用户显示许多应用的广告。为了实现这一点,Bloodpressure将自动启动一个插件应用程序,其中许多广告会一起显示(如下图所示)。这种技术并不像那些在没有用户交互的情况下启动推广的应用程序那样有害,但却允许广告软件的开发者有更多机会来安装升级的应用程序。

Android广告软件的新趋势:滥用Android插件框架

Bloodpressure的技术原理分析

Bloodpressure的工作流程如下图所示:

Android广告软件的新趋势:滥用Android插件框架

具体步骤如下:

1.从远程服务器获取配置:

一旦主机应用启动,它就会通过URL http[:]//qwe.ortpale[.]com/conf/bloodinfo.txt连接到远程服务器,以获取配置文件。有趣的是,HTTP请求头中的User-Agent属性设置为“Ray-Downer”。

2.解码并保存插件应用程序

主机应用程序包括名为“protect.data”的原始资源。这个资源文件实际上是一个编码的插件APK文件。主机应用程序对此文件进行解码并保存。

3.安装插件应用程序

主机应用程序利用VirtualApp框架在其沙盒中安装插件应用程序。

4.启动插件应用程序

安装插件应用程序成功后,主机应用程序可以通过调用VirutalApp的API启动该插件。一旦插件应用程序启动,就可以开始向用户显示广告了。

总结

Android插件技术可以使广告软件开发者以新的方式进行获利。这种滥用插件技术的行为对广告网络以及Android用户都非常危险。我们希望移动开发社区和安全社区能共同合作,以解决Android插件技术中的安全问题。 Android用户也应该明白,在Android插件环境中操作时,他们的插件应用程序及其设备的隐私都处于危险之中。




原文发布时间为:2017年3月31日
本文作者:xiaohui
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
1月前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
76 1
|
4月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
5月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
1月前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
6月前
|
安全 Java Android开发
安卓开发中的新趋势:Kotlin与Jetpack的完美结合
【6月更文挑战第20天】在不断进化的移动应用开发领域,Android平台以其开放性和灵活性赢得了全球开发者的青睐。然而,随着技术的迭代,传统Java语言在Android开发中逐渐显露出局限性。Kotlin,一种现代的静态类型编程语言,以其简洁、安全和高效的特性成为了Android开发中的新宠。同时,Jetpack作为一套支持库、工具和指南,旨在帮助开发者更快地打造优秀的Android应用。本文将探讨Kotlin与Jetpack如何共同推动Android开发进入一个新的时代,以及这对开发者意味着什么。
|
1月前
|
算法 JavaScript Android开发
|
1月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
141 1
|
1月前
|
自然语言处理 数据可视化 Java
国内首位聋人 Android 软件工程师体验通义灵码,“这真是太棒了”
@workspace 功能发布后,我们收到了非常多新老朋友的积极反馈,其中有一个特别的朋友给我留下了深刻的印象,来分享一下他的故事。
|
2月前
|
Android开发
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
81 0