Android 通過在每台裝置上實施了基於許可權的安全性原則來處理安全問題,採用許可權來限制安裝應用程式的能力。當某個許可權與某個操作和資來源物件綁定在一起,我們必須獲得這個許可權才能在對象上執行操作。由於Android設計本身就是為Android開發人員著想,所以一切許可權許可權由使用者決定而不是手機製造商和平台供應商,但這不得不帶來了開發人員濫用許可權,駭客通過許可權來進行惡意行為的風險,所以作為靜態分析一個app是否為惡意軟體的第一道關,擷取並瞭解Android Permission許可權意義是十分重大的。
權限原則
Android 架構提供一套預設的許可權儲存在android.anifest.permission 類中,同時也允許我們自己定義新的許可權。我們在寫應用程式時聲明許可權,程式安裝時新許可權被引入系統。許可權授權在應用程式被安裝時執行。當在裝置上安裝應用程式時,程式將請求完成任務必需的許可權集合。被請求的許可權列單顯示在裝置螢幕上以待使用者審查只有使用者同意授權後,程式才會被安裝,該應用程式獲得所有被請求的許可權。所以,Android 系統實施的主要安全準則是應用程式只有得到許可權許可後,才能執行可能會影響到系統其它部分的操作。
每個許可權被定義成一個字串,用來傳達許可權以執行某個特殊的操作。所有許可權可以分為兩個類別:一種是執行程式時被應用程式所請求的許可權,一種是應用程式的組件之間通訊時被其它組件請求的許可權。開發人員通過在AndroidManifest.xml檔案中編寫入權限標籤來定義以上兩種類別的權限原則。
許可權聲明
應用程式可以用一個<permission>元素來聲明許可權, 用於限制訪問特定組件或應用程式 在安裝程式時, 這個已聲明的許可權被加入到系統中,具體可以參看:Android 自訂許可權
許可權請求
應用程式列出所有需要用來完成任務的許可權,分別用 <use-permission>元素標識這些許可權。在程式安裝時被請求,列表顯示在螢幕上使用者要麼同意安裝,要麼中止安裝。同意安裝則意味著授權所有被請求的許可權。
擷取許可權
擷取許可權,是我們靜態分析某個app的第一關,通過知道app所具有的許可權,我們一般能夠基本知道該app或許會有那些行為。
工具:目前已有多個工具可以靜態檢測Android app所具有的Permissions,這類工具有:aapt、apktool、androguard等等;