BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年11月16日. 估计阅读时间: 8 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT