# 滥用Accessibility service自动安装应用

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-12-18T08:55:00Z
Canonical: https://wepostx.com/topics/1251

> 乌云历史资料归档
>
> **原始作者：** 阿里移动安全
> **原始编号：** superkieran-wooyundrops:954
> **原始发布时间：** 2015-12-18 16:55
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

Author:[email protected]

# 0x00 恶意应用简介

近年许多的android市场实现免root安装应用，也就是下载完成立即自动安装，而黑产界也同样利用该技术在进行恶意推广，静默安装。最近拦截到大量恶意应用利用系统AccessibilityService静默安装应用。一旦恶意的Accessibility服务被激活，恶意应用将弹出广告，即使用户关闭弹出的广告该应用程序也会在后台下载，随后自动安装推广的恶意应用。

# 0x01 AccessibilityService介绍：

AccessibilityService作用：
Android Accessibility用于那些由于视力、听力或其它身体原因导致不能方便使用Android智能手机的用户，Android提供了Accessibility功能和服务帮助这些用户更加简单地操作设备。开发者可以搭建自己的Accessibility服务，这可以加强应用的可用性。开启AccessibilityService后应用通过它能实时地获取当前操作应用的窗口元素信息，并能够双向交互，既能获取用户的输入，也能对窗口元素进行操作，比如点击按钮。
AccessibilityService的使用场景：
Android应用市场使用android Accessibility来免root安装应用；近来火热的抢红包应用也用使用AccessibilityService自动抢红包。

# 0x02 恶意应用分析

我们监测到一款名为“WiFi密码查看器(增强版)”的应用滥用AccessibilityService。应用启动后诱导用户开启“WIFI信号增强服”，其实就是开启恶意应用自身的AccessibilityService；以查看WIFI密码让恶意应用获得root权限，而这一切都是为该恶意自动安装做铺垫。下图是该应用运行图

![原文图片](/media/2016/06/f67e15aafa728537db3cb456b7f993ed)

![原文图片](/media/2016/06/5cc51dc312eac85e6ecf6ffa8a7818e2)
 图应用启动与引导开启wifi信号增强界面
应用启动后会引导用户开启WIFI信号增强服务。应用跳转到ACCESSIBILITY_SETTINGS界面，提示用户若要增强Wifi信号强度，请开启WIFI信号增强服务。用户启用恶意应用的该服务之后，手机将疯狂下载该应用云端准备的应用包，并且在手机上自动安装运行。

![原文图片](/media/2016/06/c4c7f06fbd8368fe2b5dfcd818f7487a)

![原文图片](/media/2016/06/a904b95f23ae4ae939d1cfd943e6e321)
 图启动Accessibilty Service界面
以下是恶意代码运行流程

![原文图片](/media/2016/06/89fa806989152d520d3bc36e7a7cde9a)
 图恶意代码云信流程
流程图解析

- Wifi_list模块，恶意应用利用wifi信号增强诱导用户开启Accessiblity Service;查看Wifi密码诱导用户给该应用赋予Root权限。

- PushDownLoad模块，该模块由PushCoreService和ChapingCoreService服务组成，它们利用后台服务上传设备信息，获取待Push的应用包，下载应用包。

- 安装模块，恶意应用解析下载成功的包，然后弹出DialogPushActivity的广告框，非Root利用 AccessilbityService安装，root利用 pm install完成静默安装

- daemon模块， daemon是存放在raw目录下的elf文件，它是一个守护进程，保护应用不被杀死。daemon原理是fork出子进程之后，让子进程成为新的会话的领头进程，并与其父进程的会话组和进程组脱离，紧接着就是在子进程中定时去启动java层配置的任务。这里它保证 PushCoreService和ChapingCoreService一直在后台运行。
以下对核心服务PushCoreService跟踪分析
首先向目标服务器Post设备的imei,wifimac,SerialNumber信息，服务器返回uuid,并记录在DefaultSharedPreference文件的”uuid”字段

![原文图片](/media/2016/06/f67bcd59a139f59c819b4c22a103b2c7)
 图请求服务器获取uuid
上图最后调用this.m_context.handler.sendEmptyMessage(1)，启动线程GetPushThread线程。该线程向http://api.findzhibo.com/ad/open?appCode=1&appVersion=appVerion请求获取当前应用的“open_status”字段。只有“open_status”字段为True时，云端服务器才会继续运行，否则表示当前应用版本对应的云端关闭。开启状态向http://api.findzhibo.com/index.php/ad/push，发送post请求，服务器返回待push的应用，写入“cc_push_sp.xml”的push_json字段

