移動安全 - 敏感信息安全 - 文件存儲權限和logcat日志


敏感信息安全主要檢查客戶端是否保存明文(或者容易被破解)的敏感信息,以及敏感信息的非授權訪問。

目前安卓實現數據持久化的方式有4種:文件存儲、SharedPreferences存儲、數據庫存儲、SD卡存儲。因此咱們得先學習下安卓的數據存儲(持久化)相關的知識。本着光說不練假把式,只看不練一用就廢的原則,還是結合具體代碼例子來學習。前面說了,咱除了安卓手機之外對安卓一無所知,所以每次看安卓安全方面的東西,都會自己改app代碼來做實驗,這樣更直觀,更容易理解,也不容易忘~

 

1. 文件存儲權限 

文件存儲是將所有數據原封不動的保存到文件中,適合簡單文本和二進制數據,下面的代碼是將輸入內容保存到名為save_data的文件中:

運行app輸入內容:

 

在android-sdk\tools\lib\monitor-x86_64目錄下找到monitor.exe並啟動,找到data/data/com.example.persistencetest/file文件夾下的文件,就是我們寫入的文件了:

將文件導出來:

用root用戶進入adb shell查看save_data文件,該文件所屬用戶是:u0_a56,權限為:-rw-rw----

 

代碼中Context設置的是MODE_PRIVATE,表明該數據只能被應用本身(或者root)訪問:

 

Context.MODE_PRIVATE:默認模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。

Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。

Context.MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取。

Context.MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。

 

接下來開啟另一個應用drozer,並且用drozer連接模擬器進入adb shell,此時的用戶是u0_a57,根據MODE_PRIVATE的設置,此時是無法訪問save_data文件的:

現在將文件的context改為MODE_WORLD_READABLE,這個屬性在高版本的安卓已經被拋棄了666~

再開drozer就能讀取這個文件了

用root用戶查看該文件的權限變成了-rw-rw-r--

 

雖然高版本的Android已經棄用了MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,但不妨礙之前低版本已經使用過這兩個屬性的App,以及因為特殊需求仍然在高版本使用的App。因此在開發APP時應盡量避免設置此類權限,以免造成安全隱患。在做APP檢查時,應注意檢查賦予此類權限的APP相關文件,具體問題具體分析

 

2. logcat 日志

主要是檢查客戶端程序存儲在手機中的日志是否含有敏感信息。

我們在寫程序時為了方便調試,或者發布后方便記錄數據或者排查問題,一般都會生成日志文件(包括操作日志、錯誤日志等)。但是一些敏感數據,比如用戶密碼、配置密碼、IP、github地址、JWT Token等敏感信息最好不要存儲(或者明文存儲)在日志中,在很多攻擊案例中,日志就是突破點~

Android也支持寫入日志,並且可以通過命令直接查看日志。假設在代碼中將密碼寫入日志:

運行一下:

然后進入adb shell查看日志,執行:logcat -d

輸出日志,發現密碼:

也可以輸出日志文件到本機:adb shell logcat -d > D:\1.txt

 

 

本文僅用於技術學習和交流,嚴禁用於非法用途,否則產生的一切后果自行承擔。

如需轉載,請注明出處,這是對他人勞動成果的尊重。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM