黑客是如何远程攻破你的Android手机的

标签: 未分类 | 发表时间:2014-08-21 09:51 | 作者:techug
出处:http://www.vaikan.com

“你走进一个咖啡店坐下来。等咖啡的时候,你拿出你的智能手机开始玩一款你前些天下载的游戏。接着,你继续工作并且在电梯里收邮件。在你不知情下,有攻击者获取了公司网络的地址并且不断地感染你所有同事的智能手机。

等下, 什么?

我们在Bromium实验室博客上不会谈论Android太多。但是不时地我们喜欢修修补补。近来,我的同事Thomas Coudray 和我探索了下Android远程代码执行的易损性,想弄明白易损性在现实应用中是多大的问题。

尽管权限提升技术在Android上很普遍(并形成了“root”设备的惯例),但远程代码执行是一种罕见且危险得多的漏洞。它允许攻击者不经授权就在用户设备上执行特定代码。这个Bug特别另人关注,因为,即使在它被修复后过了18个月,在安装了所有补丁的最新型的Android设备上仍可被利用。我们想看看,如果这是真的,利用此漏洞需要付出多少努力。我们发现上述场景完全可能发生。

我们用了两种不同的方法研究此Bug。首先,我们尝试在类似公共WIFI的环境中利用它,也就是你可能在咖啡店中遇到到环境。我们启动了一些Android设备和廉价的网络设备,开始攻击。第二步是估计普通用户有多大的可能遇到这种最坏的情形。为此,我们使用了统计分析技术,看看有多少有漏洞的App和设备。

在开始细节之前,先了解一下此Bug的背景知识:

背景知识

它始于2012年的Javascript在addJavascriptInterface API中的远程代码执行Bug,CVE-2012-6636(详情见 此处此处)。此Bug允许Javascript代码获得访问系统的更大权限,这并非开发者的本意。至此,如此糟糕。 MWR的研究人员在几个月后的 研究结果显示有大量App使用了广告供应商的框架程序,而这些框架程序通常受此Bug影响而且还在运行时下载Javascript代码。

这些因素结合起来意味着,大量的App采用不安全的方式从互联网下载Javascript代码,因此恶意攻击者劫持下载并发动远程代码执行的攻击并不难。

还没修复?

Android 4.2修复了这个潜在的javascript漏洞。不幸的是,由于向后兼容的原因,修复只意味着在特定的场景中关闭了漏洞。现实中的Android版本碎片化和Android上的广告商业模式意味着这些场景并不常见。我们检查了Google Play上的100,000个APK文件,发现大约有12%即使运行在最新的Android设备上仍然有漏洞风险。

Breakdown of APKs using addJavascriptInterface()

APK分析结果:一半没有漏洞风险,因为它们的目标SDK版本大于或等于17;剩下的31%没有使用存在漏洞的API;7%由于APK混淆或分析出错而没有分析。

另外,不管此漏洞是否被修复, 超过50%的Android设备仍旧使用着低于4.2的版本。对于这些设备,没有修复程序,它们依旧存在漏洞风险。

技术点

为了修复成功,调用addJavascriptInterface的程序必须编译为API 17及以上,也就是说你的目标Android版本必须是4.2及以后的。为了兼容更多的设备,App和框架程序经常用尽可能低的API版本编译。重点就是即使运行在打了补丁程序的Android 4.2, 4.3或4.4的设备上,App仍存在漏洞攻击风险。

广告商业模式在Android中很流行:也就是App免费,开发者通过向用户展示广告而获得收入。在Android中,有超过50个不同的广告框架程序,这使得开发者很容易实现广告功能,事实上他们经常在App中使用不只一个广告框架程序。有的App发现使用了20个之多(见 此处的图4)。这些框架程序大都有这种行为——当app第一次运行时,它们通过HTTP下载javascript库。这也就是说App通常不安全地下载了未验证的javascript代码,而这些代码运行在可执行任意代码的环境中。

