Xcode 非官方版本恶意代码污染事件(XcodeGhost)
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述安天实验室 ,Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述安天实
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
安天实验室
Xcode 非官方版本恶意代码污染事件(XcodeGhost )
的分析与综述
安天实验室
首次发布时间:2015年09月20日22时00分
本版本更新时间:2015年09月23日17时40分
,摘要
Xcode 是由苹果公司发布的运行在操作系统Mac OS X上的集成开发工具(IDE ),是开发OS X 和 iOS 应用程序的最主流工具。
2015年9月14日起,一例Xcode 非官方版本恶意代码污染事件逐步被关注,并成为社会热点事件。多数分析者将这一事件称为“XcodeGhost ”。攻击者通过对Xcode 进行篡改,加入恶意模块,并进行各种传播活动,使大量开发者使用被污染过的版本,建立开发环境。经过被污染过的Xcode 版本编译出的App 程序,将被植入恶意逻辑,其中包括向攻击者注册的域名回传若干信息,并可能导致弹窗攻击和被远程控制的风险。
本事件由腾讯相关安全团队发现,并上报国家互联网应急中心,国家互联网应急中心发出了公开预警,此后PaolAlto Network、360、盘古、阿里、i 春秋等安全厂商和团队机构,对事件进行了大量跟进分析、处理解读。目前,已有分析团队发现著名的游戏开发工具Unity 3D也被同一作者进行了地下供应链污染,因此会影响更多的操作系统平台。截止到本版本报告发布,尚未发现“XcodeGhost ”对其他开发环境的影响,但安天分析小组基于JA V A 代码和Native 代码的开发特点,同样发出了相关风险预警。
截止到2015年9月20日,各方已经累计发现当前已确认共692种(如按版本号计算为858个)App 曾受到污染,受影响的厂商中包括了微信、滴滴、网易云音乐等著名应用。
从确定性的行为来看,尽管有些人认为这一恶意代码窃取的信息“价值有限”,但从其感染面积、感染数量和可能带来的衍生风险来看,其可能是移动安全史上最为严重的恶意代码感染事件,目前来看唯有此前臭名昭著的Carrier IQ能与之比肩。但与Carrier IQ具有强力的“官方”推广方不同,这次事件是采用了非官方供应链(工具链)污染的方式,其反应出了我国互联网厂商研发“野蛮生长”,安全意识低下的现状。长期以来,业界从供应链角度对安全的全景审视并不足够,但供应链上的各个环节,都有可能影响到最终产品和最终使用场景的安全性。在这个维度上,开发工具、固件、外设等“非核心环节”的安全风险,并不低于操作系统,而利用其攻击的难度可能更低。因此仅关注供应链的基础和核心环节是不够的,而同时,我们必须高度面对现实,深刻分析长期困扰我国信息系统安全的地下供应链问题,并进行有效地综合治理。
,目 录
1
2 背景 . ............................................................................................................................................................................. 1 作用机理与影响 .......................................................................................................................................................... 1
2.1 作用机理 ............................................................................................................................................................. 2
2.1.1
2.1.2
2.1.3
2.1.4
2.2
3 样本信息 ..................................................................................................................................................... 2 感染方式 ..................................................................................................................................................... 4 危害分析 ..................................................................................................................................................... 7 中间人利用 ............................................................................................................................................... 11 影响面分析 ....................................................................................................................................................... 12 扩散、组织分析 ........................................................................................................................................................ 13
3.1
3.2
3.3 传播分析 ........................................................................................................................................................... 13 攻击者情况猜测 ............................................................................................................................................... 16 开发环节的安全问题分析................................................................................................................................ 17
3.3.1 Mac&iOS app签名方式 ............................................................................................................................... 17
3.3.2 Mac 上官方签名工具codesign 验证App 方式 ........................................................................................... 17
3.3.3 官方推荐Xcode 验证工具spclt ................................................................................................................... 19
4 Android 风险预警 . .................................................................................................................................................... 20
4.1
4.2
4.3
5 预警背景 ........................................................................................................................................................... 20 JA VA 代码开发生产环境的风险 ..................................................................................................................... 22 Native 代码开发生产环境的风险 .................................................................................................................... 23 全景的安全视野才能减少盲点 ................................................................................................................................ 23
外一篇:我们的检讨 ........................................................................................................................................................ 25
附录一:参考资料 ............................................................................................................................................................ 26
附录二:事件时间链与相关链接..................................................................................................................................... 26 附录三:受影响的App 应用 .............................................................................................................. 错误! 未定义书签。
附录四:报告版本演进 .................................................................................................................................................... 31
附录五:关于安天 ............................................................................................................................................................ 32
,Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
1 背景
Xcode 是由苹果公司开发的运行在操作系统Mac OS X上的集成开发工具(IDE ),是开发OS X 和 iOS 应用程序的最快捷的方式,其具有统一的用户界面设计,同时编码、测试、调试都在一个简单的窗口内完成。[1]
自2015年9月14日起,一例Xcode 非官方供应链污染事件在国家互联网应急中心发布预警后,被广泛关注,多数分析者将这一事件称之为“XcodeGhost ”。攻击者通过对Xcode 进行篡改,加入恶意模块,进行各种传播活动,使大量开发者获取到相关上述版本,建立开发环境,此时经过被污染过的Xcode 版本编译出的App 程序,将被植入恶意逻辑,其中包括向攻击者注册的域名回传若干信息,并可能导致弹窗攻击和被远程控制的风险。
截止到2015年9月20日,各方已经累计发现共692种(如按版本号计算为858个)App 确认受到感染。同时,有分析团队认为,相同的攻击者或团队可能已经对安卓开发平台采用同样的思路进行了攻击尝试。从其感染面积、感染数量和可能带来的衍生风险来看,其可能是移动安全史上最为严重的恶意代码感染事件之一,从影响范围上来看能与之比肩的仅有此前臭名昭著的Carrier IQ[2]。
目前,Unity 3D也被发现由同一作者采取攻击Xcode 手法类似的思路进行了地下供应链污染。
鉴于此事态的严重性,安天安全研究与应急处理中心(Antiy CERT)与安天移动安全公司(A VL Team)组成联合分析小组,结合自身分析进展与兄弟安全团队的分析成果,形成此报告。
2 作用机理与影响
安天根据Xcode 非官方供应链污染事件的相关信息形成了图2-1,其整体污染路径为官方Xcode 被攻击者植入恶意代码后,由攻击者上传到百度云网盘等网络位置,再通过论坛传播等方式广播下载地址,导致被App 开发者获取,同时对于攻击者是否利用下载工具通过下载重定向方式扩大散布,也有较多猜测。有多个互联网公司采用被污染过的Xcode 开发编译出了被污染的App ,并将其提交至苹果App Store,且通过了苹果的安全审核,在用户获取相关App 进行安装后,相关应用会被感染并回传信息至攻击者指定域名。 ©安天版权所有,欢迎无损转载 第1页
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
图 2-1 Xcode 非官方供应链污染事件示意图
2.1 作用机理
2.1.1 样本信息
● 文件名:CoreService
● 位于Xcode 位置:(iOS 、iOS 模拟器、MacOSX 三个平台)
./Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
./Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
./Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
● 样本形态:库文件(iOS 、iOS 模拟器、MacOSX
三个平台)
©安天版权所有,欢迎无损转载 第2页
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
表 2-1样本信息
©安天版权所有,欢迎无损转载 第3页
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
2.1.2 感染方式
2.1.2.1 攻击机理
这次攻击本质上是通过攻击Xcode 间接攻击了自动化构建和编译环境,目前开发者不论是使用Xcode Server 还是基于第三方工具或自研发工具都需要基于Xcode 。而这次如此大面积的国内产品中招,则只能反映大量产品研发团队在产品开发和构建环境的维护以及安全意识上都呈现出比较大的问题。
图 2-2基于Xcode 的开发流程(第三方图片)[4]
1. 恶意插件植入Xcode 方式
也许出于对Xcode 稳定性和植入方便性的考虑,恶意代码实际并没有对Xcode 工具进行太多修改,主要是添加了如下文件:
● 针对 iOS
✧ Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Framework
s/CoreServices.framework/CoreService
✧ Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/PrivateFram
eworks/IDEBundleInjection.framework
● 针对 iOS 模拟器
✧ Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Fram
eworks/CoreServices.framework/CoreService
©安天版权所有,欢迎无损转载 第4页
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
✧ Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Priva
teFrameworks/IDEBundleInjection.framework
● 针对 Mac OS X
✧ Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/Frameworks
/CoreServices.framework/CoreService
✧ Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/PrivateFram
eworks/IDEBundleInjection.framework
以及修改了配置文件:
● Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/P
lug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
2. 恶意插件植入App 方式
● 被攻击的开发环节:编译App 项目部分;
● 恶意代码植入机理:通过修改Xcode 配置文件,导致编译Linking 时程序强制加载恶意库文件; ● 修改的配置文件:
Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
● 添加的语句:“-force_load $(PLATFORM_DEVELOPER_SDK_DIR)/Library/Frameworks/CoreService
s.framework/CoreService”
图 2-3受感染Xcode 与官方版本配置文件对比
2.1.2.2 恶意代码运行时间
● 恶意代码植入位置:UIWindow (didFinishLaunchingWithOptions);
● 恶意代码启动时间:App 启动后,开启准备展示第一个页面时恶意代码已经执行了;
● iOS 应用启动流程:从代码执行流程来看,图2-4中每一步都可以作为恶意代码植入点,且其框架
基本都是由模板自动生成,而UIWindow 为iOS App启动后展示页面时执行。
©安天版权所有,欢迎无损转载 第5页
Xcode 非官方版本恶意代码污染事件(XcodeGhost )的分析与综述
图 2-4 iOS应用启动流程(第三方图片)[5]
● UIWindow 生成方式:
通常通过模板建立工程时,Xcode 会自动生成一个Window ,然后让它变成keyWindow 并显示出来;由于是模板自动生成,所以很多时候开发人员都容易忽略这个UIWindow 对象,这也是此次Xcode 被植入恶意代码位置的原因之一。
● 恶意代码启动时机分析:
恶意代码植入于UIWindow (didFinishLaunchingWithOptions)中,其入口点为: __UIWindow_didFinishLaunchingWithOptions__makeKeyAndVisible_;UIWindow 是作为包含了其他所有View 的一个容器,每一个程序里面都会有一个UIWindow ;而didFinishLaunchingWithOptions 里面的代码会在UIWindow 启动时执行,即被感染App 在启动时的开始准备展示界面就已经在执行被植入的恶意代码了。
图 2-5恶意插件植入的代码入口点
©安天版权所有,欢迎无损转载 第6页