root許可權

類似於Windows系統中的Administrator

徠root許可權一類似於Windows系統中的Administrator,root是Linux系統中的超級管理員用戶帳戶,該帳戶擁有整個系統的最高許可權,可方便地對於系統的部件進行刪除或更改。

簡介


root許可權,系統許可權的一種,也叫根許可權,與SYSTEM許可權可以理解成一個概念,但高於Administrator許可權,root是Linux和unix系統中的超級管理員用戶帳戶,該帳戶擁有整個系統至高無上的權力,所有對象他都可以操作。獲得root許可權之後就意味著已經獲得了系統的最高許可權,這時候你可以對系統中的任何文件(包括系統文件)執行所有增、刪、改、查的操作。手機root許可權是andriod的使用最高許可權,獲取了root許可權,可以輕鬆的對手機刷機備份還原卸載系統文件等重要操作。為了避免在應用Android平台時的一些潛在風險,廠商的通用做法就是設置SecureLock安全鎖定和限制Root許可權。這種做法在保證安全的同時,一定程度上也限制了Android系統潛能的發揮。

Root原理


目前獲取Android root許可權常用方法是通過各種系統漏洞,替換或添加SU程序到設備,獲取Root許可權,而在獲取root許可權以後,會裝一個程序用以提醒用戶是否給予程序最高許可權,可以一定程度上防止惡意軟體,通常會使用SuperSU,這種方法通常叫做“不完全Root”。而“完全ROOT”是指,替換設備原有的ROM,以實現取消secure設置。
通過ADB可以直接將SU程序放入到系統。首先分析Android自帶su源代碼,由於源碼較多,下面摘錄最重要幾行。
intmain(intargc,char**argv)
{
myuid=getuid();
if(myuid!=AID_ROOT&&myuid!=AID_SHELL){
fprintf(stderr,"su:uid%dnotallwedtosu\n",myuid);
return1;
}
if(exevp(argv[2],exec_args)<0){
}
execlp("/systm/bin/sh","sh",NULL);
}
可以看出只允許getuid()為AID_ROOT和AID_SHELL的進程可以繼續執行,否則直接返回,這就決定了只有當前用戶為root和shell才能運行su。接下來執行execvp(argvexec_args),su並沒有通過fork去創建一個新的進程,而是直接把自己啟動一個新的進程,此時原先執行的程序實際上由su來創建的。通常情況下,執行su並不會帶參數,於是它會執行execlp("/system/bin/sh","sh",NULL);通過命令行查看此程序許可權ls–l/bin/su-rwsr-xr-x1rootroot368642010-01-2701:09/bin/su由上可以看到,su的所有者和所有組都是root,並且其設置了SUID和SGID。實際用戶ID和實際用戶組ID:標識我是誰。也就是登錄用戶的uid和gid。有效用戶ID和有效用戶組ID:進程用來決定我們對資源的訪問許可權。一般情況下,有效用戶ID等於實際用戶ID,有效用戶組ID等於實際用戶組ID。當設置-用戶-ID(SUID)位設置,則有效用戶ID等於文件的所有者的uid,而不是實際用戶ID;同樣,如果設置了設置-用戶組-ID(SGID)位,則有效用戶組ID等於文件所有者的gid,而不是實際用戶組ID。由此可以得出,當一個其他用戶或者用戶組的進程來執行su的時候,正常情況下會因為用戶ID不是root而被拒絕。但是,如果它能夠跳過檢查UID這一步,即能夠使自己的進程獲得和su相同的root的許可權。
這樣就可以看出Android系統的破解的根本原理就是替換掉系統中的su程序,因為系統中的默認su程序需要驗證實際用戶許可權(只有root和shell用戶才有權運行系統默認的su程序,其他用戶運行都會返回錯誤)。而破解后的su將不檢查實際用戶許可權,這樣普通的用戶也將可以運行su程序,也可以通過su程序將自己的許可權提升。
徠在Unix系統(如AIX、BSD等)和類UNIX系統(如Debian、Redhat、Ubuntu等各個發行版的Linux)中,系統的超級用戶一般命名為root。root是系統中唯一的超級用戶,具有系統中所有的許可權,如啟動或停止一個進程,刪除或增加用戶,增加或者禁用硬體等等。
root就是手機的神經中樞,它可以訪問和修改你手機幾乎所有的文件,這些東西可能是製作手機的公司不願意你修改和觸碰的東西,因為他們有可能影響到手機的穩定,還容易被一些黑客入侵(Root是Linux等類UNIX系統中的超級管理員用戶帳戶。)
“root”是安卓系統中的最高管理員,獲取它也就代表你可以隨意控制該系統中任意一項功能。生產廠商是不會給手機配置root許可權的。注意:獲取root許可權是有風險的,不要隨便嘗試。

作用


1)可以備份手機系統和軟體應用等重要的私人資料(包括可以備份聯繫方式、簡訊、手機系統等),這樣即使手機出現故障丟失了相關數據,也可以在備份中還原。
2)使用高級的程序,例如RE管理器、省電大師、甜椒刷機助手等等。
3)可以修改手機系統,也就是root后可以給安卓手機刷機,體驗不同安卓系統的樂趣。修改系統的內部程序和文件,如修改build.prop來DIY手機信息。
4)可以把一些程序應用安裝在SD卡上(Android2.2以下默認是不支持的),減輕手機負擔。
5)可以卸載系統程序(需謹慎使用),可以刪除原廠系統自帶的感覺沒什麼用的軟體。
6)可以管理開機啟動項,禁用不需要後台運行的程序,進行手機省電優化。

優點


1)用戶可以按照自己的需求來刪除不需要的系統自帶應用程序,比如Youtube、Google Map、Talk等,從而節省設備內存,提高運行速度。
2)用戶可以使用一些需要root許可權才能運行的應用程序,比如截屏、開機自啟動等。
3)用戶可以更改系統核心策略,例如CPU性能優先還是節電優先,從而延長設備的使用壽命、擴展設備的功能。
4)用戶可以更改替換系統原生的鈴聲、圖片、icon等。

注意事項


1)如果惡意軟體獲取root許可權之後,將對系統造成不可修復的破壞,用戶存儲在手機上的所有隱私都將暴露在惡意軟體之下。
2)如果用戶購買的是正品行貨手機,一旦在保修期內進行ROOT,一般就失去了保修的權利。
3)設備系統獲取root許可權之後,任何軟體都能對系統文件進行任意操作,對系統的穩定性產生極大的影響。
4)用戶可以隨意安裝來自第三方的應用程序,包括未經過簽名的惡意軟體。

許可權提升


Android設備廠商發售的出廠設備沒有開放Android root許可權,而是級別相對低的Android用戶許可權,低許可權使得用戶在操作設備的過程中遇到很多制問題,系統無法發揮出最大的功能,解決辦法就是進行許可權提升。就是將Android系統的許可權從低等級的Android用戶許可權提升到高等級的Android root許可權。

許可權提升漏洞

漏洞,也叫脆弱性,是指系統在硬體、軟體、協議的具體實現和系統安全策略上存在的缺陷和不足,從廣義上講,漏洞是指一切威脅、破壞系統可靠性、可用性、保密性、完整性、可控性、不可抵賴性的因素。許可權提升漏洞,也叫提權漏洞,是指那些可以被利用來實現許可權提升技術的漏洞,通常發生於驅動程序、系統核心組件或擁有高許可權的服務進程等程序中。由於這些程序在設計過程中的代碼瑕疵或邏輯錯誤,使得低許可權的程序可以不通過合法審查而獲得高許可權,從而獲取訪問更多系統資源的權利。提權漏洞和所有其它類型的漏洞一樣,也是程序開發中無法完全避免的,它的產生原因不是故意行為。

許可權提升軟體

許可權提升軟體,即“一鍵ROOT軟體”,原理是通過編寫代碼觸發Android提權漏洞,通過不同的方法繞過Android許可權安全機制,獲取臨時root許可權,改寫系統內部的一些文件,從而獲得root許可權。目前已經公開在網路上的可使用的提權軟體,比較知名的包括UniversalAndroot、Kingroot、SuperOneClick、z4root、GingerBreak、ZergRush等等。同時,已被捕獲的典型Android平台病毒/木馬主要包括索馬利亞海盜、GingerMaster、DroidDream、RecordSpy、Droidkungfu等等。

新版系統


root新版系統的過程相對簡單,至少符合特定的要求。運行Android L的Nexus 5和Nexus 7(2013)用戶需要先刷入定製Recovery和Chainfire SuperSU,然後再刷入與自己設備相匹配的鏡像便可。
但如外界所預料的那樣,即使獲取了root許可權,應用程序已經無法像從前那樣在系統分區進行寫入了。不過升級到了新安全環境的應用依然可以訪問系統分區。
考慮到並非所有應用都已獲得升級,因此許多需要root許可權的應用在Android L當中都無法正常工作,比如鈦備份。但隨著越來越多的應用進行升級,Android L的root許可權也將會變得更加實用。