百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

ahcoder 2025-02-26 10:37 6 浏览

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模块的开发。

相关推荐

Linux ntp时钟同步问题(linux ntp同步命令)

有时候,操作系统会报linux的ntp时钟错误。从时钟源同步时间超时。我查看了一下ntp的时钟源,发现执行ntpq-p显示超时。执行nslookup时钟服务器域名,发现可以正常解析。执行了n...

linux服务器同步利器Rsync全介绍(付脚本)

1、认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件...

如何使用Rsync同步两个网站服务器的内容

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zc...

Linux TB级小文件同步备份解决方案

在某些电子档案存储的业务系统下,按照业务场景要求,需要将产生的所有电子影像资料永久存储,并支持备份;因为“钞能力”等原因,一般备份存储只有一个节点(即:一个备份存储服务器);这样就要求研发工程师,不...

CentOS7下使用Lsyncd实现文件实时同步

Lsyncd简单介绍Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更...

如何手动同步Linux系统时间并与互联网时间保持同步?

在Linux系统中,正确的时间同步对于许多任务都是至关重要的。一些关键应用程序可能需要准确的时间戳才能正常工作,而一些安全功能也需要确保所有服务器的时间都是准确的。NTP服务可以自动同步系统时间和互...

Linux服务器Rsync定时同步一键化配置指南

1、主从服务器同时安装rsyncopenssh-clientaptupdate&&aptinstall-yrsyncopenssh-client2、主服务器安装好后输入以下命令生成密钥...

Linux系统如何使用NTPDATE命令设置时间同步

简介:咱们在使用Linux系统的时候,常常能发现用了一阵子之后,Linux系统的时间就对不上了。已经知道的情况是,安装Linux的时候选的时区是Asia/Shanghai,可这系统运行了一...

开源的Linux文件同步工具有哪些?(linux 文件夹 同步)

Linux系统之间经常需要文件同步,一个好的文件同步工具省时省力,这里介绍几款开源的Linux文件同步工具1.rsync:rsync是Linux上一个功能强大的命令行工具,可以在不同的服务器之间同...

Linux 系统使用 rsync + inotify 实现文件实时同步

Linux系统使用rsync+inotify实现文件实时同步简介inotify监控文件的变化后通知rsync进行文件的同步#配置免密登录ssh-keygen-trsaca...

Linux 远程数据同步工具详解(linux远程同步命令)

一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之...

构建基于 Linux 的 NTP 时间同步集群与时间安全防护实战指南

一、为什么时间同步对系统如此重要?在分布式系统、数据库复制、消息队列、审计日志、安全认证(如Kerberos)、容器编排等场景中,系统时间一致性是保障正确性与安全性的基础。一旦服务器间时间漂移,可能...

每日Linux学习:同步备份工具 rsync

rsync是一个用于高效同步文件和目录的工具。它通过仅传输变化的部分(增量传输)来节省时间和带宽,支持本地同步、远程同步(通过SSH),还能保留文件原有权限、时间戳等属性。本文通过几个常用的实例来...

Chromixium OS 1.0发布 基于Ubuntu发行版

Chromixium项目宣布chromixiumOS1发布,一款基于Ubuntu的Linux分支,chromixiumOS试图重新打造一款外观和感觉与ChromeOS相似的完...

iOS8.0.X~iOS8.1完美越狱!盘古团队出品

【巴士速递·移动情报站】最新消息,iOS8.1越狱了!!此次越狱依旧是iOS7时代我国的大神盘古团队带来的,而该次越狱支持最新的iPhone6、iPhone6Plus、iPadAir2和iPad...