【技术分享】使用插件框架已成为Android广告软件的新趋势

https://p5.ssl.qhimg.com/t01667b38cf7dc8662c.jpg

作者:興趣使然的小胃

稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

对于合法的Android应用而言,使用嵌入式广告SDK或推广其他应用程序是普遍存在的行为,展示广告或推广其他应用可以为合法应用开发者带来收益。然而,最近我们观察到移动广告社区中存在一个令人担忧的趋势,那就是Google Play商店中有些广告软件滥用第三方DroidPlugin框架,其行为已变得更具侵略性。

本文中,我们将大概介绍下研究人员是如何发现滥用第三方DroidPlugin框架的那些Android广告软件。我们已将调查结果与Google共享,所有违背Google服务条款的应用已从Google Play商店中移除。


二、Andorid插件技术的优与劣

插件技术最初由第三方引入,用来为Android添加额外的增强功能。比如,Parallel Space(https://play.google.com/store/apps/details?id=com.lbe.parallel.intl&hl=en)插件允许用户在一台手机上运行两个Twitter应用。另外,插件技术也可以提高热补丁(hot patching)的修补速度。

不幸的是,插件技术所提供的增强功能也可以用于恶意行为。恶意软件作者早已滥用合法的插件技术来实现恶意目的,如绕过终端设备的反恶意软件机制(特别是静态扫描机制)。我们在关于PluginPhantom的研究报告中已经讨论过这类技术细节,其他研究人员也研究过插件技术如何用于网络钓鱼攻击。

在之前的研究中,我们发现恶意软件已经在滥用“DroidPlugin”和“VirtualApp”这两种最流行的开源插件框架。这两种框架都可以用来启动任意Android应用,从理论上讲,这些应用甚至不需要安装在手机上。从技术角度而言,Android的插件技术本质上是一种应用层虚拟环境技术。

Unit 42研究人员最近发现Android插件功能已成为广告软件推广应用的一种创新方式。启用插件功能的应用可以在不安装其他应用的前提下启动这些应用。这为广告软件提供了极大的便利,因为它们可以在不与用户交互的情况下安装和推广其他应用。

这种应用推广方式存在安全风险,因为当前的插件框架使用了较为脆弱的安全机制。这些插件框架无法在不同的插件实例中区分权限和隔离数据。因此,当被推广的应用经由插件框架启动时,这些应用拥有了与宿主应用程序相同的权限(通常是Android上的所有权限),并且可以访问宿主应用或其他插件应用的数据,这违反了Android应用沙箱中的重要准则,即:

“在Android应用沙箱中,不同应用之间无法共享数据和代码资源”

合法应用遵守沙箱准则,假定自己总是会安全地运行在自己的沙箱内,但现在它们正面临安全风险,因为它们无法预测自身是否在插件环境中启动运行。

例如,我们在Google Play中发现有32个应用使用了DroidPlugin框架,21个应用使用了VirtualApp框架。这些应用大部分都是PUP(potentially unwanted programs,潜在有害程序)或者广告软件,现在已经从Google Play上移除(见本文结尾部分)。

在接下来的示例中,我们会演示两个广告软件家族如何滥用插件技术来推广应用程序。


三、示例一:自动化推广应用

2016年9月,名为“Clean Doctor”(包名为“com.nianclub.cleandoctor”)的应用自1.2.0版本开始变得更具侵略性。这款广告软件滥用了VirtualApp 框架,其在Google Play中的演化时间线如图1所示:

http://p6.qhimg.com/t01b100b85ddcd313be.png

图1. “Clean Doctor”应用的演化时间线

为了推广应用,广告软件通常会下载应用,然后经常向用户展示应用程序安装界面。用户安装推广的应用后,广告软件作者就会获得推广收益。Clean Doctor(以下简称CD)使用了不同的策略来实现这一目标。

CD从地址为“familysdk.com”的C2服务器上获取任务信息,利用云存储服务下载多个推广应用。它不需要请求用户安装这些推广程序,而是以两种方式启动这些推广应用:

1、通过点击快捷方式启动推广应用

CD在设备主屏幕上为每个下载的应用(如图2所示)创建快捷方式。用户点击这些快捷方式时,相应的应用会以插件应用的形式在CD的沙箱内启动。大多数Android用户在点击快捷方式时无法区分这种启动方式与默认启动方式之间存在的区别。比如,当用户点击“Evony: Battle On”这个游戏应用的快捷方式时,该应用会直接立即地显示在屏幕中,但实际上应用是以插件应用方式启动,运行在插件虚拟环境中。

http://p5.qhimg.com/t01924db6ecda3a8b00.png

图2. CD创建推广应用的快捷方式

2、自动启动推广应用

由于所有插件应用都在宿主应用的完全控制下,宿主应用可以控制每个插件应用的生命周期。当收到系统事件通知时,CD能够以插件应用模式自动启动这些推广应用。

http://p1.qhimg.com/t01462a2c1b46439aa8.png

图3. 通过插件方式启动的推广游戏应用


四、示例二:同时推广多个应用

在2017年1月底,我们发现Google Play中的一个名为“bloodpressure”的广告软件(包名为“com.blood.pressure.bost”)滥用了Android插件技术,变得更具侵略性。这款广告软件会自动启动独立的应用来显示广告,同时会在单个屏幕上同时推广多款应用。

该广告软件自2.5版开始使用嵌入式VirtualApp框架,但直到2017年2月才从Google Play上移除。移除时该广告软件的安装量已经在10,000到50,000次之间。这款应用在Google Play上的生命周期如图4所示。

http://p1.qhimg.com/t01ea448e7dbce8e36d.png

图4. “bloodpressure”广告软件的演化时间线

(一)与其他广告软件的不同点

大多数广告SDK使用webview组件来显示banner以及全屏广告,使用这类SDK的应用一次只能展示一个广告。我们发现的bloodpressure广告软件样本与此不同,可以在单个屏幕上同时向用户展示多个应用广告。为了达成此目的,该广告软件会自动启动一个插件应用,多个广告会在这个插件应用中集中显示(如图5所示)。这项技术在危害程度上不及那种不经用户交互就启动推广的技术,但能够可以允许广告软件作者有更多的机会来安装推广应用。

http://p0.qhimg.com/t013645bcaa828e0f63.png

图5. 插件应用展示多个广告

(二)技术分析

这款广告应用的工作流程如图6所示,分为以下几个步骤:

1、从远程服务器获取配置文件

宿主应用启动后会访问“http://qwe.ortpale.com/conf/bloodinfo.txt ”,从远程服务器上下载配置文件。注意到这里的HTTP请求中,User-Agent字段值为“Ray-Downer.”。

2、解码并保存插件应用

宿主应用中包含一个名为“protect.data”的原始资源。这个资源文件实际上是一个经过编码的APK插件。宿主应用解码并保存该应用。

3、安装插件应用

宿主应用利用VirtualApp框架在自己的沙箱内安装插件应用。

4、启动插件应用

插件应用安装成功后,宿主应用可以使用VirutalApp的API函数启用插件应用。一旦插件应用成功启动立即开始向用户展示广告。

http://p8.qhimg.com/t01453722783ecb079a.png

图6. 插件型广告应用的工作流程


五、结论

Android的插件技术可以允许广告软件作者以新的方式谋取利益。这种技术滥用行为对广告网络和Android用户而言都是有害的。我们希望移动开发社区和安全社区能够共同合作,解决Android插件技术中存在的安全问题。Android用户需要注意的是,在Android插件环境中,他们的插件应用和设备中的私人数据信息存在很大的安全风险。


六、致谢

非常感谢来自于Palo Alto Networks的Ryan Olson和Kirill Zemnucha,他们为本文的成稿以及广告应用样本的发现提供了很多的帮助和支持。


七、在Google Play中被移除的其他插件应用

http://p0.qhimg.com/t01320f3e22034fe045.png

http://p0.qhimg.com/t01608ce4f49a9b0c74.png

http://p1.qhimg.com/t019eefb0a04903a5d4.png

样本SHA256值:

5e5bea52b1f9fcbd78c990cd09057780ebda669a5b632a8dd46ecfcfbfaf6369
24d308a8f2bcabd97b0e7acba8e22821914e464cdb7d0ed61a26400456870edd
6c2a23c0ca361fabc95e2eac3a13641cafe53803c8a4fc32b8a182374ac32ee1
dec71f2464bdfcc7a8fae02e2c103a31b746aa798aeebe1721ccd037156106f4
748dae1604fb0b747bcdeb476aea7d1f6bbec7d7a260613241a9fc3ef1243c66
ee7b82ef97928e0e4d100eb82c37bac6d87ee275cc89ec67c3f8a64fd13561be
5467ebe255bd59912c61aa1b801ea93972672885bfa29c3ee9756342ceb65228
49a9767d1775dd45545ea8fff1250e89fa6fd0c1a694b6583f4e79cd1b14c162
95d12555b71adf13eb40cb78c2f8cfa17aeaaf6f063bcd209a6037463e8fca66
d1916eb07c0a8494df21f8453511df6655fe1bc07efb37b526eae8724665ab91
4e25245dc9c0c8b6cf98e9fcdd6f94dd8e0dad7ad526248999f913682df28531
(完)