分享到:

前几期中,我们讨论了与Activity,Content Provider ,Broadcast Receivers相关的攻防,在本期中,我们将会来讨论讨论非预期的信息泄露,也即我常常提到的所谓“边信道信息泄露”.

何为非预期的信息泄露?

当应用处理用户或其它数据源输入的数据时,可能会把数据放在不安全的位置,而这些数据能够被同一设备上其它的恶意应用读取,这就造成了风险。

安全风险

由于利用这样的边信道信息泄露非常容易,导致应用容易受到很严重的攻击,攻击者通过一小段代码就能够读取不安全的敏感信息,我们也能通过adb之类的工具来读取。

示例

以下是以下边信道信息泄露的示例情景

Content Provider 信息泄露

Copy/paste buffer缓存

日志记录

URL缓存

浏览器Cookie对象

第三方统计数据

下一节中,我们将会演示上述情景将如何被攻击者利用。

1、 Contetn Provider 信息泄露

即使数据不会储存在设备上,任然可以通过一个恶意应用来提取漏洞Content Provider的数据。

相关的详细信息可以参看第二期文章(传送门到第二期)

2、  Copy/Paste buffer缓存

Android中的Copy/Paste buffer缓存也是一个存在安全问题的地方,由于移动设备拼命的限制,用户更倾向于使用复制粘贴。如果用户把信用卡号这样的敏感信息复制到了剪贴板,攻击者通过一小段代码就能轻轻松松读取到数据

攻击者通过在受害者设备中植入恶意应用,就能随时随地读取受害者的敏感信息,给受害者造成非常严重的损失。

我们用上面的代码开发了一个示例应用,来演示恶意应用如何从剪贴板读取敏感信息。

假设用户在使用合法应用的时候已经将敏感信息复制到了剪贴板,现在,我们使用恶意程序来从剪贴板中读出信息:

我们的示例只是读出数据并显示在屏幕上,但攻击者能远程控制恶意应用将读取到的信息发送到他自己的服务器上。

3、 日志

Android提供的日志功能也是一个会造成信息泄露的地方,日志一般是开发者在开发期间调试使用的,在本节中,我们将会看到攻击者如何通过日志信息发现信息泄露。在测试时,我有多种方式使用logcat工具来读取日志信息,见下一节。

3.1 使用Eclipse

如果使用Eclipse IDE,只需要把你的设备连接到电脑上,我们就能在Logcat选项卡中看到应用运行期间输出的所有日志信息,其中可能就会有一些敏感信息,下面的截图就是测试应用在日志在打印出了密码

3.2 使用adb

我们使用adb来查看日志

首先连接设备到电脑,并使用以下命令:

# adb logcat

该命令在终端中打印出所有的日志,如下图。图中我们感兴趣的应用日志分散在大量的系统事件日志中,我们可以通过logcat的选项来过滤出我们感兴趣的东西:

-v verbose    打印详细

-d debug     打印调试级日志

-I information 打印提示级日志

-e error      打印错误级日志

-w warning   打印警告级日志

我们也能通过以下命令将logcat的输出保存到文件中:#adb logcat > output.txt

将日志保存到电脑本地,一遍后期进一步分析。

3.3使用恶意应用

我们也能开发一个恶意应用来读取设备的日志信息,关键代码如下:

提示:READ_LOGS权限在Jellybean(Android 4.1 API level 16)后不再对第三方应用开放,但这段代码任然可以在root过的设备上运行。

4.URL缓存和浏览器cookie对象

已经有大量基于web view的应用程序造成URL,cookie和缓存等泄露的问题,这允许攻击者劫持用户的会话。这样的缓存可能存在日志,流量历史,浏览缓存等多种形式。

我们能用grep从logcat的输出中过滤出诸如cookies等敏感信息,命令如下:#adb logcat|grep “cookie”

许多的应用都没有禁用掉缓存.可以简单的通过”no-cache”,”no-store”等HTTP头来避免造成信息泄露。

这方面有许多的漏洞报告,详细信息请参看文章末尾的相关链接。

5.分析发送到第三方的信息

某些情况下,有的应用会使用第三方API。在使用这类应用时,第三方的API可能会读取诸如设备ID及位置信息等敏感信息。

总结:

