详解Android系统中的root权限获得原理
前⾔
⼀直很好奇AndroidRoot的原理,恰好最近碰到了⼀个跟Android默认带Root权限的问题,这⾥顺便记录⼀下Android系统root
的原理。
原理
Android是基于Llinux内核的开源操作系统,与Ubuntu系统类似,所以在Android⾥获取root权限其实和在Linux系统下获取root
权限是⼀回事。在Linux系统下获取root权限的⽅法是在命令⾏执⾏sudo或者su,接下来输⼊提权密码就可以获取root权限
了。Android系统其实也是这样,例如应⽤层程序开发,在root过的⼿机上运⾏root权限的代码如下所⽰:
Processprocess=time().exec("su");
DataOutputStreamos=newDataOutputStream(putStream());
......
ytes("HelloWorld!n");
();
我们可以看到,Android应⽤程序获取root权限也是需要执⾏su命令,因此Android能够root的密码都在su程序上。但
是,Android本⾝是不想让你获取root权限的,因此⼤部分⼿机出⼚都是ur版本,默认是不带su这个⼆进制程序的。所以你
想获取Android的root权限,第⼀步就是要把编译好的su⽂件拷贝到Android⼿机的/system/bin或/system/xbin⽬录下(为什么
要拷贝到/system⽬录下,是因为这个分区是没有nosuid限制的,同时/system/bin和/system/xbin⼜都是系统环境变量PATH⾥
的路径,可以直接执⾏su)。我们先假设你可以把编译好的su程序放在xbin或者bin⽬录下,接下来你可以在Android⼿机的
adbshell或者串⼝下输⼊su提权了。
Linux命令⾏下输⼊su之后,是需要输⼊root密码才能够提权的,但是Android⾥的su和Linux⾥的su是不⼀样的,Android⾥的
su是不靠验证密码的,⽽且需要验证你之前的权限是什么。意思是,如果你是root⽤户,那你可以通过su切换到别的⽤户,⽐
如shell、wifi、audio等。但是如果你是root之外的其他⽤户,就不能切换到root了,会提⽰你permissiondenied。也就是说,
⽤root运⾏su才有⽤,但是这个时候我没还有root权限怎么办?这就是接下来要讨论的问题。
我们在Ubuntu下查看/usr/bin/passwd⽂件的权限,如下图所⽰:
这个⽂件的权限⽐较特殊,Linux⽤户⼀般都知道⽂件分为r、w、x权限,那这个s是神马意思呢?这⾥回答⼀下,s代表当任何
⼀个⽤户执⾏该⽂件的时候都拥有⽂件所有者的权限,这⽂件所有者是root。简单来说,就是不管谁执⾏这个⽂件,他执⾏的
时候都是以root⾝份来执⾏的。
看到这⾥,⼤家是不是都有思路了,也就是说,即使我不是root⽤户也可能以root⽤户的⾝份来执⾏程序,那么我把⼀个所有
者是root的su程序权限标志位设置为-rwsr-xr-x,那么不管是谁执⾏它,都是以root⾝份执⾏。这就⽜逼了,su果断可以执⾏成
功,那你也就可以顺利的获取root权限了。
破解
原理都清楚了,那root的过程其实就是分两步:
1.把⼀个所有者是root的su拷贝到Android⼿机上。
2.把su的权限标志位设置成-rwsr-xr-x。
写成代码⼤概如下所⽰:
cp/sdcard/su/system/xbin/
chownroot:root/system/xbin/su
chmod4755/system/xbin/su
代码看起来很简单,但是想真正的运⾏成功,以上代码每⼀句都需要root权限执⾏。我擦,⼀下回到解放前,跟先有鸡还是先
有蛋的问题类似,代码运⾏需要root权限,⽽代码本⾝的⽬的就是获取root权限,成了⼀个封闭的死循环了。但是所幸Android
系统有Bug,因此就给了你打破这个死循环的机会。
打破的⽅法就是找⼀个本⾝已经有root权限的进程来运⾏这个3⾏的shell脚本,这样脚本就可以顺利执⾏了。但是已经有root
权限的进程都是出⼚时候就装到⼿机上的,代码写死了,你没法控制它执⾏⾃⼰的代码啊,这个时候就需要查找漏洞了。例如
Android2.3root权限的zergRush漏洞就是利⽤⼀个拥有root权限的进程栈溢出漏洞。具体利⽤漏洞的⽅法⼤家就可以⾃⾏
google了。
防⽌root
通过上述分析,我们可以简单的理解,解决Android系统能够su提权的⽅法就是把su⽂件⼲掉就可以了。
本文发布于:2023-03-02 05:14:34,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677705274106578.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:手机root是什么意思.doc
本文 PDF 下载地址:手机root是什么意思.pdf
留言与评论(共有 0 条评论) |