导语:在上一篇文章中,我们讲解了当app想要与其他app共享数据时,通过content provider发起攻击和不安全的加密技术,本文我们继续讲解其他攻击手法。
在上一篇文章安卓应用程序渗透测试八中,我们讲解了当app想要与其他app共享数据时,通过content provider发起攻击和不安全的加密技术,本文我们继续讲解其他攻击手法。
攻击安卓粘贴板(pasteboard)
安卓提供剪贴板框架来复制和粘贴不同类型的数据,如文本,图像,二进制流数据或者其他复杂的数据类型。
简单的文本数据直接存储在剪贴板中,而复杂的数据则存储为一个引用,将要粘贴的应用使用content provider可以对这个引用进行解析。
在实现了剪贴板框架的app内部或不同的app之间可以进行复制粘贴。
为了使用剪贴板,你需要调用getSystemService()方法来实例化一个ClipboardManager对象。
“服务调用剪贴板”,服务码1,2,3分别代表的是getClipboadrText,setClipboardText和hasClipboardText。
服务调用剪贴板 2 s16 thisisinsertedtext(插入的内容)
下面使用银行app来作为例子,我们从一个app中复制账号,如图:
我们可以看到所有进程,我们也可以通过apk名来搜索我们想看的进程,如图:
命令:ps | grep ‘insecure’
我们可以使用下面的命令来获取到复制的账号:
su (PID) u0_a80 service call clipboard 2 s16 (.apk name) com.android.insecurebank
我们可以看到输入的内容,也就是app中被复制的内容。能看到明文,这就很不安全了。如果是信用卡,借记卡,PIN,CVV或者是账号,这就更加严重了。
缓解措施
· 为了完全不使用剪贴板,KeePass密码管理软件提出了所谓的自动类型。它通过模拟相应的按键直接向目标字段填充。这么做的优点是没有通过剪贴板来传输数据。
· 如果要使用剪贴板来复制粘贴密码时,可以配置KeePass在短时间内自动清除clipboard中的内容。
· 复制密码时,KeePass会在其主窗口底部显示一个递减进度条,用户可以实实在在的看到超时进度,一旦超时到期(例如15秒或30秒),如果剪贴板中还包含KeePass数据,KeePass就会立刻删除剪贴板的内容(用户无法再使用剪贴板历史管理功能)。
攻击安卓键盘缓存
安卓中有一个用户字典,可以保存用户输入,为了方便以后自动更正用户的输入。但是所有其他的app都可以任意访问这个用户字典,而没有进行权限设置。
在下面的例子中,我们将选择文本,添加用户名到用户字典中,如图:
你可以在用户字典数据库中获取到这个信息。
用户字典文件存储在/data/data/com.android.providers.userdictionary/databases目录中
打开数据库文件 sqlite3 user_dict.db
‘select * from words’这条查询语句会查询出所有添加到用户字典的信息,如图:
缓解措施
· 禁用任何敏感信息的自动更正功能,不仅是密码字段。因为键盘可以缓存敏感信息,所以可以恢复。
· 为了提高安全性,可以考虑使用自定义键盘(以及PIN输入),该键盘可以禁用缓存,还提供了其他的保护措施来防御恶意软件。
安卓渗透测试系列其他文章如下: