腾讯安全应急响应中心近日发布文章,就近日发生的在 App Store 上架的网易云音乐等多个应用被注入 Xcode 第三方恶意代码事件进行全面剖析,预计至少 76 款苹果应用被病毒入侵,受影响用户超过一亿。以下为原文:
前言
这几天安全圈几乎被 XCodeGhost 事件刷屏,大家都非常关注,各安全团队都很给力,纷纷从不同角度分析了病毒行为、传播方式、影响面积甚至还人肉到了作者信息。拜读了所有网上公开或者半公开的分析报告后,我们认为,这还不是全部,所以我们来补充下完整的 XCodeGhost 事件。
由于行文仓促,难免有诸多错漏之处,还望同行批评指正。
事件溯源
事情要追溯到一周前。
9 月 12 日,我们在跟进一个 bug 时发现有 APP 在启动、退出时会通过网络向某个域名发送异常的加密流量,行为非常可疑,于是终端安全团队立即跟进,经过一个周末加班加点的分析和追查,我们基本还原了感染方式、病毒行为、影响面。
9 月 13 日,产品团队发布了新版本。同时考虑到事件影响面比较广,我们立即知会了 CNCERT,CNCERT 也马上采取了相关措施。所以从这个时间点开始,后续的大部分安全风险都得到了控制——可以看看这个时间点前后非法域名在全国的解析情况。
9 月 14 日,CNCERT 发布了这个事件的预警公告。我们也更新了移动 APP 安全检测系统“金刚”。
图 1 CNCERT 发布的预警公告
9 月 16 日,我们发现 AppStore 上的 TOP5000 应用有 76 款被感染,于是我们向苹果官方及大部分受影响的厂商同步了这一情况。
9 月 17 日,嗅觉敏锐的国外安全公司 paloalto 发现了这个问题,并发布第一版分析报告,阿里移动安全也发布了分析报告。
接下来的事情大家都知道了,XCodeGhost 事件迅速升温,成为行业热点,更多的安全团队和专家进行了深入分析,爆出了更多信息。
被遗漏的样本行为分析
1、在受感染的 APP 启动、后台、恢复、结束时上报信息至黑客控制的服务器
上报的信息包括:APP 版本、APP 名称、本地语言、iOS 版本、设备类型、国家码等设备信息,能精准的区分每一台 iOS 设备。
上报的域名是 icloud-analysis.com,同时我们还发现了攻击者的其他三个尚未使用的域名。
图 2 上传机器数据的恶意代码片段
2、黑客可以下发伪协议命令在受感染的 iPhone 中执行
黑客能够通过上报的信息区分每一台 iOS 设备,然后如同已经上线的肉鸡一般,随时、随地、给任何人下发伪协议指令,通过 iOS openURL 这个 API 来执行。
相信了解 iOS 开发的同学都知道 openURL 这个 API 的强大,黑客通过这个能力,不仅能够在受感染的 iPhone 中完成打开网页、发短信、打电话等常规手机行为,甚至还可以操作具备伪协议能力的大量第三方 APP。实际上,iPhone 上的 APP 如果被感染,完全可以理解为黑客已经基本控制了你的手机!
图 3 控制执行伪协议指令的恶意代码片段
3、黑客可以在受感染的 iPhone 中弹出内容由服务器控制的对话框窗口
和远程执行指令类似,黑客也可以远程控制弹出任何对话框窗口。至于用途,将机器硬件数据上报、远程执行伪协议命令、远程弹窗这几个关键词连起来,反正我们是能够通过这几个功能,用一点点社工和诱导的方式,在受感染的 iPhone 中安装企业证书 APP。装 APP 干什么?还记得几个月之前曝光的 Hacking Team 的 iPhone 非越狱远控(RCS)吗?
图 4 控制远程弹窗的恶意代码片段
4、远程控制模块协议存在漏洞,可被中间人攻击
在进行样本分析的同时,我们还发现这个恶意模块的网络协议加密存问题,可以被轻易暴力破解。我们尝试了中间人攻击,验证确实可以代替服务器下发伪协议指令到手机,成为这些肉鸡的新主人。
图 5 存在安全漏洞的协议解密代码片段
值得一提的是,通过追查我们发现植入的远程控制模块并不只一个版本。而现已公开的分析中,都未指出模块具备远程控制能力和自定义弹窗能力,而远程控制模块本身还存在漏洞可被中间人攻击,组合利用的威力可想而知。这个事件的危害其实被大大的低估了。
感染途径
分析过程中我们发现,异常流量 APP 都是大公司的知名产品,也是都是从 AppStore 下载并具有官方的数字签名,因此并不存在 APP 被恶意篡改的可能。随后我们把精力集中到开发人员和相关编译环境中。果然,接下来很快从开发人员的 xcode 中找到了答案。
我们发现开发人员使用的 xcode 路径 Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/下,存在一个名为 CoreServices.framework 的“系统组件”,而从苹果官方下载的 xcode 安装包,却不存在这些目录和“系统组件”。
图 6 被感染恶意代码的 xcode 包路径
原来开发人员的 xcode 安装包中,被别有用心的人植入了远程控制模块,通过修改 xcode 编译参数,将这个恶意模块自动的部署到任何通过 xcode 编译的苹果 APP(iOS/Mac)中。
水落石出了,罪魁祸首是开发人员从非苹果官方渠道下载 xcode 开发环境。
通过百度搜索“xcode”出来的页面,除了指向苹果 AppStore 的那几个链接,其余的都是通过各种 id(除了 coderfun,还有使用了很多 id,如 lmznet、jrl568 等)在各种开发社区、人气社区、下载站发帖,最终全链到了不同 id 的百度云盘上。为了验证,团队小伙伴们下载了近 20 个各版本的 xcode 安装包,发现居然无一例外的都被植入了恶意的 CoreServices.framework,可见投放这些帖子的黑客对 SEO 也有相当的了解。
进一步来看,攻击者做到的效果是只要是通过搜索引擎下载 xcode,都会下载到他们的 XCodeGHost,还真的做到了幽灵一样的存在。
影响面
在清楚危害和传播途径后,我们意识到在如此高级的攻击手法下,被感染的可能不只一个两个 APP,于是我们马上对 AppStore 上的 APP 进行检测。
最后我们发现 AppStore 下载量最高的 5000 个 APP 中有 76 款 APP 被 XCodeGhost 感染,其中不乏大公司的知名应用,也有不少金融类应用,还有诸多民生类应用。根据保守估计,受这次事件影响的用户数超过一亿。
后记
经过这一事件后,开发小伙伴们纷纷表示以后只敢下官方安装包,还要 MD5 和 SHA1 双校验。而这个事件本身所带来的思考,远不止改变不安全的下载习惯这么简单。
经过这两年若干次攻击手法的洗礼后,我们更加清醒的意识到,黑产从业者早已不是单兵作战的脚本小子,而是能力全面的黑客团队。
总结来看,移动互联网安全之路任重道远。当然,这里的危机也是安全行业的机遇。