通俗易懂!一文看懂手机Root的操作与防护

news/2024/4/17 4:42:34/文章来源:https://blog.csdn.net/dingxiangtech/article/details/127610055

Root,对于任何手机发烧友、玩机客、从事移动设备研发的人员来说,并不陌生,它代表绝大部分移动设备的使用者能够掌握到的最高权限。

从技术层次来讲,用户拥有了修改系统文件的权限,甚至可以控制账户、增加或删除硬件等,但对普通用户来说,最大的一个用处就是卸载“Root之前无法卸载的软件”,部分品牌商在手机出厂之前内置安装了一些无法卸载的软件,这些软件在手机Root之后,都可以被卸载掉,Root相当于让用户拥有了自由增减软件的权限。



Root的前世今生

Root一词起源于Linux/Unix系统,众所周知,Linux/Unix系统的文件系统以根“/”出发向下形成一个倒置的树型文件系统结构,Root即根的英文释义,那么Linux/Unix系统就以Root账号所拥有的权限作为系统管理员的权限,口口相传,Root就代表了Linux/Unix上最高的权限。

在移动设备发展的初期,各种移动设备所使用的操作系统各不相同,比较出众的有塞班、Windows Phone、iOS、安卓。随着市场的选择,只有安卓与iOS留存下来,成为普及的手机操作系统。按照POSIX标准协议和开源协议的规定,安卓与iOS都应该保留了Linux/Uinx上的相应的功能。

其中,安卓就是以Linux作为基础进行构建的系统,而iOS则是使用了以xnu为内核的Darwin(Darwin来自于BSD)。按照开源操作系统而言,安卓和iOS都理应保留所有用户使用Root账户去掌控自己设备的权限。

但现实情况是,安卓与iOS不允许用户使用Root权限,尤其是iOS对于Root权限的监控与封锁达到了前所未有的地步,以至于对iOS的Root被称作“越狱”。iOS上的Root过程相对于安卓更为复杂与困难,所以本文主要以安卓系统的Root为主,详细介绍Root的前世今生。



安卓系统的三大Root方式

相较于封闭生态的iOS系统,安卓的Root方式可谓是从百花齐放到万物归一。不同安卓系统版本,获取Root权限主流方式不同。

在安卓手机上,获取Root权限主要有三种方式:漏洞、OEM官方解锁、工厂方式。其中通过漏洞方式获取Root,是开发者最早的探索;工厂模式获取Root则是通过如骁龙9008模式通过底层串口将特殊的ROM刷写入手机进而获取Root;官方解锁的方式则是OEM产商提供给一些发烧友的“通道”,通过解锁Bootloader锁获取刷写ROM获取Root。

第一阶段:百家漏洞齐争鸣,先驱CVE-2009-2692漏洞

在安卓系统早期时忽略了安全性问题,许多在Linux中产生的安全问题,都能在安卓得以复现,其中最早有公开记录并可追溯的是Znix利用Linux漏洞CVE-2009-2692编写的安卓版本提权程序,代码如下:

利用蓝牙协议触发sendpage漏洞

权限提升攻击载荷

该漏洞的产生主要是sock_sendpage没有对socket_file_ops数据结构的snedpage字段字段做指针检查,有些模块不具有sendpage功能,将指针初始化为NULL,此时直接调用sendpage会导致直接调用空指针导致报错并进而进行权限提升。Znix直接将现有有效用户id(euig)与有效用户组(egid)的指针赋值为0即Root用户与Root用户组,再将有效用户与有效用户组指针赋给真实的用户指针与真实的用户组指针,从而达到权限提升的目的。然后利用蓝牙协议与send_page的漏洞触发这一攻击载荷。

Znix发布该exploit的时间点在安卓_ndk_r1版本发布后的两个月。在该exploit发布后,人们发现在安卓上通过漏洞的形式获取Root权限方式大为可行,随即越来越多的安全人员与发烧友开始在安卓上挖掘系统漏洞,导致安卓的安全问题呈现井喷式的爆发。不过这场闹剧随着Google不断的修复与SElinux的引入,闹剧在安卓4.4戛然而止,安卓系统进入了一个稳定的时期,安卓的Root也进入了一个新的探索时代。

