Android Accessibility安全性研究报告

360烽火实验室

第一章    Accessibility简介

近期,360烽火实验室发现一款滥用Accessibility的木马,该木马具有浏览器地址栏劫持、搜索劫持、桌面点击劫持以及防卸载等系列恶意行为。本报告将结合我们对该木马的分析,从Accessbility的设计初衷、技术发展、滥用情况等角度研究Accessibility的安全性。

一、    设计意义

依据Android官方文档,考虑到一些用户不能很好地使用Android设备,比如由于视力、身体、年龄方面的限制,造成阅读内容、触控操作、声音信息等方面的获取困难,因此Android提供了Accessibility特性和服务帮助用户更好地使用Android设备。正由于这个介绍,在国内更普遍地被称为无障碍或残疾人模式。Accessibility的官方简介内容如下图,有兴趣详细了解该部分内容请参考官网详解[1]。

image4

图1.1 Accessibility官方简介

二、    运行原理

Accessibility[2]相关服务以及接口在Android 1.6时期就已经被加入,其中以AccessibilityService组件作为入口,结合AccessibilityEvent,AccessibilityNodeInfo等关键类完成辅助功能(其中AccessibilityNodeInfo于Android 4.0加入)。

AccessibilityService是继承了Service的抽象类,生命周期不由应用本身管理,而是由系统和用户的显式操作所控制,运行后当有AccessibilityEvent被发出时该服务会收到系统的回调。由于是由系统所启动的组件,所以与一般Service有所区别,特别的地方在于满足下面三点:

1)        该Service需要权限android.permission.BIND_ACCESSIBILITY_SERVICE,该权限保证了只有系统能绑定调用该服务;

2)        第二点,