安卓應用程式滲透測試(一)
在安全行業中,通常採用安卓安全測試來檢測安卓APP中的漏洞。
Web應用測試之後,人們更加關心的領域便是移動應用測試。我們先從一些基礎開始。
安卓裝置基礎架構
Linux核心層
對於硬體,我們通常要求驅動程式作為軟體,以便該硬體可以順利執行。我們選擇Linux核心,因為它具有安全功能。
·基於使用者的許可權模型
· 程序隔離
· 用於安全IPC的可擴充套件機制
· 能夠移除核心中不必要且可能不安全的部分
硬體抽象層
硬體抽象層讓應用程式可以直接訪問硬體資源,比如藍芽,音訊,視訊等,如圖:
在硬體抽象層之上有一層應用框架層,其中包含著很多非常重要且有用的庫,如下:
· Surface Manager:管理視窗和螢幕
· Media Framework:允許使用各種型別的編碼器來回放和記錄不同的媒體資源
· SQLite:用於資料庫管理的輕量版SQL
· WebKit:瀏覽器渲染引擎
· OpenGL:用於在螢幕上正確渲染2D和3D內容,安卓中的庫是用C和C++寫的
Dalvik虛擬機器是由Android開源專案專門設計的,用於執行Android應用程式。每個執行在Android裝置中的APP都有自己獨立的Dalvik虛擬機器。
Android執行時(ART)是Dalvik虛擬機器的替代品,在Android4.4中已經作為試驗版釋出了,在Android Lollipop(5.0)中,它將完全取代Dalvik虛擬機器。
ART中有一些重大變化,是因為AOT編譯(ahead-of-time)和垃圾回收機制。
在AOT編譯中,當用戶在他們的裝置中安裝APP時就進行編譯,而在Dalvik虛擬機器中,使用的是JIT編譯(Just-in-time),也就是當用戶執行APP時進行位元組碼編譯。
從Android4.4版本開始,還有一個名為ART(Android執行時)的執行時,使用者可以在DVM和ART執行時環境之間自由切換。
應用框架層
應用框架層以Java類的形式為應用程式提供許多更高層的服務。應用程式開發者允許在APP中使用這些服務。
Android框架中包含了下列關鍵服務
· 活動管理器:活動管理器控制著應用程式生命週期和堆疊。
· 內容提供商:內容提供商元件根據請求從一個應用程式中為其他程式提供資料。您可以將資料儲存在檔案系統,SQLite資料庫或web上,或者應用程式可以訪問的任何其他持久儲存的位置。通過內容提供商,其他應用程式可以查詢和修改資料(如果內容提供商允許的話)。當APP想要與其他APP共享資料時,內容提供商發揮著至關重要的作用。
· 資源管理器:提供對非程式碼嵌入資源的訪問,比如字串,顏色設定和使用者介面佈局。
· 通知管理器:允許應用程式向用戶顯示警報和通知。
· 檢視系統:用於建立應用程式使用者介面的可擴充套件檢視集。
· 包管理器:應用程式能夠通過該系統查詢裝置上當前安裝的其他應用程式的資訊。
· 電話管理器:嚮應用程式提供裝置上可用的電話服務資訊,例如狀態和撥號資訊。
· 位置管理器:提供對位置服務的訪問,允許應用程式接收有關位置變更的更新。
應用層
應用層位於Android軟體架構的最頂層。這一層包括Android裝置自帶的系統應用(比如web瀏覽器和郵件APP等)以及在使用者在購買裝置後安裝的第三方應用程式。典型應用包括相機,鬧鐘,時鐘,計算器,聯絡人,日曆,媒體播放器等。
敬請期待Android應用程式滲透測試二。