tft每日頭條

 > 科技

 > 如何知道安卓手機要不要被root

如何知道安卓手機要不要被root

科技 更新时间:2025-02-02 01:50:18

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(一文看懂手機Root的操作與防護)1

在安卓手機上,獲取Root權限主要有三種方式:漏洞、OEM官方解鎖、工廠方式。其中通過漏洞方式獲取Root,是開發者最早的探索;工廠模式獲取Root則是通過如骁龍9008模式通過底層串口将特殊的ROM刷寫入手機進而獲取Root;官方解鎖的方式則是OEM産商提供給一些發燒友的“通道”,通過解鎖BootLoader鎖獲取刷寫ROM獲取Root。

第一階段:百家漏洞齊争鳴,先驅CVE-2009-2692漏洞

在安卓系統早期時忽略了安全性問題,許多在Linux中産生的安全問題,都能在安卓得以複現,其中最早有公開記錄并可追溯的是Znix利用Linux漏洞CVE-2009-2692編寫的安卓版本提權程序,代碼如下:

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)2

利用藍牙協議觸發sendpage漏洞

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)3

權限提升攻擊載荷

該漏洞的産生主要是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也進入了一個新的探索時代。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)4

使用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鏡像)

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)5

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

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)6

3、進入bootloader界面,輸入對應的fastboot命令,進入twrp界面。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)7

4、選擇Install,然後選擇Magisk.zip。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)8

5、進入安裝Magisk的界面,将滑動條從左滑到頂端。如果出現如下界面,則證明安裝Magisk成功。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)9

6、重啟手機後,使用将maigsk.zip改回magisk.apk,使用如下命令安裝Magisk管理器。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)10

随後可以在手機中打開Magisk,發現Magisk已經正常工作。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)11

如何檢測設備的Root操作

對于安全從業者與一些需要風控的企業,需要得知用戶的手機是否處于風險狀态,是否被Root。

1、包名檢測。

由于Magisk是通過Maigsk.apk進行管理它的su權限分發的,所以可以使用獲取包名的方式檢查用戶手機是否存在Magisk App來得知用戶是否使用了Magisk Root,具體代碼如下:

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)12

嘗試運行程序,得到如下結果。

如何知道安卓手機要不要被root(一文看懂手機Root的操作與防護)13

在上述方法中,雖然能檢測到用戶安裝了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模塊的開發。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved