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中删除,详细信息请看下表:

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

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

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

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

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

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

1.单击快捷方式启动:

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

2.自动启动:

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

样本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中的生命周期如下图所示:

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

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

Bloodpressure的技术原理分析

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

具体步骤如下:

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

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-08-06 02:50:04

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

赛门铁克发现一款新的恶意软件“Android.Counterclank”

近日,赛门铁克声称发现一款新的恶意软件"Android.Counterclank",可能已感染500万安卓手机用户,有可能造成安卓史上最大规模的恶意软件攻击活动.随后国内其他安全厂商也表示同意赛门铁克发现,并迅速推出了查杀补丁. 记者就此事对移动安全专家网秦进行了采访,网秦表示:"根据我们的检测报告,Android.Counterclank使用底层的Apperhand软件开发工具包来嵌入应用程序,不具备常见的木马.蠕虫或rootkit等恶意入侵特征.但由于推送广告.修改浏览器

Android Studio3.0新特性及安装图文教程

Android Studio是Android的官方IDE.它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用. 它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑.调试.测试和性能分析工具. 一.Android Studio3.0新特性 (1).核心IDE更改 我们将基础IDE从IntelliJ 2016.2升级到2017.1.2,在2016.3和 2017.1中增加了许多新功能, 包括参数提示,语义突出显示,搜索中的即时结果等等.

Android上使用jspf插件框架的方法

  本文实例讲述了Android上使用jspf插件框架的方法.分享给大家供大家参考.具体如下: jspf (Java Simple Plugin Framework) 是一个插件框架,集成了很多 IoC 框架的概念在里面. ? package de.jspfdemo; import net.xeoh.plugins.base.PluginManager; import net.xeoh.plugins.base.impl.PluginManagerFactory; import net.xeoh

Android Studio(二):快捷键设置、插件安装

Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Android Studio编码 Android Studio(四):Android Studio集成Genymotion Android Studio(五):修改Android Studio项目包名 Android Studio(六):Android Studio添加注释模板 Android Studio

Android实现QQ新用户注册界面遇到问题及解决方法_Android

在上篇文章给大家介绍了Android实现QQ登录界面遇到问题及解决方法,本篇文章继续给大家介绍有关android qq界面知识. 先给大家展示下效果图: 问题: 1.下拉列表(因为还没看到这里...) 2.标题栏显示问题 3.按钮的 Enable 设置 以下是代码: 布局 fragment_main(问题1) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools

android studio 问题-android studio导入新目后出错

问题描述 android studio导入新目后出错 Error:Cause: failed to find target with hash string 'android-21' in: E:wcxAndroidsdkOpen Android SDK Manager 解决方案 sdk目录下的platform文件夹下有android-21吗 解决方案二: 不同的按钮 设置 不同的点击事件监听就好了 bt1.setonclicklistener(new onclicklistener{ ...

32位-想给android studio配置新的模拟器 给推荐个

问题描述 想给android studio配置新的模拟器 给推荐个 安装了android studio发现原装的模拟器用不了 下载了几个推荐的 有的因为要下载国外的东西安装失败 有的是因为系统不兼容装不了 我的系统是XP32位的 求大神推荐个国内可以安装的模拟器 解决方案 genymotion,好用 解决方案二: Genymotion 个人版下载地址:Genymotion个人版 需要先注册 才可以下载哈 解决方案三: 还是用真机吧,AVD不是那么好用的

一种提高Android应用进程存活率新方法(上)

基础知识 Android 进程优先级 1 进程优先级等级一般分法 Activte process Visible Process Service process Background process Empty process 2 Service技巧 onStartCommand返回START_STICKY onDestroy中startself Service后台变前置,setForground(true) android:persistent = "true" 3 进程优先级号 P

android studio是自带genymotion模拟器插件的????

问题描述 android studio是自带genymotion模拟器插件的???? android studio是自带genymotion模拟器插件的????如果是自带的要怎么调出来?? 求告知~~~~ 解决方案 如果是第一次安装的话,这个插件是还没安装好的,可以通过新建一个android项目,AS会自动的安装上模拟器 解决方案二: 没有android studio没有自带genymotion模拟器.他两不是一个公司的产品.你需要在genymotion官网,注册下载,然后集成到android