按照2014年发布的OWASP 移动安全漏洞 TOP 10,非预期的信息泄露排名第四,尽管这看起来是一个非常简单的漏洞,但其泄露的关键信息可能会造成非常严重的安全风险。攻击者检查信息泄露的方法相对非常简单,所以强烈建议开发者在开发应用过程中注意防范信息泄露。

相关链接:

android 日志泄露,安卓Hacking Part 4:非预期的信息泄露(边信道信息泄露)相关推荐

  1. 解密android日志xlog,安卓开发技巧2:自定义日志工具类XLog的实现

    安卓开发技巧二:自定义日志工具类XLog的实现 我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项 ...

  2. 安卓日志系统初探(带你了解Android日志系统的概貌)

    目录 1 介绍 2 ADB的原理 2.1 adbd服务进程 2.2 ADB 服务端 2.2.1 USB方式 2.2.2 网络方式 2.2.3串口方式 2.3 ADB 客户端 3 安卓框架中日志的收集和 ...

  3. 国内大厂首次推出Android统一标准--安卓绿色联盟

    国内Android开发良莠不齐,开发质量绝大多数都是不合格的产品,只为了上线而开发,没有任何的规范和约束.从安全和性能来说,绝大多数App在这方面都是考虑不完善的,安全风险高,性能差,99%的app都 ...

  4. Android日志[进阶篇]一-使用 Logcat 写入和查看日志

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  5. Android日志分析

    近期开始接触Android相关内容,从基础开始学习吧. 一.Android 日志分类 Android日志主要分为kernel.radio.event.main四种,相关描述如下: 1. Kernel ...

  6. Android日志系统分析之日志设备驱动程序代码阅读

    android日志系统中定义了设备驱动的实现代码位于kernel/common/drivers/staging/android/logger.h和kernel/common/drivers/stagi ...

  7. Android日志Log使用

    Android开发中日志工具的使用是十分重要的,可以帮助我们定位和查找程序执行的问题,了解程序执行过程等.这里以 Eclipse 下的的安卓开发为例进行说明. 打开 LogCat 功能 首先,确保 E ...

  8. Android日志[进阶篇]三-Logcat 命令行工具

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  9. Github项目解析(五)--Android日志框架

    转载请标明出处:一片枫叶的专栏 本文主要讲解的是自己实现一个简单的Android日志框架,可以在Android studio控制台中输入日志信息,其简单的使用方式: L.v("...&quo ...

最新文章

  1. Linux系统下的文件管理类常命令及使用方式
  2. 以太网单播、组播、广播
  3. Python3的unittest用例按编写顺序执行
  4. Cisco 2950 系列交换机实例配置
  5. 用Python来搞副业?这届大学生到底有多野……
  6. 性能测试 Performance Test
  7. Java thread.join
  8. ubuntu 挂载优盘
  9. 未解决:configure: error: XCode tool ‘metal‘ neither found in path nor with xcrunchecking for metal...
  10. SAS Planet软件使用教程及下载Googlemap地图
  11. 变分法与最优控制matlab,1987_11变分法与最优控制_10654423.pdf
  12. 0x80070079信号灯超时_onedrive下载文件时,出现”0x80070079信号灯超时时间已到”...
  13. leaflet 加载海量点位,点击marker 查看详情功能
  14. MAC怎样显示隐藏文件
  15. “无为而无不为”杂议
  16. C语言中的清屏函数(自己编写)
  17. 向量指令和标量指令有些大型机和巨型机 设置功能齐全的向量运算指令系统
  18. “蓝桥杯”练习系统(基础篇)
  19. 如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?
  20. 姑苏寻古[小刚执笔]

热门文章

  1. 关于MySQL存储过程异常处理的一点心得
  2. 【PPT分享】阿里巴巴定向广告之新一代Rank技术.pdf(附下载链接)
  3. KDD 2021 | 谷歌DHE:不使用embedding table的类别型特征embedding
  4. 字节AI LAB NLP算法二面凉+被捞后通过
  5. chartxy 柱状图_关于Chart柱状图的使用,有问题
  6. 换了路由器电脑都连不上网了_换了新路由器电脑连不上网
  7. LeetCode:10.regular-expression-matching(正则式表达)
  8. 课外题:需要排序的子数组
  9. pytorch拼接与拆分
  10. 花书+吴恩达深度学习(十八)迁移学习和多任务学习