使用Linux系统的人都知道,在Linux上有一个程序叫/usr/bin/su,用户可以通过su命令来切换身份,安卓的基础是Linux,在安卓版本1.0-4.4中,安卓默认安装了su程序,使用者可以通过使用su进行获取Root,只需要su程序的权限为Access: (4755/-rwsr-xr-x) Uid: ( 0/ Root) Gid: ( 0/ Root)。

第二阶段:混乱中的探索,supersu与superuser

Google在安卓4.4版本,基本上将Linux中可提权的漏洞修复并限制利用漏洞进行提权的方式。安卓4.4及以上,Anroid也不预装su程序,并且加入SElinux,就算拥有4755权限的su也无法达到完美Root。开发者们就尝试将改造后的su写入到安卓的/system下,让需要Root权限的程序通过/system下的su程序进行执行。

而向/system下写入su需要提前解锁(unlock)安卓手机,该方式比利用漏洞提权稳定性更高。许多大神都开始编写不同的su程序,其中比较有名的就是chainsDD的su与chainfire的suspersu,而单有获取Root权限的方式仍然不够,还需要一个分发Root权限的管理工具,koush的superuser恰好补齐了这一缺点,让这一体系得以完善。

不过好景不长,该方法引起了Google的关注,Google在后续发布的版本中对/system等分区进行完整性校验,使得修改system分区变得不可行,在2018年10月,chainfire宣布不再维护supersu。而另一位开发者则以巧妙的方式,让Root又变为可能。

第三阶段:从混乱中受到启发,走向归一的Magisk

 一个名叫topjohnwu的开发者,从supersu中受到启发,他仍然使用supersu的原理获得Root权限,但是他并不对/system等分区做额外的修改,他通过尝试发现,虽然/system等分区无法修改,但是可以在/system分区下进行添加挂载点,于是他用了一种overlay的方法,让用户刷写特殊的boot.img,修改启动时的挂载操作,做出了一个overlay版本的system,所有的操作都在这个system上进行,这样就避开了对原有system的修改,完成原有supersu的功能,而这款软件就是现在大部分人熟知的Magisk。Magisk不仅完成了获取Root,并且集成了Root权限的管理器。

随着topjohnwu加入谷歌,magisk的代码需要google安全团队进行审计,magisk某种程度上拥有了官方背书,是目前最稳定的Root方式。



小白该如何Root安卓的手机

本文将使用TWRP方式教大家如何使用Magisk获得Root权限。在获取Root前,需要解除BootLoader锁,请读者自行联系OEM厂商解除Bootloader锁。

顶象特别提醒:Root有一定的风险,或造成手机无法使用,请谨慎操作,本文不对任何后果承担相应责任。

1、准备adb fastboot命令工具、magisk以及对应的twrp.img(不同厂商需要的twrp镜像不同,请读者自行查询所需的twrp镜像)

2、使用adb命令将Magisk放入到sdcard中,命令如下:

3、进入bootloader界面,输入对应的fastboot命令,进入twrp界面。

4、选择Install,然后选择Magisk.zip。

5、进入安装Magisk的界面,将滑动条从左滑到顶端。如果出现如下界面,则证明安装Magisk成功。

6、重启手机后,使用将maigsk.zip改回magisk.apk,使用如下命令安装Magisk管理器。

随后可以在手机中打开Magisk,发现Magisk已经正常工作。


如何检测设备的Root操作

对于安全从业者与一些需要风控的企业,需要得知用户的手机是否处于风险状态,是否被Root。

1、包名检测。

由于Magisk是通过Maigsk.apk进行管理它的su权限分发的,所以可以使用获取包名的方式检查用户手机是否存在Magisk App来得知用户是否使用了Magisk Root,具体代码如下:

尝试运行程序,得到如下结果。

在上述方法中,虽然能检测到用户安装了Magisk,但是由于法律对用户隐私的保护,获取包名的方式会触及隐私合规红线,所以这种方法需要一定的权限,在使用该方法时要慎之又慎。

2、专业安全产品。

顶象设备指纹、顶象业务感知防御平台能够实时有效识别Root风险。