代码的执行意味着对设备的无限制访问

迄今为止,这个漏洞仅仅允许一个攻击者在一个安卓应用环境中去执行代码。这很糟糕,但是仍然被安卓权限系统限制在单独的应用中去访问数据。然而,一旦一个攻击者有了一个在系统中的立足点,这就类似于他们可能获得额外的特权。以futex漏洞为例(CVE-2014-3153),它影响当前使用的每个Linux内核版本,包括安卓系统以及最近第一次被成功 root的Galaxy S5。尽管他们不是等价的,但我们还是应该养成“远程代码执行”与“root权限”在严重等级上等价的习惯,因为迟早,一个下定决心的黑客将可能从一个地方蹦到另一个地方,获取设备的完全控制权。

真实世界中的漏洞利用

我们谈了如何利用漏洞和漏洞为什么如此严重。现在我们撇开分析,验证一下漏洞到底有多容易被利用。

五月中旬,我们从Play Store随机下载了102,189个免费的app,并通过统计分析发现其中的12.8%存在潜在的漏洞风险,正如上图所示。这些APK同时使用了过低的目标API版本和addJavascriptInterface API。这些APK调用addJavascriptInterface时的漏洞 实上可以通过中间人攻击的方式利用,当从互联网不安全地下载的javascript脚本时可以发起中间人攻击。

我们会测试通过中间人攻击劫持非安全的javascript下载,并注入一些javascript脚本来探查addJavascriptInterface漏洞。

测试app的漏洞

我们设置了一个充当透明web代理中间人的wifi无线接入点(AP)。它被设置为对任何接入此AP的设备在通过HTTP请求任何脚本时都注入恶意代码。AP设置了密码,以防有人误用,但本方法可以用到公开访问的AP。即使当AP不受控制时,DNS毒化或ARP缓存欺骗等技术也可以用来实现中间人代理。或者可以安装一个模仿成合法AP的假AP。也就是说,有各种方法实现中间人代理,使用wifi的任何人都将通过我们的代理访问网络。

Man in the middle setup

javascript的动态性意味着我们不需要检测特定的应用程序或广告框架程序以作为目标。当运行时,恶意代码扫描整个javascript命名空间中的对象,查找不正确地使用了addJavascriptInterface API的对象,然后对每个进行漏洞测试。如果没有找到漏洞,它就静悄悄地退出,不影响app的运行。如果成功了,它将运行一个shell命令启动计算器app(这是漏洞揭露中的一个传统,表明你完成了代码运行——如何你可以启动计算器,你就证明了可以执行任何代码)。

注入的 javascript片断

function findVulnerableObject() {
   for (var prop in window) {
       try {
           // If getClass() doesn’t throw, the object is vulnerable
           window[prop].getClass();
           return window[prop];
       }
       catch(err) { }
   }
   return null;
}

我设置好AP后,从13,119个标明有潜在漏洞的app中随机选了一些,把它们安装到接入了AP的一台Nexus 5(运行4.4.3)和一台三星XE700t(运行AOSP 4.2的x86平板)。我们只不过是启动每个App,做些简单的交互操作,就成功地在超过半数的应用中触发了远程代码执行,它们加载了通过中间人代理注入的恶意代码。

为了好玩,我们把注入到一个app中javascript代码反复修改,直到显示Bromium的标志替换了原有广告。

被扰乱而显示了Bromium标志的app的UI截屏。

全是广告惹得祸

通过查看TCP/IP包的轨迹,很快发现广告框架程序就是联合使用了addJavascriptInterface和非安全HTTP下载的罪魁祸首。在我们调查的框架程序中没有一个使用HTTPS,也就意味着任何使用这些框架程序的app在非安全地下载javascript时也易受到攻击。以往的研究显示有17%的app虽然使用了HTTPS,但 用法不当,但这是另一回事了。

我们认真地检查了一些app,看看使用用了哪些广告框架。AdMob是用得最多的(通常也是更新最频繁的),但我们发现用到的大量框架仍然在不安全地使用addJavascriptInterface。在检查的app中,有超过80%的非付费app包含了至少一款广告框架。总体上讲,在识别的2140个app中出现了4190个广告框架。

问题有多严重?

Google在Play Store上公布了所有app的大致下载量。仅就我们 手工确认了存在漏洞的小部分用例,就有超过1.5亿的下载量。这并不是说就保证会有150,000,000部有漏洞的设备,因为一台设备可能安装多个不同的有漏洞的应用。但考虑到我们在分析中发现的比例——10%的app有潜在的风险,其中有50%的有风险的app被实地测试可以被攻击——这就存在 非常多有漏洞的设备。

而且,别忘了有57%的Android设备运行在低于4.2的版本上。所以即使明天所有有漏洞的app和框架打上了基于4.2的补丁,仍然有超过一半的Android设备不能修复这个漏洞。

一旦你实现了远程代码的执行,结束之前在咖啡店所描述的灾难情形,不是什么大的进步。初始化一个匹配的root权限(不幸的是,相当一部分在安卓平台上),一个被损害的设备会变成某种中间人,它随后会进入任何网络。因此,攻击开始传播,举例来说,在自带移动设备的世界里,共同的wifi网络是那样地受欢迎。

合并设备分析器(Device Analyser)的数据

设备分析器(Device Analyser)是另外一个用于统计安卓设备的(数据)来源。其中的一项功能就是它追踪用户启动不同的应用的频繁程度。他们用足够地耐心去相互参照潜在缺陷应用的列表上的数据,给出了下面的结果:

每天每用户打开潜在缺陷应用的平均数量

过去一年左右的时间,设备分析器(Device Analyser)的数据显示设备的使用者们每天平均打开0.4-0.5个潜在漏洞的应用。或者换言之,平均一周内就有几次收到(漏洞)攻击。我们不能假设应用的版本比我们分析过存在漏洞的版本新,因此,当我们的示例数据已不再是最新版本,与图形对应也就表现为急剧下降。如果我们对最近的APK版本重新进行我们的分析,我们很有可能看到它仍在0.4分。DA( 设备分析器: Device Analyser)的数据是一个相当小的样本,让它去引导更多地关于安卓设备的结论,在整体上是困难的。

结论

我们发现,通过使用相对简单的中间人代理技术,无需特定的应用程序或设备可以远程运行有危害的应用程序,即使 Android设备安装了完全补丁。使用静态分析我们发现,相当大比例的应用很可能仍然脆弱,我们证实,通过随机测试超过一半的应用确实缺乏抵抗力。

因此,我们建议当连接到一个不可信的wi-fi无线网络时不要使用任何Android应用程序显示广告。

我们感谢Evozi提供他们的APK库,和剑桥大学的设备 分析 数据。

相关 [黑客 android 手机] 推荐:

黑客是如何远程攻破你的Android手机的

- - 外刊IT评论
等咖啡的时候,你拿出你的智能手机开始玩一款你前些天下载的游戏. 接着,你继续工作并且在电梯里收邮件. 在你不知情下,有攻击者获取了公司网络的地址并且不断地感染你所有同事的智能手机. 我们在Bromium实验室博客上不会谈论Android太多. 近来,我的同事Thomas Coudray 和我探索了下Android远程代码执行的易损性,想弄明白易损性在现实应用中是多大的问题.

黑客开发iEmu欲使Android等模拟运行iOS应用

- zhipeng - cnBeta.COM
据国外媒体报道,一群早期的iPhone黑客目前正在打造一个名为iEmu的项目,这个项目致力于使Linux、Windows、Mac和Android可以模拟运行iOS应用. 据悉,这个项目建立在开源模拟器QEMU的基础之上,项目负责人,同时也是参与早期iPhone越狱破解的克里斯・韦德(ChrisWade)表示,希望能完全模拟iOS应用在iPad第一代和iPhone4A4CPU上的运行状态.

