Android平台漏洞挖掘与利用

标签: 业界观察 | 发表时间:2015-10-31 12:09 | 作者:techug
出处:http://www.vaikan.com

由于Android平台特殊的生态,每一个Android设备中存在着Google、手机开发商、芯片厂商等多种来源的软件。每个软件模块没有统一的安全审计制度和测试流程,导致质量良莠不齐,对于安全研究者乃至于恶意攻击者来说,一直是一个比较好的目标。

从安全的角度考虑, Android平台利用Linux的uid特性把权限做了很好的区隔,使得在App层级,权限比较受限,一方面阻隔了许多恶意软件可能造成的破坏,另一方面也限缩了用户能够掌控自己设备的能力。例如,卸除用不到的预装软件、清理、加速、杀毒这类的功能,在Android平台上因为权限的关系,都不容易进行。

为了因应用户强烈的需求,Rooting App工具软件诞生了。Rooting App利用各种系统漏洞帮用户提升权限,也让Android漏洞在近年来被大量挖掘,利用的手法也不断演进,同时也促使厂商更注重Android平台的安全性。

在Android平台上,最底层也是各种权限控制的中枢是Linux内核。Linux内核主体是社群维护的操作系统,也包含了Google、手机厂商、芯片厂商的各种扩展。其中,手机厂商与芯片供货商提供的设备驱动这一部分,一直以来都存在许多安全漏洞。例如,2012年底开始出现mmap类的漏洞利用,第三方软件可以轻易地修改内核数据甚至代码来提权。Samsung平台上的CVE-2012-6422漏洞,算是其中大家比较熟知的。

注:mmap是一个用来映像内存空间的系统调用,常用于从内核暴露一段地址空间让用户态可以更有效率的进行内存读写。

除了mmap类的漏洞外,用户态与驱动数据交换导致的任意地址写漏洞也在2013年开始大量被发现。例如Qualcomm平台上的copy_from_user类漏洞CVE-2013-6123,第三方软件可以用伪造的数据与摄像头驱动做交互,进而修改任意地址的内容。

注:copy_from_user是一个Linux内核中的应用程序接口,用于从用户态拷贝数据到内核态。例如,应用程序设定内核驱动中的某个变量,常会用到这个接口。

提到Android漏洞,当然不得不提2013年出现的通用型漏洞。CVE-2013-6282算是最早被用在Rooting App中的通用型漏洞,它是一个内核层级的应用程序接口调用缺少必要的参数检查,导致攻击者可以透过一个简单的系统调用做到任意地址写。搭配Linux内核的信息泄露设计疏失,使得利用这个漏洞做提权的工具几乎可以横扫当时所有的Android设备。

其他包括CVE-2014-3153,以及CVE-2015-3636,都算是存在Linux内核操作系统的漏洞,可以适用于大部份Android设备。其中,近期发现的CVE-2015-3636是一个关于内存分配与释放的逻辑错误,是一种比较难被发现而且利用门坎较高的漏洞类型,特征不如前面两个类型明显,需要对于代码逻辑有较深的理解才能挖到漏洞。而漏洞利用时需要的合适攻击目标也比较难定位,这一部分只能依靠平时积累经验以及多充实工具库,如此一来,当漏洞出现时能尽快找到合适的武器。

除了权限中枢Linux内核以外,对于拥有较高权限的进程也是被关注的目标,例如mediaserver这样的进程,由于需要处理多种媒体文件格式,使用了大量第三方应用库,也同时引入了很多安全漏洞。其中,Stagefright的一系列问题在2015年8月开始大量被披露,其攻击手段就是利用第三方应用库处理较复杂的媒体文件格式时,没考虑到的边界情况导致溢出,进而控制mediaserver。由于这些媒体文件可以以MMS的形式传递到手机,对Android手机用户是一个很大的威胁。

相较于media权限,以system权限执行的system_server更是攻击者觊觎的一个目标,CVE-2014-7911就是通过第三方软件准备的数据使得system_server进程执行任意代码,获取system权限后,更多的攻击目标会被暴露在外,例如使用Qualcomm一系列芯片的手机上存在的CVE-2014-4322漏洞,在正常的情况下,第三方软件是无法与其相关的驱动做交互。然而,利用CVE-2014-7911提升到system权限后,CVE-2014-4322相关的设备文件就能被打开,进而造成有效的攻击。

只要人类继续写代码,漏洞无可避免地会被持续制造出来,并且被挖掘与利用。一方面,开发和测试人员应该关注的是如何有效地审计代码,在用户使用之前找出可能的漏洞。另一方面,假设漏洞必然存在,厂商应该与安全研究人员积极的合作,更快速地修补漏洞。然而,由于漏洞修补的实时性存在很多不可控的因素,如何使用更底层的保护机制避免漏洞被有效地利用,将会是手机厂商与芯片厂商需要投入研究的方向。

相关 [android 利用] 推荐:

Android利用canvas画各种图形

