【移动应用安全】移动应用安全概述及超级用户权限获取
1. Android 系统安全
Android 系统安全包含两个层面:系统安全和应用安全
1.1 系统安全
系统安全包含内核层安全、架构层安全和用户认证机制
(为了方便复习检查,下面的目前就不加标题了)
内核层安全
来源:内核安全漏洞(如导致本地代码提权)
解决:将 SELinux(Security-Enhanced Linux)引入内核层增强安全性能,SElinux for Android
架构层安全
来源:安全漏洞(如 Root 权限泄露、OpenSSL 库生成随机数可预测)
解决:增强现有安全机制和系统类库的安全性
用户认证机制
实现方式对杨,关系到系统的隐私数据安全
1.2 应用安全
包括恶意应用检测和漏洞挖掘
恶意应用检测:监控系统中的恶意应用
方案:安装时的安全审核、运行过程中的行为检测
漏洞挖掘:针对开发过程中无意留下来的漏洞进行检测(此类漏洞可能导致拒绝服务攻击、权限提升、窃取用户数据及隐私)
方案:组件暴露漏洞挖掘和 API 调用过程中的漏洞挖掘
2. Android 系统框架与安全模型
2.1 Android 系统框架与安全模型
应用程序层(连接 web 服务) ------------代码安全、接入权限
应用框架---------------------------------数字证书
本地库和虚拟机运行环境-----------------SSL(网络安全)、Sqlite(数据库安全)、虚拟机(安全沙箱)
2.2 超级用户权限
超级用户:root
Android 基于 Linux
root 用户拥有最高权限
root 用户拥有的权限称为 root 权限
Android 默认关闭 root 用户
2.2.1 获取 root 权限的危险
1.系统不稳定:删除系统软件造成,root 后失去保修
2.病毒侵入:手机 root 后,所有软件都能获取 root 权限,病毒可以做任何事
3.隐私数据暴露:root 后,由于文件权限问题,隐私数据全部暴露
2.2.2 root 权限获取分类
1.临时获取:不修改系统,利用漏洞临时获取 root 权限;下次再需要 root 权限时还要重新破解
2.永久获取:修改系统,手机随时可以获取 root 权限
2.2.3 root 权限获取方法
1.刷机:将手机系统刷为开放 root 的系统
通过引导程序将手机设置为下载模式,更新手机的持久性存储
一般通过 fastboot 协议或厂商专有协议进行
fastboot 模式是通过 USB 将完整硬盘镜像刷到特定分区上的标准协议
刷机的前提条件是 bootloader 没有被锁定
2.系统运行时,利用 Android 本地权限提升漏洞获得
(1)自己发现漏洞
(2)查找已发现未弥补的漏洞
CVE-XXXX-XXXX
通用漏洞披露 (Common Vulnerabilities & Exposures )
2.2.4 超级用户获取权限示例:z4root
原理
默认程序以非 root 用户运行
adbd 是一个运行于 Android 系统中的守护进程,负责接收计算机传递过来的命令
守护进程:系统启动后就启动,直至系统关闭
adbd 由 init 创建,初始时以 root 身份运行(创建时用的身份是 root,创建快完成时会将 root 切换为普通用户(切换过程由下一条中 setuid()执行)
init:系统的初始化进程
然后系统调用 setuid()调用设置 adbd 运行用户为 shell 用户
setuid():root 用户切换为普通用户时用的函数。执行出错时会出现身份切换错误,但代码会向下执行,身份还是 root
提权思路
若让 adbd 重新以 root 身份运行,则计算机传过来的命令也能够以 root 身份运行
版权声明: 本文为 InfoQ 作者【w010w】的原创文章。
原文链接:【http://xie.infoq.cn/article/93c2ebfa92a79c0b379820e7b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论