Android Service 评估浅谈
Android Service组件介绍
Android Service简介
Android官网对Service组件的介绍如下,Service
是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。
Service有三种类型,分别是前台服务,后台服务和绑定服务。其中,前台服务和后台服务分别执行用户能够注意和不能够直接注意到的操作;当使用绑定服务时,需要实现一组回调方法onStartCommand()
(让组件启动服务)和 onBind()
(实现服务绑定)。
AIDL 通信简介
Android Service 常见攻击面及评估手段
Service组件作为提供APP服务的组件,经常需要被其他应用使用,而绝大多数问题也是由于其导出造成的,下面会例举几种的典型的攻击情况
发现攻击面
- 使用Drozer工具
使用Drozer工具,能够找到导出的Service组件
- 反编译APK
通过反编译APK,能够找到AndroidManifest.xml
中有关Sertvice组件的配置。
在 Android 12 以下的版本,可以查找未显式声明android:exported
属性并配置了 intent-filter
的Service组件,或者显式声明了 android:exported="true"
的Service组件;在 Android 12 中,使用了 intent-filter
的Service组件必须显式声明android:exported
属性。此处推荐一个反编译的软件GDA,通过这个软件可以自动解析AndroidManifest.xml
文件,从而得出是否存在导出的Service组件。
拒绝服务
越权调用
消息伪造
Android Service 防护小结
参考文献
行为变更:以 Android 12 为目标平台的应用 | Android 12 Beta 版 | Android Developers