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/