Android安全/安全技術--23--其他Android安全知識總結
6-1、基礎知識點
生成的AVD模擬器在:C:\Users\Innyue.android\avd目錄下
wireshark截獲資料包並對資料包解碼時,會產生大量系統開銷,所以wireshark截獲幾百兆或更多資料包時,經常會停止執行
MemSpcetor工具中提供了搜尋功能,可以搜尋應用記憶體,也可以修改應用記憶體,還可以將記憶體DUMP到SD卡(注意,虛擬機器得先配置SD卡),然後用adb或monitor複製到主機上檢視。
診斷APP時,可以考慮線上診斷平臺,直接拖放上傳APP即可分析出結果。
APP的種類:
1、原生APP:通常的開發方式,以谷歌SDK使用Java或C++語言進行開發 2、網頁APP:即採用H5寫的APP,不需要下載安裝,是生存在瀏覽器中的應用 3、混合APP:半原生半網頁的混合APP,需要下載安裝
攻擊基礎術語:
1、攻擊向量:攻擊者實施行動的方式,描述了用來執行攻擊的方法
1、包括所需認證條件、可訪問性、難度 2、常基於常見攻擊的屬性進行進一步分類
2、攻擊面:目標的軟肋,也就是使得目標易受攻擊的功能特性
1、攻擊者可以執行並進而攻擊的程式碼 2、描述了程式碼中可能存在著尚待挖掘的安全漏洞的位置。可巨集觀可微觀
6-2、ADB介紹
ADB(Android Debug Bride)可以針對模擬器環境下的Android裝置或連線PC的真實裝置進行安裝軟體包、執行服務命令和shell命令等操作
常用命令說明:
命令 | 命令說明 |
---|---|
adb devices | 檢視安卓裝置列表 |
adb -s 裝置名稱 其它命令 | 連線多臺裝置時,選擇目標裝置 |
adb pull 安卓裝置路徑 PC機路徑 | 從安卓裝置中匯出檔案 |
adb push PC機路徑 安卓裝置路徑 | 將檔案寫入安卓裝置 |
adb install 安裝包在主機中的路徑 | 直接安裝APK安裝包 |
adb uninstall 包名 | 解除安裝軟體 |
adb shell | 開啟安卓的互動式shell |
adb shell 要執行的命令 | 在安卓裝置中執行命令 |
6-3、匯出檔案
在root的情況下可以使用RE檔案管理器先匯入SD卡,再使用PC連線USB線提取,不然直接連線USB線看不到其他資料夾下的內容。
adb命令匯出。
6-4、Logcat命令
在adb shell中執行,Logcat可以實時檢視已連線裝置上執行的函式、方法、錯誤資訊。如果開發過程中遇到錯誤,可以實時檢視是哪個階段產生的
常用命令說明:
命令 | 命令說明 |
---|---|
-c | (常用)刪除所有日誌 |
-d | (常用)在螢幕上顯示日誌 |
-f 檔名 | 以指定的檔名儲存日誌 |
日誌畫面最左側的縮寫分別表示:v-verbose、D-debug、I-information、W-warning、E-error、F-fatal(嚴重)、S-silent(死寂)
6-5、pm命令獲取裝置資訊
詳細命令如下:
命令 | 引數 | 命令說明/帶引數命令說明 |
---|---|---|
pm list packages | [-f] | 顯示所有軟體包/顯示分配的檔案 |
pm permissions-groups | 顯示所有已知許可權組 | |
pm permissions | [-g] | 顯示所有已知許可權/指定許可權組 |
[-f] | 顯示所有已知許可權/顯示所有資訊 | |
[-s] | 顯示所有已知許可權/顯示簡介 | |
[-d] | 顯示所有已知許可權/只顯示危險許可權 | |
[-u] | 顯示所有已知許可權/只顯示使用者可用許可權 | |
pm list instrumentation | [-f] | 顯示所有裝置/檢視分配的檔案 |
pm list features | 顯示所有系統現狀 | |
pm path | 顯示軟體包的檔案路徑 | |
pm install | [-l] | 安裝軟體包/安裝包含FORWARD_LOCK的軟體包 |
[-r] | 安裝軟體包/保留資料重新安裝APP | |
[-t] | 安裝軟體包/允許測試已安裝的APP | |
[-i] | 安裝軟體包/特定安裝包名稱 | |
[-s] | 安裝軟體包/在SD卡中安裝軟體包 | |
[-f] | 安裝軟體包/在內部快閃記憶體中安裝軟體包 | |
pm uninstall | [-k] | 解除安裝軟體包/解除安裝後保留資料和快取資料夾 |
6-6、Android應用安全評估全過程
1、初步剖析
1、瞭解應用的目標、開發者、開發歷史或評論 2、瞭解應用的其它資訊。如申請的許可權,開放的元件等
2、靜態分析
1、首先識別應用中的簡單字串。如硬編碼、認證憑據、金鑰等 2、嘗試其它分析以構建呼叫圖、確定應用邏輯和程式流程,發現潛在的安全問題 3、反編譯並分析dex、分析xml等檔案,通常為smali語言,操作為搜尋跟蹤 4、深入瞭解申請的許可權、開放的元件、存在的IPC端點 5、分析輸出的日誌。命令為logcat 6、深入分析各種邏輯流。語言為smali或Java
3、動態分析
1、概念:需要執行應用,通常在插樁或監控的方式下進行 2、掌握使用者與應用進行互動的過程。如工作流、選單、介面、設定面板等 3、執行時主要考慮抓取日誌 4、跟蹤感興趣的類、函式等需要跟蹤的的資訊,證實靜態分析中識別到的結果
4、攻擊
1、根據前期得到的邏輯,構造攻擊資料。如傳送特殊構造簡訊觸發解鎖、關機等 2、傳送偽造廣播。總之就是構造各種攻擊
6-7、OWASP Mobile TOP 10
1、平臺使用不當
包括平臺功能的濫用(如Android平臺提供了非常多的功能,而一個APP上則只需要使用個別功能即可足以使用,但是它使用了多餘的平臺功能)。
還包括未使用平臺的安全控制(移動平臺都有自己的安全機制,開發時未利用這些安全機制)。
以及一些應用程式意圖執行正確的操作,但實際上乾的卻是錯誤的事(自作多情)。
2、不安全的資料儲存
不安全的資料儲存包括以下方面:SQL資料庫、日誌檔案、XML中儲存敏感資料、二進位制資料儲存、Cookie 儲存、SD 卡儲存、Cloud 同步。這些儲存方式使用不當都可能造成不安全的資料儲存。
非故意的資料洩漏包括以下方面:因作業系統造成的、因開發框架造成的、因編譯器環境造成的、因新硬體裝置造成的。
導致的影響:身份資訊被盜、隱私洩露、詐騙、名譽受損、違反外部的政策要求、材料丟失。
3、不安全的通訊
不安全的通訊包括:A到B之間不安全獲取資料的所有方面。包括終端之間的通訊、應用程式和伺服器的通訊、終端和其他之間的通訊。所涉及的通訊技術包括:TCP/IP、WiFi、藍芽或LE藍芽、NFC、音訊、紅外、GSM、3G、簡訊等。
導致的影響:破壞資料的完整性、資料的保密性和資料來源的完整性。
4、不安全的身份驗證
不安全的身份驗證包括:當進行互動時沒有對使用者進行身份識別、當進行互動時沒有保持對使用者的身份確認、會話管理中存在漏洞。
會話問題包括:可預見的會話識別符號、使用者登出失敗、會話壽命風險(會話有效時間太長、會話在跨多個通道中有效)、會話固定。
5、加密不足
加密不足包括:弱密碼、短金鑰、錯誤型別的加密演算法(例如有時候應使用對稱加密演算法更合理,但卻使用了不對稱加密演算法)、未避開密碼分析攻擊漏洞、已知明文攻擊、不安全的金鑰選擇(例如可預測的隨機性)。
導致的影響:使用加密技術保護的資料被洩露。
6、不安全的授權
包括任何失敗的授權行為。例如:在客戶端的授權決策、強迫瀏覽等。
導致的影響:對本不應該被授權的使用者獲得了許可權。從而導致使用者可以執行原本不能執行的建立、讀取、更新、刪除操作。
7、客戶端程式碼質量問題
包括全部的移動客戶端程式碼級別開發問題。例如緩衝區溢位、字串格式漏洞或其他不同型別的程式碼級錯誤,而這些錯誤的解決方法是重寫在移動裝置中執行的某些程式碼。在程式碼質量事件中,風險往往來自於使用了錯誤的 API、使用了不安全的 API、使用了不安全的語言結構或其他一些程式碼級的問題。
導致的影響:允許攻擊者利用業務邏輯繞過裝置上執行的安全控制。程式碼級的錯誤可能以意外的方式暴露敏感資料。
8、程式碼篡改
包括二進位制修改、本地資源修改、方法鉤取呼叫、方法調整重設、動態記憶體修改。
主要特徵為:對應用程式程式碼的直接修改、系統 API的重定向或更換、對後端伺服器的直接攻擊。
導致的影響:改變應用程式的隱性或顯性邏輯導致應用開發人員失去合法擁有權、被用來複制應用程式形成惡意變種以在合法應用程式中植入惡意軟體、改變或中斷嚮應用程式後端伺服器的網路流量、將應用程式的通訊重定向至攻擊者的伺服器。
9、逆向工程
包含對核心二進位制程式碼的分析,以確定它的原始碼、庫檔案、演算法和其他資產。得知內部工作原理後可用於在應用程式中發現其他漏洞,並可揭露有關後端伺服器、加密常數、密碼以及智慧財產權的資訊。
導致的影響:可以列舉或繞過業務邏輯、繞過安全控制、促進原始碼盜用和篡改程式碼。也可以讓攻擊者或對手複製應用程式,從而進行後續的危害性操作。
10、無關的功能
主要包括在應用程式中啟用了在釋出時並不打算髮布的功能。
導致的影響:通過這些額外的功能,有竊取敏感資料或訪問未經授權資訊的高風險。