厲害了!如何在Android 4.4以上版本DIY提權程序?

2021-02-13 美亞柏科

ROOT工具自帶的su,

通常帶有權限管理工具配套使用,

卸載了權限管理工具,su就無法使用,

是不是覺得很煩人呢?

別著急!

本期「安仔課堂」,

ISEC實驗室劉老師手把手教你:

如何在Android 4.4以上版本DIY提權程序?


Android的提權程序實際上是手機系統分區中的一個su可執行程序。Android系統是基於linux內核,su相當於Linux下獲取ROOT權限的命令,執行su命令後,當前用戶會被切換成ROOT用戶。

ROOT用戶是一種存在於UNIX系統和類UNIX系統(如Linux)中的唯一的超級用戶,具有最高的系統權限。但是,手機廠商為了保證系統的安全性和完整性,手機出廠時是沒有ROOT的,普通用戶無法通過常規手段獲取ROOT權限。

獲取ROOT權限,常用的方法是把su程序寫入到system分區,並賦予系統最高權限,後續手機上的程序調用su執行指定的命令獲取到ROOT權限。我們把獲取手機ROOT權限的過程稱為ROOT手機。

通常,ROOT手機的方法有以下三種,原理都是把系統改成可修改的狀態,並把su寫入system分區並賦予最高權限。

通常,ROOT手機的方法有以下三種,原理都是把系統改成可修改的狀態,並把su寫入system分區並賦予最高權限。

一些公司發布的用於ROOT手機的工具,如kingroot、一鍵ROOT等,這些工具利用系統漏洞(內核漏洞或者以ROOT權限運行的進程漏洞),將自身進程權限提升到ROOT權限,修改系統system分區,寫入自己的su程序,達到ROOT手機的目的。

獲取第三方修改後的ROM,這類ROM通常會把super su相關組件打包到鏡像中,刷入系統後,會默認帶有ROOT功能,不過這類第三方ROM的安全性沒法保證,你無法確定作者是否加入了其他程序。

Recovery是Android手機恢復模式,在這種模式下,可以對手機進行升級、恢復出廠設置、清除數據等操作。通常,手機默認的recovery只有簡單功能,比如升級、清除數據等操作。為了能夠修改系統,可以刷入第三方recovery(如TWRP recovery),通過第三方recovery提供的功能,把super su刷入到系統中,達到ROOT目的。

su是elf格式,Linux下的可執行文件,之所以叫su,有切換用戶(switch user)的意思,也可以改成其他名稱。

在Android 4.4以前,因為沒有SEAndroid的限制,su的工作邏輯非常簡單,把su程序的用戶和用戶組設置為ROOT並設置s位(set uid,set gid)。s位的作用是,如果其他用戶執行該文件,該進程的euid會切換到0(ROOT),eguid·會切換到0(ROOT),因此就具有了ROOT用戶的權限。

圖 1、Android4.4以前的su二進位文件屬性

圖 2、Android下su的源碼片段

在Android 4.4之後,SEAndroid默認開啟,su的工作邏輯要比Android 4.4以前的複雜。

原因有以下三點:

a、ROOT權限的概念已經模糊,就算進程具有ROOT權限(euid=eguid=0),也無法進行高權限操作。

b、於權限的控制,是通過安全上下文(Security Context)和安全策略(Security Policy)控制。

可以通過ps -Z來查看一個進程的安全上下文:

圖 3、ps查看進程的context

可以通過ls -Zl來查看一個文件的安全上下文:

圖 4、ls –lZ 查看文件的context

在Android selinux中,對於進程,上下文為u:r:type:s0,其中,u、r、s0是固定的;文件上下文為u:object_r:type:s0 ,其中u、object_r、s0是固定的。一個進程能否對一個文件進行某種操作,是由進程中的type和文件的type決定的。

圖 5、安全策略的部分

圖5中,表示允許類型shell的進程,對類型的shell_data_file的文件(目錄)進行,創建文件,創建目錄。

c、SEAndroid開啟情況下,init進程的context為u:r:init:s0,是用戶模式下擁有最高權限context,雖是最高權限,但也有很多限制(比如:init對android service和shell_data_file的某些操作是不被允許的),沒有達到真正意義上的Root權限。

圖 6、init.te策略文件中對init的限制

由於以上原因,在SEAndroid存在的情況下,我們如何實現su提權呢?通常採用如下所述的C/S架構模式,在服務端動態修改SEAndroid的策略配置,來達到提權的效果。

由於SEAndroid的限制,在開啟SEAndroid的系統上,su的實現通常使用C/S模式。系統啟動時,通過init進程啟動su的daemon進程,作為服務端,此daemon進程擁有u:r:init:s0的context,服務端啟動後,通過從"/sys/fs/selinux/policy"或"/sepolicy"中讀取security policy內容,修改後寫入"/sys/fs/selinux/load";創建localsocket,等待客戶端的連接。

客戶端啟動su後,通過localsocket,把pty設備信息發送給服務端,服務端通過打開訪問對應的pty設備和客戶端通信。客戶端通過終端寫入命令,發送到服務端執行,執行後返回結果。