顶象设备指纹:能精准识别模拟器、root、越狱、调试、代码注入、多开、VPN代理等风险。包含,iOS平台hook、越狱行为,安卓root、debug、内存dump、注入、多开、模拟器、漏洞攻击等风险行为,WEB平台下浏览器颜色深度、分辨率,浏览器与系统、UA的匹配性和一致性、cookie是否禁用等行为。

顶象业务安全感知防御平台:基于威胁探针、流计算、机器学习等先进技术,集设备风险分析、运行攻击识别、异常行为检测、预警、防护处置为一体的主动安全防御平台,能够实时发现摄像头遭劫持、设备伪造、设备Root等恶意行为,有效防控各类人脸识别系统风险。它具有威胁可视化、威胁可追溯、设备关联分析、多账户管理、跨平台支持、主动防御、开放数据接入、防御自定义和全流程防控等特点。



写在最后

本文从Root的历史出发,讲述了获取Root的发展历史以及轶事,教大家从0到1完成对自己安卓手机的Root,提出了一些有效的检测Root的方式。Root与HOOK一样,是一把双刃剑,在普通人手里,它可以让系统不再受到约束,可以带来更好的手机使用体验,但在黑灰产手里,会变成非法牟利的工具,作为安全从业者,我们要辩证地看待每项技术,对非法行为我们要重拳出击,为安全事业添砖加瓦。

在上一篇文章《欲知己之所防,先知彼之所攻——论Hook 技术的攻防对抗》我们提到Hook的攻击,Hook一定需要Root吗?答案是否定的。如果开发者有能力修改art源码、劫持Zygote,是可以完成Rootless HOOK操作的,Root是为了让HOOK及HOOK模块管理工具的使用降低成本,让HOOK操作者的重心不再放在HOOK的前置条件,而是更专注于HOOK模块的开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_410208.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java毕业设计——基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)——智能在线考试信息管理系统

基于javaJSPsqlserver的智能在线考试信息管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaJSPsqlserver的智能在线考试信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&a…

内部财务经营分析该怎么做?

对于日常在企业工作的财务人员来说,做对外财务报表分析的机会并不多,我们在网上经常看到的对上市公司财务报表的分析,是基于投资人的角度来对这家公司披露的财务及经营信息所做的分析。 实际工作当中,大家应用到更多的其实是内部…

【Linux详解】——gcc/g++/gdb/git的使用

📖 前言:本期将学习gcc/g/gdb/git的使用 目录🕒 1. 程序的翻译过程🕒 2. 理解选项的含义🕒 3. 动态链接和静态链接🕒 4. Linux项目自动化构建工具-make/Makefile🕘 4.1 背景🕘 4.2 使…

发布四大战略举措,亚马逊云科技看准了中国云市场的哪些新机会?

导读:全球最大的云厂商,在中国的最新布局。 2022年10月13日,亚马逊云科技在线上举办2022中国峰会。亚马逊云科技不仅发布了云计算技术趋势展望,还宣布了深耕中国市场的四大战略举措:“连中外、襄百业、携伙伴、促绿色”…

【Java8新特性】函数式接口

目录1. 介绍1.1 FunctionInterface注解1.2 函数式接口的调用2. 函数式编程2.1 Lambda的延迟加载技术2.2 Lambda表达式的使用3. 常用的函数式接口3.1 Supplier生产型接口3.2 Consumer消费型接口默认方法:andThen3.3 Predicate条件判断接口3.4 Function普通函数接口默…

ASP.NET Core教程-跨域配置(CORS Configuration)

更新记录 转载请注明出处: 2022年11月1日 发布。 2022年11月1日 从笔记迁移到博客。说明 Cross-Origin Resource Sharing,跨域资源共享 配置方式 在ASP.NET Core中有2种方式配置跨越,中间件方式(middleware approach) 和 特性修饰方式(attributes approach)。 中间件方式…

在Jupyter Notebook中使用Matplotlib(Anaconda3)

Matplotlib(官网 Matplotlib — Visualization with Python )是一个用于创建二维图形的Python库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。将Jupyter Notebook于Matplotlib结合使用效果更好。 在Anaconda3的Jupyter …

HCL AppScan Standard漏洞扫描处理记录

官网,标准版应该是免费的,下载了标准版,没提示激活啥的,最近处理客户的漏洞扫描问题,主要就是修改nginx配置,各种查资料,不停的扫描验证,简单记录下吧。 APP简单使用 app快速下载地…

flutter 系列之:flutter 中的幽灵offstage

文章目录简介Offstage详解Offstage的使用总结简介 我们在使用flutter的过程中,有时候需要控制某些组件是否展示,一种方法是将这个组件从render tree中删除,这样这个组件就相当于没有出现一样,但是有时候,我们只是不想…

技术革新,取代传统会议模式?原来这么简单

随着AI人工智能的盛行,各领域面临前所未有的技术革新。人脸识别作为人工智能的一项重要技术,为工作及生活带来极大便捷,增效赋能。 人脸签到技术5大优势 01.人脸识别稳定,即使在光源不佳、角度受限的环境下也能精准识别&#xff1…

Libuv 各个回调(异步)事件的调用时机

Libuv 各个回调(异步)事件的调用时机 uv_close、uv_timer_start uv_close中注册的回调事件(close_cb)查阅官网API文档,Handle句柄是调用uv_close便会立即关闭,而注册的回调事件将推迟到下一次Loop循环中执…

设计模式——创建型模式

五大-创建型模式一、单例模式1、简介2、单例模式八种方式2.1、饿汉式(静态常量)2.2、饿汉式(静态代码块)2.3、懒汉式(线程不安全)2.4、懒汉式(线程安全,加同步方法)2.5、…

C2 实验 学习笔记

C2 实验 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. C2隐藏技术 CDN 准备 一台 vultr centos7 机器一个域名cloudflare 账号 挂上 cdn 在域名购买后配置,cf 中的域名解析,在 cf 中配置…

「MySQL高级篇」MySQL之MVCC实现原理事务隔离级别的实现

①MVCC定义,用处,快照读,当前读 ②MVCC实现原理:隐藏字段,readview,undo log ③readview访问规则 ④事务隔离级别的具体实现大家好,我是melo,一名大三后台练习生,死去的MVCC突然开始拷打我🤣🤣🤣!🍳引言 MVCC,非常顺口的一个词,翻译起来却不是特别顺口:多…

Fiddler 抓包工具

1 基本使用 官网下载地址:Download Fiddler Web Debugging Tool for Free by Telerik X.1 电脑端监听 我们双击打开软件,进入到如下的一个界面,然后点击某一个请求,你会发现请求的内容是一堆明显不对的文字,然后该请求…

MySQL性能优化和慢查询日志

目标 了解性能优化的方案能够使用慢日志定位慢SQL 讲解 1. 优化方案 1.1 为什么要优化数据库性能 ​ MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。可以看到Google,Facebook,Twitter&…

【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细)

【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细) 1- 介绍 百度地图功能强大,本篇文章只是对百度地图JavaScript API 进行一个介绍~ 官方网址 百度地图开放平台LBS:LocationBusinessServer 基于定义位置的商…

Spark 离线开发框架设计与实现

一、背景 随着 Spark 以及其社区的不断发展,Spark 本身技术也在不断成熟,Spark 在技术架构和性能上的优势越来越明显,目前大多数公司在大数据处理中都倾向使用 Spark。Spark 支持多种语言的开发,如 Scala、Java、Sql、Python 等。…

Matlab神经网络函数newff()新旧用法差异

在Matlab R2010a版中,如果要创建一个具有两个隐含层、且神经元数分别为5、3的前向BP网络,使用旧的语法可以这样写:net1 = newff(minmax(P), [5 3 1]); 注意minmax()函数的使用,还有对输出层神经元数(1)的指定。当然也可以采用新的语法,更简洁(请留意差异):net2 = new…

形态分类行为中的气泡佯谬

“假设光归根结底是波,只是给我们以粒子的印象,因为粒子吸收光波的能量是以离散的包的方式。波从源头传播出去像一个越来越大正在膨胀的气泡,到达一个原子时,气泡破裂,波坍缩并把所有的能量集中在一个地方,…