导语:在上一篇文章中,我们讲解了当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中复制账号,如图:

2.png

我们可以看到所有进程,我们也可以通过apk名来搜索我们想看的进程,如图:

命令:ps | grep ‘insecure’

3.png

我们可以使用下面的命令来获取到复制的账号:

su (PID) u0_a80 service call clipboard 2 s16 (.apk name) com.android.insecurebank

4.png

我们可以看到输入的内容,也就是app中被复制的内容。能看到明文,这就很不安全了。如果是信用卡,借记卡,PIN,CVV或者是账号,这就更加严重了。

缓解措施

· 为了完全不使用剪贴板,KeePass密码管理软件提出了所谓的自动类型。它通过模拟相应的按键直接向目标字段填充。这么做的优点是没有通过剪贴板来传输数据。

· 如果要使用剪贴板来复制粘贴密码时,可以配置KeePass在短时间内自动清除clipboard中的内容。

· 复制密码时,KeePass会在其主窗口底部显示一个递减进度条,用户可以实实在在的看到超时进度,一旦超时到期(例如15秒或30秒),如果剪贴板中还包含KeePass数据,KeePass就会立刻删除剪贴板的内容(用户无法再使用剪贴板历史管理功能)。

攻击安卓键盘缓存

安卓中有一个用户字典,可以保存用户输入,为了方便以后自动更正用户的输入。但是所有其他的app都可以任意访问这个用户字典,而没有进行权限设置。

在下面的例子中,我们将选择文本,添加用户名到用户字典中,如图:

5.png

6.png

你可以在用户字典数据库中获取到这个信息。

用户字典文件存储在/data/data/com.android.providers.userdictionary/databases目录中

打开数据库文件 sqlite3 user_dict.db

‘select * from words’这条查询语句会查询出所有添加到用户字典的信息,如图:

7.png

缓解措施

· 禁用任何敏感信息的自动更正功能,不仅是密码字段。因为键盘可以缓存敏感信息,所以可以恢复。

· 为了提高安全性,可以考虑使用自定义键盘(以及PIN输入),该键盘可以禁用缓存,还提供了其他的保护措施来防御恶意软件。

安卓渗透测试系列其他文章如下:

安卓应用程序渗透测试一

安卓应用程序渗透测试二

安卓应用程序渗透测试三

安卓应用程序渗透测试四

安卓应用程序渗透测试五

安卓应用程序渗透测试六

安卓应用程序渗透测试七

安卓应用程序渗透测试八

源链接

Hacking more

...