圖 7、客戶端流程

圖 8、服務端流程

C/S架構的su,服務端必須以用戶模式下最高權限啟動(即u:r:init:s0),通常做法是修改系統文件,隨系統啟動時由init進程啟動。

a、修改系統/system/etc/install-recovery.sh文件,install-recovery.sh是bash腳本文,由init進程啟動,可以加入su服務端啟動命令。如果在init.rc中對install-recovery進程設置了新的context u:r:install_recovery:s0,這種情況下就無法達到要求。

b、替換系統文件,比如替換/system/bin/debuggerd文件,先備份原/system/bin/debuggerd為debuggerd_real,在新的debuggerd中先啟動su的服務端,再啟動原debuggerd_real.

c、獲取ROM包,修改ramdisk中的init.rc,加入啟動su服務端的代碼。

在明白了SEAndroid下su的原理後,就可以DIY自己的su本文介紹的方法適用於可以自定義手機程序、不需要授權操作的使用場景,比如:可以實現一個沒有UI交互授權管理的su,放到手機系統分區指定的目錄下,然後自定義授予我們想要的權限,如我們自己的APP在請求ROOT權限時直接允許,其它則拒絕。趕緊動手試試吧!

安勝作為國內領先的網絡安全檢測產品及服務提供商,秉承「創新為安,服務致勝」的經營理念,專注於網絡安全類產品的生產與服務;以「研發+服務+銷售」的經營模式,「裝備+平臺+服務」的產品體系,在技術研究、研發創新、產品化等方面已形成一套完整的流程化體系,為廣大用戶提供量體裁衣的綜合解決方案!

「ISEC實驗室」作為公司新技術和新產品的預研基地,秉承「我的安全,我做主」的理念,專注於網絡安全領域前沿技術研究,提供網絡安全培訓、應急響應、安全檢測等服務。

完成金磚「廈門會晤」保障工作;

完成北京「一帶一路」國際合作高峰論壇網絡安全保障。

為貴陽大數據與網絡安全攻防演練提供技術支持;

承擔G20峰會的網絡安保工作;

承擔國家兩會的網絡安保工作。

不忘初心、砥礪前行;未來,我們將繼續堅守、不懈追求,為國家網絡安全事業保駕護航!


