溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android的root原理是什么

發(fā)布時間:2022-02-17 15:14:35 來源:億速云 閱讀:197 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Android的root原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Android的root原理是什么”吧!

0x00 關(guān)于root

linux和類Unix系統(tǒng)的最初設(shè)計都是針對多用戶的操作系統(tǒng),對于用戶權(quán)限的管理很非常嚴格的,而root用戶(超級用戶)就是整個系統(tǒng)的唯一管理員,擁有等同于操作系統(tǒng)的所有權(quán)限。所以一旦獲取到root權(quán)限,就可以對整個系統(tǒng)進行訪問和修改。而在Android下獲取root權(quán)限之后就可以自己定制系統(tǒng),卸載一些預(yù)裝軟件,完全掌控自己的設(shè)備。

Android的root原理是什么

0x01 setUID

在討論root的原理之前,有一個非常重要的概念,就是文件的setUID權(quán)限。linux下普通的文件權(quán)限大家都很清楚,可讀,可寫,可執(zhí)行,下圖很清楚的一個普通的可執(zhí)行文件root的權(quán)限,r(可讀),w(可寫),x(可執(zhí)行)。Android的root原理是什么

但是,要考慮一種情況,比如說,一個用戶是有權(quán)修改自己的密碼的,但是記錄密碼的文件/etc/shadow只有root用戶才是可寫的,那普通用戶如何才能修改自己的密碼呢?這一切都要歸功于setUID的設(shè)置,修改密碼時使用的命令passwd對應(yīng)的二進制程序是/usr/bin/passwdAndroid的root原理是什么

可以看到passwd的二進制文件的權(quán)限位中不僅僅是rwx了,多了一個s權(quán)限,而這個s權(quán)限就是我們的主角,setUID權(quán)限。

由于passwd有setUID權(quán)限,所以linux系統(tǒng)可以臨時把這個文件的所有者(root)身份角色賦給普通用戶,以達到讓普通用戶可以修改自己密碼的目的。

那如何設(shè)置setUID權(quán)限呢?

平常使用的普通文件權(quán)限位是由3、3、3共9位的二進制數(shù)字組成?。謩e對應(yīng)文件所有者,文件所有者同一用戶組權(quán)限和其他用戶權(quán)限。最開始的名為root的可執(zhí)行文件的權(quán)限為rwxrwxr-x,所對應(yīng)的二進制位就是111 111 101 ,然后每三位對應(yīng)421換算成16進制,就是775。而新增的setUID權(quán)限是在前面新增了三位,分別表示setGID、setUID、stick bit權(quán)限,而我們現(xiàn)在只關(guān)心setUID權(quán)限。因此加上setUID權(quán)限之后,文件的權(quán)限應(yīng)該由4位數(shù)字組成,例如之前的root文件加上setUID權(quán)限就是4755。而修改密碼的passwd文件對應(yīng)的權(quán)限位就是4755。

可以通過一個小例子來直觀的感受一下,平常使用的cat命令對應(yīng)的二進制文件是沒有setUID權(quán)限的:

Android的root原理是什么

可以在普通用戶下嘗試使用cat去讀取/etc/shadow文件的內(nèi)容:

Android的root原理是什么

提示權(quán)限不夠,再給cat加上setUID權(quán)限之后再去讀取/etc/shadow的內(nèi)容:

Android的root原理是什么

是可以讀出來的,但是/etc/shadow中的內(nèi)容都經(jīng)過加密處理。

0x02 Linux 下的root

平常使用的linux發(fā)行版,需要切換到root用戶時,直接使用su命令,然后輸入su用戶的密碼就可以切換到root用戶了。Android的root原理是什么

Android的root原理是什么

0x03 Android 的root

但是在未root的Android設(shè)備上是沒有su的二進制文件,直接執(zhí)行su命令會提示”su not found”。Android的root原理是什么

再進入已經(jīng)root過的設(shè)備上查看,平常在adb shell中用的命令對應(yīng)的二進制文件都是在/system/bin目錄下,是存在su文件的:Android的root原理是什么

可以看到這里的su只是一個指向/system/xbin/的一個鏈接。Android的root原理是什么

可以看到這里的su是有setUID權(quán)限位的。

而要在系統(tǒng)分區(qū) /system/xbin 中添加文件本身就是需要root權(quán)限,而且設(shè)置su文件的所有者為root用戶也是需要root權(quán)限的,設(shè)置setUID權(quán)限同樣也需要root權(quán)限。

這就進入到了一個死循環(huán)當(dāng)中,要利用su,首先要有root權(quán)限。因此這時就需要利用到Android存在的漏洞,Android系統(tǒng)本身存在著很多以root權(quán)限運行的原生進程,而這些root進程中如果存在可以利用的漏洞,就可以利用進程的root身份:

  1. 拷貝su文件到/system/xbin系統(tǒng)分區(qū);
  2. 設(shè)置su文件所有者為root用戶;
  3. 設(shè)置su文件的setUID權(quán)限,便于自己的進程執(zhí)行su命令獲取root權(quán)限。

到此,相信大家對“Android的root原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI