安卓應用程式滲透測試(七)
在上一篇文章安卓應用程式滲透測試六中,我們看到了漏洞被分為十大類。現在我們就來看看其中的幾個。
不安全的登入—ADB Logcat:
Logcat是一個命令列工具,可以dump系統訊息日誌,包括裝置報錯時的堆疊跟蹤以及使用Log類從應用程式寫入的訊息。
通過Android Logcat你可以:
·檢視,過濾和收集所有應用程式日誌
· 檢視,過濾和收集所有系統日誌,例如垃圾收集器事件
· 檢索已發生的所有意外錯誤
有時當您登入應用程式時。這些憑據可以在日誌中找到。
ofollow,noindex">返回原文觀看視訊。
緩解措施:adb logcat -c“(這會清除日誌),請確保在編寫應用程式憑證時不顯示在日誌中。
不安全的外部和內部儲存
我們已經知道裝置中應用程式的所有資料都可以在/data/data目錄中找到,裝置中的所有應用程式(apk檔案)都可以在/data/app目錄中找到。
當你使用root裝置時,你可以深入瞭解儲存在此目錄中的檔案型別。
內部儲存
內部儲存是在Android應用程式中儲存資料的另一種方式。開發人員可以通過各種方式在本地儲存Android應用程式中的資料
示例
共享首選項,檔案,快取,SQLite資料庫,lib,日誌檔案,二進位制資料儲存,cookie儲存等。
共享首選項
“共享首選項”允許開發人員儲存和獲取原始資料型別的持久鍵值對,例如布林值,浮點數,整數,長整數和字串。使用共享首選項類在Android應用程式中建立共享首選項。
Sq-lite資料庫
Sq-lite資料庫是基於檔案的輕量級資料庫。它們通常具有副檔名“.db”或“.sq-lite”。Android為Sq-lite資料庫提供全面支援。我們在應用程式中建立的資料庫可被應用程式中的任何類訪問。其他APP無法訪問它們。
外部儲存
SD卡是Android中另一個重要的位置,我們可以儲存與我們的APP相關的資料。在外部儲存上建立的檔案是全域性可讀和可寫的。由於外部儲存可以由使用者刪除並且也可以由任何應用程式修改,因此我們不應使用外部儲存來儲存敏感資訊。
緩解措施:
·對於本地儲存,安卓裝置管理API可用於強制加密本地檔案儲存,“set storage encryption”
· 除非明確要求應用程式之間的資訊共享,否則請確保任何共享首選項屬性為NOT_MODE_WORLD_READABLE(非全域性可讀模式)
· 對於SD卡儲存,可以通過'javax.crypto'庫實現一些安全性。
不安全通訊
缺少證書檢查:Android應用程式無法驗證提供給它的證書的身份。大多數應用程式忽略警告並接受任何自簽名證書。而有些應用程式通過HTTP連線傳遞流量。
弱握手協商:應用程式和伺服器執行SSL / TLS握手,但使用不安全的密碼套件,容易遭到MITM攻擊。因此任何攻擊者都可以輕鬆解密該連線。
隱私資訊洩漏:大多數情況下,應用程式通過安全通道進行身份驗證,但其他所有連線都是通過非安全通道。這對於應用程式來說並不安全,因為會話cookie或使用者資料等其他敏感資料可能會被惡意使用者攔截。
緩解措施:
· 使用可信CA提供商簽名的證書,並考慮安全應用程式的證書固定。
· 在傳輸層應用SSL/TLS,這樣一來,手機APP將使用SSL/TLS來傳遞敏感資訊,如會話令牌或傳輸到後端API的其他敏感資料或Web服務資訊。
· 僅在使用金鑰鏈中的受信任證書驗證終端伺服器的身份後才建立安全連線。