280 likes | 494 Views
移动应用安全. Android 系统安全概述. Android 系统安全 3 个层面 Linux 层面安全、软件安装签名机制、程序运行时的安全 1 、 Linux 层面安全 每一个应用程序对应一个 Linux 用户 每个用户对应一个文件夹 文件在默认情况下仅允许据有者访问 鲁棒性. Android 系统安全概述. Android 系统安全 3 个层面 2 、软件安装签名机制 安装程序必须有一个签名 签名由程序发行方完成 用户确认程序发行方的真实身份后安装程序 签名使用“公钥、私钥对”技术. Android 系统安全概述.
E N D
Android系统安全概述 • Android系统安全3个层面 • Linux层面安全、软件安装签名机制、程序运行时的安全 • 1、Linux层面安全 • 每一个应用程序对应一个Linux用户 • 每个用户对应一个文件夹 • 文件在默认情况下仅允许据有者访问 • 鲁棒性
Android系统安全概述 • Android系统安全3个层面 • 2、软件安装签名机制 • 安装程序必须有一个签名 • 签名由程序发行方完成 • 用户确认程序发行方的真实身份后安装程序 • 签名使用“公钥、私钥对”技术
Android系统安全概述 • Android系统安全3个层面 • 3、程序运行时的安全 • Android系统的权限许可权机制,拥有许可权才能调用相关的功能 • Android允许程序在执行时调用其他程序组件(Activity、Service、Content Provider等)的安全 • Anddorid系统内部外部存储的安全
第一层面安全-超级用户权限 • 超级用户权限 • Android基于Linux • 管理员root具有最高权限 • Android默认关闭root权限 • 手机root • 手机在使用过程中能够获取root权限
第一层面安全-超级用户权限 • 获取root权限的好处 • 获系统文件管理权限(如Root Explore),卸载捆绑系统软件 • 特殊软件使用需要(如杀毒软件) • 系统优化加速需要(手机发烧友)
第一层面安全-超级用户权限 • 获取root权限的危险 • 系统不稳定(删除系统软件造成,root后失去保修) • 病毒侵入 • 手机root后,所有软件都可能获得root权限,病毒可以做任何事 • 权限管理软件作用有限 • 隐私数据暴露 • root后,隐私数据全部暴露(文件访问权限)
第一层面安全-超级用户权限 • 超级用户权限获取原理 • 利用android系统本地提取漏洞提升权限 • 超级用户权限获取分类 • 临时获取:不对系统进行修改 • 永久获取:修改系统,手机随时可以获得root权限 • 目前本地提取漏洞共出现过8个
第一层面安全-超级用户权限 • 实验5.1 • Android系统漏洞检测 • 实验软件:X-ray for Android • 步骤: • 启动安卓虚拟机 • 安装X-ray for android • 启动X-ray for android,检测虚拟机漏洞
第一层面安全-超级用户权限 • 实验要点-在安卓虚拟机上安装软件 • 启动虚拟机 • adb devices 查看系统中的虚拟机和连接终端设备 • 把要安装的apk文件复制到android SDK\platform-tools中 • 开始->运行->cmd • 用cd命令进入 android SDK\platform-tools • adb install XRAY_1.0.apk
第一层面安全-超级用户权限 • 超级用户权限获取实例z4root • 原理: • 默认程序以非root用户运行,包括adbd • adbd由init创建,然后调用setid()设置运行用户为shell用户 • 如果能够让adbd重新以root身份运行,则计算机传过来的命令也能够以root身份运行
第一层面安全-超级用户权限 • 超级用户权限获取实例z4root • 具体实现 • Linux中最大允许运行的进程数有限 • Android adb setuid漏洞利用该限制 • 制造大量僵尸进程,达到系统上限 • Kill系统中的adb进程,并占据其位置再次达到系统上限 • 系统重启adb进程(最初用户为root)
第一层面安全-超级用户权限 • 超级用户权限获取实例z4root • 具体实现 • adb完成初始化工作后,调用setid()切换shell用户,由于shell用户进程数达到上限,setid()失败,切换为未完成,adb具备root权限 • 计算机执行adb shell命令,进入root shell • 漏洞产生的原因 • adb没有检查setid()的返回值,产生了一个具备root权限的adb进程
第一层面安全-超级用户权限 • 超级用户权限获取实例z4root • /*then switch user and group to “shell”*/ • setgid(AID_SHELL) • setuid(AID_SHELL) • 漏洞的修改 • if (setgid(AID_SHELL) !=0) exit(1); • if (setuid(AID_SHELL) !=0) exit(1);
第一层面安全-超级用户权限 • root后的后续 • 向系统的/system/app目录写入root权限管理软件(通常是Superuser.apk) • 向/system/bin或/system/xbin写入su程序 • 他们协作实现root权限管理
第一层面安全-超级用户权限 • 实验5.2 超级用户权限获取 • 安装运行z4root • 安装运行Root Explorer • 安装Superuser
第一层面安全-超级用户权限 • Android系统分区及加载 • Android设备分区包括: • 系统分区、数据分区、Cache分区及SD卡分区 • 系统分区加载为只读分区,包括操作系统内容、系统函数库、实时运行框架、应用框架与系统应用程序等 • 由OEM厂商植入,外界不能修改 • 系统出现安全问题,用户启动“安全模式”,加载只读系统分区,不加载数据分区内容,隔离第三方程序威胁
第一层面安全-超级用户权限 • Android系统分区及加载 • 重要系统分区目录 • /system/app存放系统自带应用程序APK • /system/lib系统库文件 • /system/bin与/system/xbin 存放系统管理命令 • /system/framework目录存放Android系统应用框架的jar文件
第一层面安全-超级用户权限 • Android系统分区及加载 • 数据分区用于存储各类用户数据与应用程序 • 数据分区在安全模式下可不加载,可以不启动数据分区中的程序,可以格式化数据分区 • 数据分区挂载点/data
第一层面安全-超级用户权限 • Android系统分区及加载 • 数据分区重要目录 • /data/data 所以APK程序数据,每个APK对于自己的Data目录,即在/data/data目录下有与包名一样的目录,APK只能在此目录下操作,不能访问其他APK目录 • /data/app存放用户安装的APK
第一层面安全-超级用户权限 • Android系统分区及加载 • 数据分区重要目录 • /data/system存放的文件记录安装软件的信息 • /data/misc保存WIFI帐号与VPN设置等 • SD卡分区 • 外置设备,可以从计算机上进行操作,不受Android系统控制 • SD卡为FAT文件系统,无法设置用户权限 • 在加载时可以设置整个文件系统读写权限,但无法对FAT中个别文件进行特殊操作
第一层面安全-超级用户权限 • 实验5.3 adb 操作 • adb与adbd • adb(Android Debug Bridge)是与移动设备或模拟器上的adbd进行交互的命令行客户端程序 • adbd:Android平台对调试的支持通过驻留程序/sbin/adbd来进行,允许在程序开发所用的软件连接到在移动设备上运行的软件
第一层面安全-超级用户权限 • 实验5.3 • cmd //打开命令行 • 启动虚拟机 • adb devices //列举设备 • adb -s 虚拟机名(或设备名)shell //在虚拟机或设备上打开shell • 例如:adb –s emulator5554 shell
第一层面安全-超级用户权限 • 实验5.2 • shell操作 • mount //查看文件系统 • ls • cd • id
第一层面安全-超级用户权限 • 实验5.2 • ls /system • ls /system/app • ls /system/bin • ls /system/lib • ls /xbin
第一层面安全-超级用户权限 • 实验5.2 • ls /data • ls /data/app • ls /data/system • ls /data/misc • ls /mnt/
第一层面安全-超级用户权限 6、将某个目录挂载为可读写 A. 使用adb命令打开shell B. #su C.#mount -o remount,rw /system
第一层面安全-超级用户权限 • 实验5.3 超级用户权限获取 • 7、使根目录可写 • #mount • rootfs / rootfs ro 0 0 //ro 代表只读属性 • 重新执行mount命令: • # mount -o remount,rw rootfs / • rootfs / rootfs rw 0 0 //rw代表读写属于