在Android手机上运行Ubuntu

- Alex Yu - Solidot
51开源社区 写道 "HTC Desire手机在经过简单的破解步骤后,已经可以相对稳定地运行以桌面应用为主的Linux操作系统Ubuntu. 破解方法是由一位论坛ID叫“Bergfex”的开发者发布的. 整个破解过程十分简便,仅需要在指定的文件夹——如SD卡的根目录和电脑的某个位置——中加载相应的zip文件,然后将手机设置成bootloader模式下加载,之后再将手机和电脑连接后重启即可.

HTC宣布将不锁定Android手机

- Ra白菜 - Solidot
HTC首席执行官周永明(Peter Chou)宣布,该公司未来的Android智能手机将不再锁定bootloader. HTC去年12月发布了Android 2.2 for Wildfire,更新了bootloader,不允许用户再修改固件. 由于HTC不太可能再发布新的更新,这意味着Wildfire用户无法获得新系统带来的新功能,或者安装新的自制固件,如CM7.

中国Android手机遭病毒攻击

- Benny Wen - Solidot
路透社报道,安全研究人员周四称,名为Geinimi的病毒正通过中国Android第三方应用商店传播,是第一种有类似僵尸网络功能的Android恶意程序. 安全公司Lookout Mobile Security估计,被该病毒感染的手机数量在数万到数十万部之间. 他们目前只在中国Android第三方应用商店中发现了含有该病毒的软件,而官方的Android电子市场似乎是安全的.

Cobra Tag + Android 手机帮你找东西

- 可可 - 谷安——谷奥Android专题站
钥匙或什么东西放到哪儿搞忘了. Cobra Tag 可以帮你找到. Cobra Tag 是一种钥匙挂饰,你可以将它挂到你的钥匙上或放到钱包中,而通过专用的(Android)智能手机应用,当挂饰在信号范围内时,就会发出蜂鸣声、震动等来提示你,当这些挂饰离开你一定的范围时手机应用也会提醒器(对防盗来说也有一定的功效).

超实用Android手机指令大全

- MZ - 乐淘吧
【超实用Android手机指令大全】快速设定手机,快速查看手机,全部都告诉你,Android手机用户一定要保存的Android手机指令大全. 我用android手机一定是好男人. [博海拾贝]有时候,最痛苦的不是失去,而是得到以后不快乐. [博海拾贝]与其诅咒黑暗 不如点起一根蜡烛.  » 非特殊声明本站所有文章,图片,视频全部来自网络,如有侵权>,请通知本站.

Android 手机的桌面通知

- liusp - I, KDE
Android手机有一个项目,可以将Android手机的通知推送到电脑上. 这个项目本身其实是用java外加swt完成的,在KDE的桌面中需要配置成使用libnotify作为通知机制才能在桌面看到. 本身可以通过蓝牙或者网络发送通知. Chakra和Archlinux需要分别在CCR或者AUR安装android-notifier-desktop,然后启动这个程序.

Pantech Android 手机使用 DDR2 内存

- David Z - Engadget 中国版
Pantech 在港台市场没有太高的知名度,手机也很难买到,但他们推出的手机一直以来在韩国也有不错的销量,加上话题性的规格,未来若大力发展韩国以外的市场,销量应该不会太差. Pantech 日前发布全球第一部使用 DDR2 内存的 Android 手机,名为 Vega Xperss. Vega Xpress 配备 4寸 800X480 LCD 屏幕、Android 2.2 系统、WIFI 802.11n、500万像素自动对焦镜头、1500mAh 电池.

手机QQ2011(Android)正式版发布

- SINCERE - cnBeta.COM
QQ2011(Android)正式版 Build0205  更新说明.     1.加、退群功能完善和优化.     2.搜索界面展示优化并加入群搜索结果.     3.新增部分超级QQ功能.     4.修复添加好友不成功、长昵称显示不全等BUG.