深度分析:安卓上的点击欺诈应用 GhostClicker

简介: 本文讲的是深度分析:安卓上的点击欺诈应用 GhostClicker,最近,我们发现了一个影响十分广泛的自动点击广告软件,事实上,我们了解到Google Play有多达340个这样的应用程序,其中一个名为“阿拉丁冒险世界”的,甚至被下载了500万次。
本文讲的是 深度分析:安卓上的点击欺诈应用 GhostClicker最近,我们发现了一个影响十分广泛的自动点击广告软件,事实上,我们了解到Google Play有多达340个这样的应用程序,其中一个名为“阿拉丁冒险世界”的,甚至被下载了500万次。这些广告嵌入式应用程序的类型包括休闲游戏,提升设备性能实用程序,如清理工具和加速器,文件管理器,QR及条形码扫描程序、多媒体录像机、播放器、设备充电器和GPS /导航等相关应用程序。

虽然目前大多数这些应用程序已被删除,但是截止2017年8月7日仍有101个可以下载。我们的检测传感器在东南亚国家以及巴西,日本,台湾,俄罗斯,意大利以及美国都检测到了。

我们对这些广告软件的检测主要依赖于GhostClicker(ANDROIDOS_GHOSTCLICKER.AXM),因为它的自动点击程序往往都是隐藏在谷歌最流行的应用程序和应用程序接口(API)的Google移动服务(GMS)中。GhostClicker也可以隐藏在Facebook广告的软件开发工具包(SDK)中。它将自己嵌入这两个伪装成一个名为“logs”的软件,我们猜测这可能是为了避免冒充合法的应用程序组件会引起怀疑。

 深度分析:安卓上的点击欺诈应用 GhostClicker

图1. GhostClicker嵌入的应用程序的下载高达500万次

 深度分析:安卓上的点击欺诈应用 GhostClicker

图2. GhostClicker的代码隐藏在GMS或Facebook Ads的SDK中

其实,GhostClicker是非常普遍而且持久的,但是我们对其仍然很好奇。这些广告软件都会有一些请求。一旦启动,受影响的应用将检索设备的系统属性(http.agent),用于在Android设备中配置User-Agent字符串。如果字符串包含“nexus”,则GhostClicker的进程将不被触发。我们将此例程作为逃避像Android的内置Android应用程序沙箱之类的沙盒的方法,因为Android模拟器/沙盒环境通常被称为“Nexus XXX”。

 深度分析:安卓上的点击欺诈应用 GhostClicker

图3:当设备的http.agent不包含“nexus”时,GhostClicker被触发

我们分析的一些GhostClicker嵌入式应用程序在首次运行时也会要求设备管理权限,但不声明元数据中使用的安全策略,例如擦除数据和重置密码。我们猜想这可能是阻止用户删除应用程序的一种方法,因为这使得卸载应用程序的过程漫长而笨重。这当然不是一个对用户友好的过程,因此我们在卸载使用设备管理的应用程序后都需要在应用程序删除之前先禁用它。

深度分析:安卓上的点击欺诈应用 GhostClicker

图4.受GhostClicker影响的应用程序请求设备管理权限

 深度分析:安卓上的点击欺诈应用 GhostClicker

图5.无法卸载应用程序的某些用户的快照

GhostClicker通过自动点击获得欺诈性保护

与其他广告软件不同,GhostClicker不使用JavaScript代码查找/检索并单击广告。而是将其代码插入Admob(Google拥有的移动广告平台)中,以获取广告的位置。获取设备的屏幕尺寸(宽度和高度)后,它会计算适当的XY坐标,然后使用dispatchTouchEvent API来模拟点击。事实上,它的绰号是真的:在设备的屏幕上重复点击广告。

为了赚取更多的收入,GhostClicker会产生假的流量。它将弹出在Google Store中的其他应用程序的下载链接,或者通过与其命令和控制(C&C)服务器的通信在设备的浏览器中打开YouTube视频链接。激活设备管理后,GhostClicker将每分钟执行一次这些自动点击。

 深度分析:安卓上的点击欺诈应用 GhostClicker

图6. GhostClicker插入代码以获取AdMob的内容

 深度分析:安卓上的点击欺诈应用 GhostClicker

