Android 系統基本架構

開機流程與分區說明

2022-8-4 by 高田數位鑑識

裝置開機後進到 Android 作業系統有一連串的過程,每一個環節都是為了確保裝置的安全性。本篇文章會針對開機驗證 (Verified Boot) 是如何確保開機過程執行的每一個程式皆來至於合法來源,另外也會說明 BootRom 與 Partitions 在開機過程的順序與賦予的功能。透過本篇的說明,最後就可以理解 Rooting 與 Unlock Bootloader 的差異。

Android 開機驗證 – Verified Boot

驗證啟動 (Verified Boot) 會確保所有執行的程式 (code) 均來自受信任的來源(通常是設備的 OEM 廠商發佈的作業系統版本),而不是來未受驗證的第三方。驗證啟動建立了完整的信任鏈 (chain of trust),從受硬體保護的信任根 (root of trust) 到 bootloader,再到啟動分區 (boot partition) 和其他經過驗證的分區,包括 system , vendor 或 oem 分區。在裝置啟動過程,每個階段在載入下一階段程式碼前皆會確認下一階段的完整性和真實性。

除了確保裝置執行的是安全版本的 Android 之外,驗證啟動還有降板保護機制 (Rollback Protection) 來確認升級或安裝 Android 時,永遠安裝最新的版本,避免安裝尚有漏洞的舊版本作業系統。

Android Verified Boot

Verified Boot 流程

Android 開機過程從 Bootloader,Boot Image (Kernel+Ramdisk),System Image,每個關卡皆會透過數位簽章確認執行的程式為「授權」之檔案。Android 7.0 之後該機制會強制導入,沒有 Verified Boot 的裝置無法使用 Android Pay。

Android Verified Boot

Verified Boot 數位簽章查核流程

Android ROM 與 Partitions 說明

Android 各分區架構

ROM

裝置開機後第一個動作為讀取 BootROM 的內容,接著會開始讀取 Flash 儲存空間並執行 SBL 分區上的程式碼,接著讀取 Bootloader (aboot) 啟動程式,最後進入 boot 分區進行作業系統開機流程。以上過程皆會採用「驗證啟動」確認下個階段的程式碼是否由合法 OEM 廠商發佈之程式碼,若不是則終止開機程序。

  • PBL (Primarily Bootloader) 存放於 SoC 晶片上 (ROM 或 EEPROM),與存放於 Flash 內的分區資料不同,該區域內的資料為 OEM 廠商出廠時透過私鑰 (private key) 簽核寫入。該分區也是裝置開機時第一個讀取的位置。

快閃記憶體分區說明

  • SBL (Secondary Bootloader): PBL 啟動後第一個載入的程式碼,也用於精簡 ROM 的大小。
  • aboot (Application Bootloader): 啟動作業系統的 bootloader 程式 (啟動程式)。
  • boot: 包含 Android Kernel & Ramdisk。
  • system: Android OS 系統檔案與原生 APPs。刪除這個Partition僅可透過 recovery bootloader 模式重新安裝。
  • recovery: 恢復模式,用於備份,重新安裝,升級 Android OS。
  • data: 使用者資料分區,用戶使用裝置時產生的資料存放於該分區。Factory reset會將該分區內容刪除。
  • cache: APP或網頁等快取區,刪除該分區不會有影響。
  • misc: 存放Android、Recovery與bootloader溝通的資料。
  • sdcard: SD卡。

Android 開機流程與模式

Android 開機時除了正常開機進到 Android 作業系統,也可在一開始透過不同按鍵組合方式,進到 Recovery 或 Bootloader/Fastboot 模式。

Fastboot/Bootloader 是一個特殊的工程模式,比較常見是在安裝 Android 作業系統或第三方作業系統 (刷機 – Rooting) 時使用。進入 fastboot 模式後,並將裝置與電腦連線,可以在電腦上透過 adb 工具程式操作手機,例如常見的開機,關機,重啟等等操作都可以在電腦上下指令控制。另外更新 radio(手機的通訊驅動),也可以透過 fastboot 來完成。fastboot 與 recovery 相較而言,可以完成更底層的一些操作。 例如刷機時會先在 fastboot 模式下刷入第三方 recovery 系統。再藉由第三方 recovery 系統刷入客制的 Android 作業系統。

很多手機官方的升級和恢復方都是在 Fastboot/Bootloader 模式下操作完成的,即使手機已經無法開機,無法進入recovery 模式,都能在該模式下進行官方升級或系統恢復!

Android 開機流程

Android 開機流程

晶片工程模式

除了上述所提的開機模式外,各晶片廠商也有自己的工程模式,可讓 OEM 廠商進行硬體測試與底層的錯誤排除。常見的如下:

  1. Qualcomm: EDL模式 
  2. MediaTek: SP Flash Tools
  3. LG: LAF (Low Level Firmware Update 模式)

4PC 的 Qualcomm EDL & Live,MTK Live  & Decrypting Bootloader,Exynos Decrypting Bootloader, Huawei Decrypting Bootloader 等提取模式皆是透過晶片組的漏洞,進行物理提取 (FDE) 或完整檔案系統提取 (FFS)。

Rooting 與解鎖 Bootloader 的差異

裝置出廠時廠商希望提供一個完整穩定的使用體驗,如 APP 可以穩定執行,畫面切換要流暢,最重要的是可以保護使用者的資訊,不輕易的被駭客竊取重要資料。任何一個面向沒有處理好,對於廠商的品牌,售後服務皆會造成壓力。若因安全性的問題造成個資外洩,可能會衍生法律風險。

因此任何一支裝置出廠後,使用者的權限是比較低的。相較於 Windows 電腦,一般使用者基本上都是最高權限 (Administrators) 的差異甚大。

Android 是基於 Linux 核心與其他開源軟體的開放原始碼的行動作業系統,因此在權限管理上,與 Linux 極為相似,主要有以下三類:

  • 第三方 APP 權限: Android 設計概念每一個 APP 皆為獨立的 Sandbox 環境下執行,APP 只能存取自己資料夾內的檔案。
  • 用戶權限: 除可設定密碼,重啟裝置外,也可以允許第三方 APP 提出的要求,存取如定位資訊,照相機,相簿等資源。
  • Root/超級用戶權限: 可以完全控制裝置的軟硬體,如超頻,移除官方 APP,變更型號等等。

因此,為了解除廠商對於裝置的限制,安裝官方不提供的新版本 Android 作業系統,只能透過取得裝置完整控制權才可以執行。

取得裝置的最高權限有兩個方式:

  1. Soft-Rooting: 透過作業系統本身的漏洞,提升使用者權限 (Privilege Escalation)。
  2. Hard-Rooting: 解鎖 Bootloader,進而打破 Verified Boot 流程,並可安裝第三方 Android 作業系統版本,如 LINEAGE。

Soft-Rooting

對鑑識同仁而言,Soft-Rooting 方式因可以取得 SU (superuser) 權限,這代表著對整個作業系統有完整的控制權,因此要做物理提取或完整檔案系統提取 (FFS) 皆是可行的選項。4PC 的 Advanced & Smart ADB 皆是採用 soft-rooting 方式提取。

必須要注意的是,Soft-Rooting 僅代表取得該作業系統的最高權限,與刷機 (Hard-Rooting) 可以安裝非官方的作業系統大不同。

Hardrooting

Soft-Rooting 流程

Hard-Rooting

Hard-Rooting 通常用於刷機,因為進行 hard-rooting 過程需解鎖 Bootloader 並重置整個裝置,所有的分區資料也都會刪除。解鎖 Bootloader 的目的是移除 verified boot 的查核,解鎖的 bootloader 在進行開機過程可執行沒有被 OEM 原廠數位簽章過的程式。

部分的 OEM 廠商有提供解鎖 Bootloader 服務,如小米的 MIUI Unlock,需注意的是解鎖後通常 OEM 廠商不再提供裝置的保固。

Hardrooting

Hard-Rooting 流程

當解鎖 Bootloader 後,第一步驟會在 fastboot/bootloader 模式下刷入第三方 recovery 映像檔,支援度最廣的 recovery 映像檔首推 TWRP。接著就可以安裝客制化的第三方作業系統,有很多原廠不再提供 Android 系統升級的品牌手機,唯一的方式就是藉由解鎖 Bootloader 後來完成。安裝完成後再透過 recovery 模式刷入有包含 root 的工具套件,最具有代表性的套件是由台灣人開發的 Magisk。

完成以上刷機程序,若舊有裝置原廠僅支援至 Android 10,透過刷機就可以安裝第三方 Android 11 的作業系統。