- - CSDN博客移动开发推荐文章
canvas通俗的说就是一张画布,我们可以使用画笔paint,在其上面画任意的图形. 可以把canvas视为Surface的替身或者接口,图形便是绘制在Surface上的. Canvas封装了所有的绘制调用. 绘制到Surface上的内容首先存储到一个内存区域(也就是对应的Bitmapz中),该Bitmap最终会呈现到窗口上.

Android平台漏洞挖掘与利用

- - 外刊IT评论
由于Android平台特殊的生态,每一个Android设备中存在着Google、手机开发商、芯片厂商等多种来源的软件. 每个软件模块没有统一的安全审计制度和测试流程,导致质量良莠不齐,对于安全研究者乃至于恶意攻击者来说,一直是一个比较好的目标. 从安全的角度考虑, Android平台利用Linux的uid特性把权限做了很好的区隔,使得在App层级,权限比较受限,一方面阻隔了许多恶意软件可能造成的破坏,另一方面也限缩了用户能够掌控自己设备的能力.

[Android实例] 利用Jsoup解析Html实现的Android招聘信息大全

- - CSDN博客推荐文章
看到很多招聘网站都没有推出招聘信息客户端,想来利用现成的资源,解析他们网站上提供招聘信息,这里就利用了Jsoup来解析HTML中的数据,实现整理归纳,然后显示的一个程序,也算是一个学习的程序吧,这里,我们先看一下图片,以下就程序源码. 源码下载: 点击打开链接. 作者:kangkangz4 发表于2011-12-13 11:09:34 原文链接.

利用 Android 的 OTG 功能控制单反相机

- Alex - 爱范儿 · Beats of Bits
iOS 平台已经有很多应用程序可以远程控制数码单反相机,但是在 Android 平台上能更方便:只需要一条 USB 线,就能直接用手机屏幕代替相机的取景器进行操作. 在 XDA 论坛上的一名开发者 Chainfire 公布了一段视频,它利用三星 Galaxy S II 的 USB OTG(On-The-Go)功能,让佳能数码单反相机的实时取景框图像以每秒 15 帧的速率显示在手机屏幕上.

Android利用Fiddler进行网络数据抓包

- - 编程语言 - ITeye博客
要 介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博、微信、墨迹天气)的网络通信请求就可以利用这个方法. 相对于tcpdump配合wireshark抓包的优势在于: (1)无需root (2)对Android和Iphone同样适用 (3)操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4)数据包的查看更清晰易懂,Fiddler的UI更简单明了 (5) 可以查看https请求.

Android WebView 漏洞的利用、局限与终结

- - WooYun知识库
WebView.addJavascriptInterface方法导致的远程代码执行漏洞由来已久,与其相关的CVE有三个( CVE-2012-6636、 CVE-2013-4710、 CVE-2014-1939). 从乌云上暴露的 相关漏洞来看,常见的利用方法就是通过反射获得java.lang.Runtime的实例,然后执行一系列shell命令,从而达到读取联系人、发短信、读写SD卡文件、反弹shell、安装APK等目的,可以参考livers的文章 WebView中接口隐患与手机挂马利用.

有板有眼:Google如何利用Moto的专利来帮助Android开发商?

- Leo - 对牛乱弹琴 | Playin' with IT
问:Google如何利用收购Moto所获得的专利来帮助Android开发商. HTC、三星还会继续向微软支付专利费用吗. 答:Android现在面临的专利勒索,主要来自苹果、微软和甲骨文,除甲骨文直接起诉Google,其他厂商都是绕开Google向Android设备制造商下手. 这些设备商往往因缺乏专利储备,在专利诉讼或专利敲诈中被迫屈服,如微软向Android设备商索取每台设备5-15美元的专利授权费,这让Android的成本优势不复存在.

三星新Android应用利用AR技术,让你模拟Smart TV电视

- - Tech2IPO
三星早前联合韩国的Design Fever推出了名为 “AR simulator” 的手机应用程式. 用户可利用此应用程序来模拟及设置其Smart TV智能电视于家中的放置位置及体验 smart TV的最新功能. 三星 smart TV AR simulator提供今年 2012 年最新加入的 型号的官方资料.

利用ffmpeg和SDL实现一个跨android版本的音视频播放器

- - ITeye博客
绝对原创:转载请注明出处. 1:从 http://www.libsdl.org/tmp/下载SDL for android 版本(我下载的是 SDL-1.3.tar.gz ). 2:从 https://github.com/havlenapetr/FFMpeg下载 havlenapetr 的ffmpeg for android版本.

攻击者能利用开放WiFi向Android应用注入恶意程序

- - 博客园_新闻
安全研究人员称,旧版本 Android 系统发现的一个漏洞,可以让攻击者在终端用户智能手机上 执行恶意代码. 漏洞存在于一个广泛使用的应用程序接口 WebView 上, 开发者可以利用该接口在应用中嵌入 Web 内容. 研究人员发现,大多数使用该接口的程序没有正确使用安全链接下载 Web 内容.