Android在系統備份后還原的處理上存在嚴重漏洞(CVE-2014-7952),使得攻擊者可以注入惡意的apk文件到備份文件中(這樣還原的時候惡意的應用也安裝上去了)。該漏洞是由Android的命令行工具adb的問題導致的,影響目前所有版本的安卓系統(包括Android L)。目前該漏洞沒有修復。
ADB 功能預覽
ADB (Android debug bridge)可以執行各種各樣的功能,可以通過pc向手機發送命令,它也可以對android手機進行全備份,Search-Lab的研究者也正是通過這個功能發現的該漏洞。
Android系統對安裝的應用提供了一種通過adb進行備份與還原的機制。默認情況下,應用的完整備份包含存放在/data目錄下的私有文件,但是備份行為可以實現BackupAgent類來自定義,這樣應用備份的時候就可以提供自定義的一些文件和數據(也就是,能決定備份的東西)。
備份管理器,能調用自定義的BackupAgent并沒有對應用程序返回的數據流進行過濾。在BackupAgent在執行備份的時候,可以在用戶沒有感知的情況下注入其他的apk文件到備份的文件中。BackupAgent并不需要申請android權限。當系統進行還原的時候,系統就安裝了注入的android apk。
該漏洞的利用也很直接。攻擊者首先需要誘導用戶有惡意的BackupAgent類的應用。該應用可以表現為良性應用,因為BackupAgent并不需要申請安卓權限。然后通過adb進行備份,創建含有注入的惡意apk的備份文件,再恢復即可。
POC
Android 4.4.4和Android 5.1.1測試通過
Step 1: 安裝ADB_Backup_Injection.apk (com.searchlab.backupagenttest):
這個應用不需任何授權
Step 2: 使用下面的命令建立備
adb backup -f backup.ab -apk com.searchlab.backupagenttest
Step 3 (可選): 如果你希望檢查一下剛才建立的備份,可以使用ABE工具
java -jar abe.jar unpack backup.ab backup.tar
在tar文件中你能找到注入的應用 (com.searchlab.wifitest)。
Step 4: 使用下面的命令還原
adb restore backup.ab
因為backup.ab文件已包含注入的應用, file already contains the injected application, it will be restored (installed) as well.
Step 5: 驗證WiFi Test應用被安裝,這個應用使用android.permission.CHANGE_WIFI_STATE和android.permission.ACCESS_WIFI_STATE證明可權限提升。
地址:https://github.com/irsl/ADB-Backup-APK-Injection/