写点什么

上千苹果 App 存在后门,移动设备可被完全控制

  • 2015-11-15
  • 本文字数:2194 字

    阅读完需:约 7 分钟

XcodeGhost“病毒门”之后,美国知名网络安全公司 FireEye 近日指出,苹果系统中牵涉到 2846 个应用程序的一个广告库存有潜在的后门漏洞。该库的若干版本允许对移动设备中敏感数据和设备功能的非法访问。

FireEye 的相关团队表示,该库的有关信息指出,其属于 mobiSage SDK 的一个版本。而该团队进一步的研究发现,从 5.3.3 到 6.4.4,共有 17 个版本的广告库存在后门漏洞。通过从远程服务器加载 JavaScript 代码,这些后门可以被完全控制,然后在用户的 iOS 设备中执行以下操作:

  • 抓取音频和截图
  • 监控和上传设备位置
  • 读取 / 删除 / 创建和修改 App 数据容器中的文件
  • 读取 / 写入和重置 App 的关键链
  • 把加密后的数据发送到远程服务器
  • 打开 URL 机制来识别和启动设备上的其他应用
  • 诱导用户点击“安装”按钮来安装非官方应用

然而,在 adSage 发布的最新版 mobiSage SDK v7.0.5 中,这些后门已经被移除。由此,FireEye 怀疑,这些存在后门的广告库是否由 adSage 故意设计或者由其中的第三方库 / 代码所引起。

截止到 11 月 4 日,共有 2846 个应用被发现包含存在潜在后门的 mobiSage SDK 的相应版本。而且,FireEye 共监测到 900 次可以加载 JavaScript 代码从而控制后门的连接 adSage 服务器请求。尽管还没有发现服务器试图发送恶意命令来激活后门的若干功能,这些受影响的应用会周期性的联系服务器来检查新的 JavaScript 代码。一不小心,恶意的 JavaScript 代码就可以被下载并执行,从而触发这些潜在的后门。

具体而言,受影响的 mobiSage 库包含了两个关键性的组件——采用 Objective-C 实现的 msageCore 和采用 JavaScript 实现的 msageJS。前者主要实现了潜在后门的底层功能,并通过一个 WebView 向 msageJS 暴露了一个接口;而后者主要提供了高层执行逻辑,并通过 msageCore 的接口触发潜在的后门。两个组件分别拥有各自的版本号。

接下来,本文首先详细介绍 msageCore 的通信通道和高风险接口。然后,文章再详细分析 msageJS 如何能够被启动、升级,并触发后门。

msageCore 中的后门

通信通道

msageCore 实现了一个利用广告库的 WebView 与 msageJS 通信的通用框架。该框架利用adsagejs://cmd&parameter格式的 URL 来传递命令和参数。通过下图中重新构造出的代码片段可以看出,msageCore 正是通过从 JavaScript 的上下文中提取命令和参数,并将其放置到命令队列中。

为了处理命令队列中的条目,msageCore 又会把命令分别传递给对应的 Objective-C 类和方法。

存在风险的接口

每一个被调度的命令最终都会到达 msageCore 中的一个 Objective-C 的类。下表列出了 msageCore 的部分类和他们所暴露出的接口。

msageCore 的类名 接口 MSageCoreUIManagerPlugin - captureAudio:
- captureImage:
- openMail:
- openSMS:
- openApp:
- openInAppStore:
- openInAppStore:
- openCamera:
- openImagePicker:
- … MSageCoreLocation - start:
- stop:
- setTimer:
- returnLocationInfo:webViewId:
- … MSageCorePluginFileModule - createDir
- deleteDir:
- deleteFile:
- createFile:
- getFileContent:
- … MSageCoreKeyChain - writeKeyValue:
- readValueByKey:
- resetValueByKey: MSageCorePluginNetWork - sendHttpGet:
- sendHttpPost:
- sendHttpUpload:
- … MSageCoreEncryptPlugin

  • MD5Encrypt:
    - SHA1Encrypt:
    - AESEncrypt:
    - AESDecrypt:
    - DESEncrypt:
    - DESDecrypt:
    - XOREncrypt:
    - XORDecrypt:
    - RC4Encrypt:
    - RC4Decrypt
    - …从以上表格可以看出,这些接口包含了很多上文中提到的能力(抓取音频和截图等)。而且,通过这些接口搜集到的任何数据都可以采用被加密,并上传到远程服务器。

除了这些接口,该广告库还包含了推荐和安装非官方应用的逻辑。这些应用程序通过调用某些版本 iOS 中的应有 API 而引入一些额外的风险。其详细信息可以参看 FireEye 相关的分析

msageJS 中的远程控制

