AndroidManifest.xml中含盖的安全问题详解
发布时间:2020-10-26 04:00:09
来源:脚本之家
阅读:102
作者:
samli
0x00 关于AndroidManifest.xml
AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,Manifest文件提供有关应用程序到Android系统的基本信息,系统必须具有该信息才能运行任何应用程序的代码。换句话说APP是跑在Android系统上,既然要跑在其上,就必须提供信息给Android System,这些信息就存在AndroidManifest中。AndroidManifest.xml存放在 app/src/main/ 目录下。在反编译APK文件后,其文件是以乱码格式存在,需要进行转换才能正常查看。
AndroidManifest.xml的主要功能
命名应用程序Java包,软件包名称作为应用程序的唯一标识符;
描述了应用程序的组件,其中包括构成应用程序的Activity,Service,Broadcast Receiver和Content Provider;它还命名实现每个组件并发布其功能的类,例如Intent可以处理的消息。这些声明通知Android系统的组件及其可以启动的条件;
决定哪些processes主持application;
宣告这个App有哪些权限,它声明应用程序必须拥有的权限才能访问API的受保护部分并与其他应用程序交互。它还声明其他人为了与应用程序的组件交互而需要的权限; 5.它列出了Instrumentation在应用程序运行时提供概要分析和其他信息的类。这些声明仅在应用程序正在开发中才会存在,并在应用程序发布之前被删除; 6.它声明了应用程序需要的最低级别的Android API; 7.它列出了应用程序必须链接的库。
0x01 AndroidManifest.xml风险点分析
1、allowBackup设置风险
Android API Level 8 (Android 2.1)及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中 AndroidManifest.xml 文件中的 allowBackup 属性值,其属性值默认是 true。当allowBackup的属性值没有显示设置为false时,攻击者可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复,从而可能获取明文存储的用户的敏感信息。
android:allowBackup=["true" | "false"]
$ adb backup -nosystem -noshared -apk -f com.example.demo
$ adb restore com.example.demo
-nosystem表示不备份系统应用
-noshared表示不备份应用存储在SD中的数据
-apk表示备份应用APK安装包
-f表示备份的.ab文件路径和文件名,最后是要备份应用的packageName
restore是恢复备份的数据
2、debuggable设置风险
该属性用于指定应用程序是否能够被调试,即使是以用户模式运行在设备上的时候,如果设置为true,则可以被调试;但是现在Android版本均默认debuggable的属性值为false,所以建议使用默认配置。
android:debuggable=["true" | "false"]
3、组件导出风险
四大组件
Activity
Broadcast Receive
Service
Content Provider
可导出的组件能被第