图7. GhostClicker生成坐标

 深度分析:安卓上的点击欺诈应用 GhostClicker

图8. GhostClicker根据XY坐标构建MotionEvent(模拟触摸)

 深度分析:安卓上的点击欺诈应用 GhostClicker

图9. GhostClicker使用dispatchTouchEvent API自动点击广告

我们搜索了GhostClicker的踪迹,发现它是自己早期的迭代。更新版本删除了自动点击功能和设备管理权限请求,这可能使的广告软件更加隐蔽。用户解锁屏幕后,如果设备连接到具有数据的网络,广告软件将以特定间隔弹出插页式广告。我们在“阿拉丁的冒险世界”遇到了这个版本的GhostClicker。

回顾广告软件的时间表,我们也看到嵌入GhostClicker的应用程序不断发布了将近一年时间。而GhostClicker早在06年8月就出现了,当时隐藏在GMS的SDK中。到2017年3月,GhostClicker去除了自动点击并利用Admob,Startapp和Facebook Ads在收到C&C命令时弹出插页式广告。到5月份,它重新整合自动点击并隐藏在Facebook Ads的SDK中。

缓解措施

广告是移动生态系统中的无害主义者。然而,GhostClicker则展示了广告软件如何进行入侵,当然更不用说挤占设备的资源 – CPU,电池和互联网数据等。另外其还可能在不知情或者同意的情况下收集个人信息,,使用户的隐私处于危险之中。除此之外,广告软件还可以将用户暴露于那些远不止是广告软件的真正的恶意软件中。

GhostClicker可以通过限制使用设备管理功能来进行缓解,还可以利用创建安全感知的应用程序,如企业设备或BYOD管理和防病毒应用程序。日常用户这样子做了防范的话问题不大。

建议对操作系统进行更新(或询问您的OEM有关更新可用性),并采用最佳做法来保护个人移动设备。企业也应该对其公司设备或BYOD环境做同样的事情,因为它们是使用设备管理的设备。另外阅读应用程序评论还有助于确定应用程序是否执行某些可疑行为。




原文发布时间为:2017年8月22日
本文作者:鲁班七号
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
8天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
34 15
Android 系统缓存扫描与清理方法分析
|
3天前
|
搜索推荐 开发工具 Android开发
打造个性化Android应用:从设计到实现的旅程
【10月更文挑战第26天】在这个数字时代,拥有一个能够脱颖而出的移动应用是成功的关键。本文将引导您了解如何从概念化阶段出发,通过设计、开发直至发布,一步步构建一个既美观又实用的Android应用。我们将探讨用户体验(UX)设计的重要性,介绍Android开发的核心组件,并通过实际案例展示如何克服开发中的挑战。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧,帮助您在竞争激烈的应用市场中脱颖而出。
|
5天前
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
16 2
|
9天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
34 5
|
9天前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
|
18天前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
36 4
|
18天前
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
40 2
|
22天前
|
存储 Linux Android开发
Android底层:通熟易懂分析binder:1.binder准备工作
本文详细介绍了Android Binder机制的准备工作,包括打开Binder驱动、内存映射(mmap)、启动Binder主线程等内容。通过分析系统调用和进程与驱动层的通信,解释了Binder如何实现进程间通信。文章还探讨了Binder主线程的启动流程及其在进程通信中的作用,最后总结了Binder准备工作的调用时机和重要性。
Android底层:通熟易懂分析binder:1.binder准备工作
|
28天前
|
JSON API Android开发
探索安卓开发之旅:打造你的第一个天气应用
在这篇文章中,我们将一起踏上一段激动人心的旅程,学习如何在安卓平台上开发一个简单的天气应用。通过实际操作和代码示例,我们将逐步构建一个能够显示当前位置天气情况的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供清晰的指导和启发性的见解,帮助你理解和掌握安卓开发的基础知识。让我们一起探索代码的世界,解锁新技能,实现你的创意和梦想。
|
28天前
|
XML 数据可视化 Android开发
Android应用界面
Android应用界面中的布局和控件使用,包括相对布局、线性布局、表格布局、帧布局、扁平化布局等,以及AdapterView及其子类如ListView的使用方法和Adapter接口的应用。
17 0
Android应用界面