写点什么

上千苹果 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:003206
用户头像

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

关注

评论

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

观测云产品更新 | 监控、Obsy AI 智能体、管理、场景、LLM 监测等

观测云

产品迭代

YashanDB数据库的性能指标:评估与监控方法

数据库砖家

YashanDB数据库的应用开发环境搭建指南

数据库砖家

为快递包裹提速——选车就选中国重汽汕德卡G7H,营运无短板!

科技经济

嘿嘿,一个简单ElasticSearch小实现

BugShare

Docker 大数据 elasticsearch Vue springboot

舆情监测软件如何计算ROI?这份价值评估模型请收好

沃观Wovision

舆情监测 舆情监测软件 舆情监测平台

YashanDB数据库的行业应用价值深度探讨

数据库砖家

YashanDB数据库与物联网的融合前景分析

数据库砖家

闲鱼商品详情API秘籍!轻松获取SKU属性数据

Datafox(数据狐)

闲鱼API 闲鱼商品数据采集 闲鱼商品详情API

MyEMS:双碳目标下开源能源管理的创新实践者与全场景价值赋能者

开源能源管理系统

开源 开源能源管理系统

数据可视化的逻辑:舆情监测网站如何将复杂数据转化为决策洞察

沃观Wovision

舆情监测 海外舆情监测 舆情监测网站

YashanDB数据库的用户权限与安全管理指南

数据库砖家

防止数据丢失:YashanDB数据库的备份与恢复方法

数据库砖家

「腾讯云NoSQL」技术之向量数据库篇:腾讯云向量数据库如何实现召回不变,成本减半?

腾讯云数据库

数据库 腾讯云 索引 向量数据库 腾讯云NoSQL

YashanDB数据库中的数据建模:最佳实践

数据库砖家

关键指标:如何衡量YashanDB数据库的性能?

数据库砖家

深入解析YashanDB数据库的调试与监控工具

数据库砖家

工程师变身AI“指挥者”,吉利与阿里云的软件开发变革实验

科技汇

Flink 的 RocksDB 状态后端在 vivo 的实践

vivo互联网技术

大数据 推荐系统 RocksDB 内存泄漏 Apache Flink

全生命周期能源管控:MyEMS 如何重塑企业用能管理逻辑

开源能源管理系统

开源 能源管理系统

国家数据局优秀案例解读——数据堂“教育高质量数据集构建及应用”

数据堂

人工智能 数据标注 多模态数据 AI教育 高质量数据集

MyEMS:数据驱动的全生命周期能源管控系统,开启智能赋能双碳新时代

开源能源管理系统

开源 能源管理系统

临析智镜 ClinLens AI 亮相 2025 DIA 临床试验数据大会,破解真实世界数据应用困局

ModelWhale

人工智能 大模型 临床研究 医学 医学数据

从数据到决策:海外舆情监测全托管服务

沃观Wovision

海外舆情 海外舆情监测 舆情监测平台 舆情监测服务

YashanDB数据库的用户体验:提升用户满意度的策略

数据库砖家

YashanDB数据库的优化技巧:提升性能的实用建议

数据库砖家

YashanDB数据库的最佳实践:成功企业的经验分享

数据库砖家

YashanDB数据库与微服务架构的完美结合

数据库砖家

了解YashanDB数据库的备份策略与实施步骤

数据库砖家

安全第一:如何确保YashanDB数据库的数据保护?

数据库砖家

开发者必读:YashanDB数据库的核心功能概览

数据库砖家

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