相關焦點

  • Android Studio 4.1 發布啦
    Android Studio 4.1 主要是包含了各種新功能和改進,其中 Android Gradle 插件也升級為 4.1.0,要了解更多信息請查看完整的 Android Gradle 插件發行說明:https://developer.android.com/studio/releases/gradle-plugin#4-1-0新資料庫檢查器
  • Android Studio 4.0+ 中新的 UI 層次結構調試工具
    和上一個版本不同的是,新版本的布局檢查器可以以三維的視角來展現視圖層次結構,您可以直觀地看到視圖的布局方式。通過該工具您可以逐層來檢查視圖層次結構,同時它還會展示所有視圖的屬性,包括繼承自視圖父類的屬性。接下來我們一起了解一下最新版本的布局檢查器是如何發揮作用的。
  • Windows 系統提權方式匯總
    使用類似於【鳳凰掃描器】(https://github.com/0xwindows/fenghuangscanner_v3)的爆破工具。利用udf提權UDF為User Defined Function用戶自定義函數,也就是支持用戶自定義函數的功能。這裡的自定義函數要以dll形式寫成mysql的插件,提供給mysql來使用。
  • Appium界面自動化測試(4)(Android/Java):詳解應用程式操作
    :driver.activateApp("your.package");另外,以上兩種安裝應用程式的方式都支持將應用程式的本地路徑換成URL路徑,以便安裝伺服器上的應用程式文件。);driver.removeApp("your.package");isAppInstalled方法用於檢測應用程式是否已安裝;queryAppState方法用於檢測應用程式的運行狀態,包括未安裝、未運行、後臺運行並被掛起、後臺運行但未被掛起和前臺運行5種狀態;closeApp方法用於將當前應用程式置於後臺運行;terminateApp和removeApp方法分別用於關閉和卸載應用程式
  • Android Studio 4.0發布
    Android Studio 4.0 已經發布。此版本亮點包括新的 Motion 編輯器;構建分析器,可用於分析構建速度較慢的原因。
  • 別人的提權筆記,個人覺的很不錯!值得收藏
    19.一般增加不上用戶,或是想添加增加用戶的vbs,bat,遠控小馬到伺服器的啟動項裡,用「直接使伺服器藍屏重啟的東東」這個工具可以實現,20.執行PwDump7.exe抓哈希值的時候,建議重定向結果到保存為1.txt /c c:windowstempcookiesPwDump7.exe >1.txt21.菜刀執行的技巧,上傳cmd到可執行目錄,
  • 乾貨|Windows提權方法匯總
    如果我們能夠替換服務的啟動程序為我們的惡意程序(如反彈shell),即相當於獲得了SYSTEM權限,達到了提權的目的。無引號服務路徑有可能會導致這種情況的發生。所謂無引號服務路徑,就是服務啟動程序的路徑中包含了空格且未被引號包含起來。
  • 強網杯真題實例分析丨Linux內核提權技術
    Linux發行版本是我們常說的Linux作業系統,是Linux內核與各種常用軟體的集合產品,全球大約有數百款的Linux系統版本,每個系統版本都有自己的特性和目標人群
  • Android 雷電模擬器 4.0.55.1 去廣告版+增強鏡像
    雷電模擬器升級到了4.x版本,新版本使用了Android7.0 的鏡像,成為國內為數不多的新版本鏡像,並且經過果核測試,雷電模擬器的Android7系統是最穩定,最好用的,果核將長期優化和使用。雷電模擬器是系統是做的最好的,經過果核測試了國內所有的模擬器,都沒有雷電舒服,並且雷電更新勤快,對硬體支持好,特別是對開發者非常友好,官方提供了API接口供調用。
  • Anbox:在 Linux 上運行 Android 應用程式的簡單方式 | Linux 中國
    每個應用程式將在一個單獨窗口打開,就像其它本地系統應用程式一樣,並且它可以顯示在啟動器中。如何在 Linux 中安裝 Anbox ?Anbox 也可作為 snap 軟體包安裝,請確保你已經在你的系統上啟用了 snap 支持。
  • 系統內核溢出提權
    "因其利用便捷 成為了最為常用的方法,在使用該方法提權時我們只需要去查看目標系統中打了那些系統補 丁,之後去找補丁的"互補"補丁,並利用對應的提權類的漏洞實現權限提升,本篇文章主要 圍繞"系統內核溢出提權"的一些方法、思路進行簡易介紹~ 權限查看        在獲取到目標系統的shell後,我們需要先確認以下當前用戶以及用戶權限,這一點可以通過 在shell中輸入"whoami
  • 基於Android和iOS行動應用程式的Appium實用教程
    如何在Windows上安裝設置Appium程序?  Appium 作為一種開放性資源和跨平臺交流工具,對自動化移動應用測試(包括安卓系統和IOS系統)很有幫助。Appium支持本地型、移動型以及混合型。
  • Windows提權的幾種常用姿勢
    Windows常用的提權方式有:內核提權、資料庫提權、系統配置錯誤提權、組策略首選項提權、Bypass UAC提權、令牌竊取提權等姿勢。1、內核溢出漏洞提權由於目標系統沒有及時安裝補丁,攻擊者可以利用Windows系統內核溢出漏洞進行提權,輕易獲取system權限。
  • 安卓編年史(19):Android 4.0 冰淇淋三明治—摩登時代
    以上是分類,特色,熱門應用以及應用詳情頁面。 [Ron Amadeo 供圖]這些截圖給了我們冰淇淋三明治中新版操作欄的第一印象。幾乎所有的應用頂部都有一條欄,帶有應用圖標,當前界面標題,一些功能按鈕,右邊還有一個菜單按鈕。這個右對齊的菜單按鈕被稱為「更多操作」,因為裡面存放著無法放置到主操作欄的項目。
  • Android 電量分分鐘鐘不夠用,該如何優化?
    (1)電量數據收集 Android 5.0及以上的設備, 允許我們通過adb命令dump出電量使用統計信息.目前Battery Historian已更新2.0版本, 推薦使用bugreport方式導出數據分析, 可以看到更多信息.
  • Google 5月Android安全公告中有4個0day被在野利用;美國兩黨出臺五項法案以增強對網絡攻擊的防禦能力
    因AWS S3存儲桶配置錯誤洩露2萬多用戶信息【分析報告】Paloalto發布2021年Cortex Xpanse威脅分析報告Google 5月Android安全公告中有4個0day被在野利用Google Project Zero團隊稱,其發布的5月Android安全公告中有4個0day已被在野利用。
  • 探討Android6.0及以上系統APP保活實現
    備註:以上為華為Mate8(7.0)測試結果;其他如三星C9(6.0)保活較好,特別是當一鍵清理時,"咕咚會自動啟動,估計是使用了進程守護策略,而三星使用的是原生系統,因此結果你懂得;360F4(6.0)保活很差,以更厲害的方式幹掉流氓APP;2.
  • Android真機或模擬器激活Xposed框架的方法
    sudo mount -t ext4 -o loop system.img system/logcat:ERROR: Could not access Xposed jar /data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar(4).模擬器還沒有掛載userdata-qemu.img
  • Linux提權
    sudo        • touhid ALL= /sbin/poweroff        說明2:以上命令,使用戶可以從任何終端使用touhid**的用戶密碼**關閉命令電源。suid/guid文件提權SUID是uid+s的組合,s指的是特殊權限。
  • 在VMware中安裝android-x86-9.0-r2
    架構,可以讓用戶在他們的桌面電腦上運行安卓系統來享受所有的安卓功能和應用程式及遊戲。 -- M.hanny Sabbagh(作者)2019-11-15,android x86項目發布了pie-x86的第一個穩定版本r1。2020-03-25,發布了第二個穩定版。本文介紹在VMware虛擬機中安裝安卓pie-x86第二個穩定版本r2,第一個穩定版安裝類似。一、在Windows+VMware中安裝android x861.