![原文图片](/media/2016/06/992cc6185784cd54b7c039f14d9cd96b)
 图云端恶意推广app的push_json

![原文图片](/media/2016/06/a3cb8b0f15e758395f22c43cf6bdf4aa)
 图云端请求获取恶意推广应用
上图最后调用this.m_context.handler.sendEmptyMessage(2),解析push_json字段填充intent,启动PushDownloadService进行应用下载和恶意广告页面弹出。PushDownloadService解析appJson,获取下载信息，随后通过handler消息对应用下载安装。

![原文图片](/media/2016/06/586fb9712fbe79192fdaa35464d22a05)
 图解析appJson,进行下载安装
Handler存在4个msg.what值，‘3’处理下载失败；‘4’下载成功；‘5’弹出DialogPushActivity广告框若开启Accessiblity Service，启动WifiZengQiangService； ‘6’弹出DialogPushActivity广告框，启动恶意推广的应用。 首先发送“4“表示开始后台下载，随后启动下载安装的线程。该线程检查本次推送的应用是否已经被下载到指定目录，sdcard/.wifi_ckq保存下载的应用包以及广告图片，appName经过md5加密。

![原文图片](/media/2016/06/d8b317bda7689ef8d060b640c9486d30)
 图sdcard目录存放下载的推广应用包

![原文图片](/media/2016/06/1a0b3714101d8711693bf06fe4395c79)
 图下载恶意推广应用
下载完成后发送对应用静默安装，设备非root发送‘5’，root使用 pm install安装应用随后发送‘6’启动应用。

![原文图片](/media/2016/06/fee0f4f25300747c3b9200b31b7a26d3)
 图发送handler安装应用
handler ‘5’,’6’都会启动DialogPushActivity，

![原文图片](/media/2016/06/06c9df791fb628b8a1c5bcd171d8b396)
 图启动DialogPushActivity
DialogPushActivity其实就是一个ImageView，用户在触摸该界面后推送的应用将被自动安装

![原文图片](/media/2016/06/60b632c70b9cec3a62c4d44edb3ef8df)

![原文图片](/media/2016/06/8affb3a7bb048c9719e8e3511d9c93e0)
 图DialogPushActivity界面
启动WifiZengQiongService自动安装服务。之前的Ghosh Push,Kemoge等病毒家族，都是先对设备root然后植入推广应用。而该恶意应用的AccessibilityService一旦被启动，随后应用弹出恶意广告界面，即使受害者关闭弹出的广告，该应用程序也会被自动下载，随后成功安装。这个过程是调用系统的packageinstaller,获取安装界面的按钮位置，Accessibility提供的模拟用户点击功能，代替用户自动点击下一步，直到安装结束。下图是弹出的广告图，触碰后即可开始下载安装推广的应用。下图AccessibilityService里唤起安装界面

![原文图片](/media/2016/06/9ae6970a31eeff63cf8c6f2ba1481700)
 图调用系统packageInstaller
AccessibilityService的onAccessibilityEvent方法不仅处理’com.android.packageinstaller’ 的event,还处理一些安全软件，这样该恶意应用将会完全控制安全软件行为，也就意味着该应用可以自动安装，启动任意app，卸载任意应用，而且利用AccessibilityService控制安全软件进行免杀。

![原文图片](/media/2016/06/b683370c6bce837bf270e164345ec5c9)
 图AccessibilityService控制指定应用包
在推广的应用成功安装过后，系统将会发出“android.intent.action.PACKAGE_ADDED”广播消息，AppListenerReceiver类接受该广播并启动应用。

# 0x03 总结与建议

到此滥用AccessibilityService过程分析完毕。该应用已增强WIFI信号诱惑用户启用Accessibility，以及查看WIFI密码是应用获取root权限。在此提醒用户谨慎给不受信应用开启AccessibilityService，以免被恶意应用控制；最近火热的抢红包应用也会利用AccessibilityService，实现自动抢功能，我们已发现黑客利用‘自动抢红包’诱导用户开启AccessibilityService控制手机，建议用户在安全渠道下载抢红包软件，以免不必要的损失。

## Replies