msageJS 中包含了与远程服务器及 msageCore 通信的 JavaScript 代码。其主要代码文件(夹)包含cfg.jsindex.htmllib(文件夹)sdkjs.js。其中,sdkjs.js 包含了 adsage 的封装对象和执行命令的 JavaScript 的接口。该接口详细定义为:
adsage.exec(className, methodName, argsList, onSuccess, onFailure);

其中,classNamemethodName分别对应了 msageCore 中类和方法;argsList可以是一个列表或者字典;onSuccessonFailure为函数的回调参数。例如,利用该接口抓取音频的调用方式为:

复制代码
adsage.exec("MSageCoreUIManager", "captureAudio", ["Hey", 10, 40], onSuccess, onFailure);

需要特别的注意的是,msageJS 的代码并不是以明文文件的方式存储的。它是经过压缩和 Base64 编码后,放置在了广告库二进制代码的数据段。应用程序启动后,再将 msageJS 解码出来,并通过 index.html 来启动 msageJS。之后,msageJS 会发送一个 POST 请求到hxxp://entry.adsage.com/d/,来检查更新。如下图所示,服务器端会响应最新版 msageJS 的相关信息,包括 URL 下载地址.

目前,FireEye 已经在其 Network Security(NX) Mobile Threat Prevention(MTP)产品中内置了探测机制。用户可以直接利用其来势被受影响的应用和网络活动。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-15 18:003245
用户头像

发布了 268 篇内容, 共 137.9 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

吉利控股集团与百度深化战略合作

百度开发者中心

在一条DML语句中插入/更新/删除/获取几百万行数据,你会特别注意什么?

KunlunBase昆仑数据库

分布式数据库

如何使用一个有安全性问题的隐私计算技术?

易观分析

隐私计算

ARP欺骗攻击

喀拉峻

网络安全

Meetup预告|面向云原生的架构及演进

云智慧AIOps社区

开源 云原生 AIOPS 智能运维

昆仑分布式数据库独特的变量读写功能介绍

KunlunBase昆仑数据库

数据库 读写分离

如何为你的企业创建自助服务知识库

小炮

阿里巴巴如何提升构建的效率 | 阿里巴巴DevOps实践指南

阿里云云效

阿里巴巴 阿里云 CI/CD 持续交付 构建工具

DSTC10 赛道最佳论文揭晓!文心 PLATO 再获殊荣

百度开发者中心

【OpenMLDB Monthly Meeting】2022.2 月会议纪要

第四范式开发者社区

人工智能 数据库 开源 Meetup 特征平台

开发者说丨如何从零开始构建一个轻量级应用

华为云开发者联盟

Vue 低代码 页面 应用 AppCube

国内领先的云软件厂商安超云加入,为龙蜥社区注入新动能

OpenAnolis小助手

开源 操作系统 云厂商 国产

华为SmartCare和AUTIN品牌升级:助力运营商走出5G发展迷宫

脑极体

见证中国云势力崛起!博睿数据实力入围2021~2022 Cloud 100 榜单

博睿数据

RTC 音频质量评价和保障

网易云信

WebRTC

在线TOML转JSON工具

入门小站

工具

【Kali】中密码暴力破解工具hydra的使用

学神来啦

网络安全 字典 kali kali Linux

星汉未来成为 FinOps 产业标准生态联盟首批会员

星汉未来

云原生 开源社区 成本优化 IT运维

J2PaaS低代码平台,如何赋能开发者,助力企业数字化?

J2PaaS低代码平台

开发者 低代码 企业数字化 地代码平台 J2PaaS

【技术学习】一次Node.js站点渗透

H

node.js 网络安全 渗透测试

网络安全之文件包含漏洞总结

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

昆仑分布式数据库Sequence功能及其实现机制

KunlunBase昆仑数据库

分布式数据库

多任务学习模型之DBMTL介绍与实现

阿里云大数据AI技术

机器学习 深度学习 数据模型 多任务学习

恒源云(GpuShare)_表序编码器的联合实体和关系提取(论文浅谈)

恒源云

自然语言处理 机器学习 深度学习

以领先NLP技术构建AI数字疗法体系,聆心智能致力于解开更多“心结”

硬科技星球

网易X工行:云原生日志系统 Loggie 正式开源!

网易数帆

开源 云原生 日志 Filebeat Loggie

知识管理——企业数字化转型的新挑战

小炮

培训第二弹!全国大学生智能汽车竞赛百度竞速组预告

百度开发者中心

31 家企业入选阿里云首期云原生加速器,共建云原生行业新生态

阿里巴巴中间件

云计算 阿里云 云原生 加速器 生态伙伴

Javascript实现上传图片并实现预览图片功能的三种方法

deal

3月日更 3月程序媛福利 3月月更

亿级月活沙盒平台《迷你世界》背后的黑科技

华为云数据库小助手

GaussDB DDM 华为云数据库

上千苹果App存在后门,移动设备可被完全控制_语言 & 开发_张天雷_InfoQ精选文章