针对此次XcodeGhost攻击行为的分析

字数 2074阅读 1220

9月17日09:45,微博名为@唐巧_boy 的用户在新浪微博发布了一条动态,内容是有朋友使用第三方平台下载的Xcode打包的苹果app,做了一些非可控的行为,包括向一个 奇怪 的地址发送数据,但是发送的数据仅仅包含一些本机数据,设备号,系统版本等,一写用户隐私相关的数据并没有包含在里面(在此感谢苹果的安全机制,即使是开发者,也不容易拿到用户隐私和其他app的数据)随后逐渐有人爆出‘网易云音乐’‘嘀嘀打车’等软件都已中枪。

9月18日 15:43,网易作为大公司,发布公告,承认了自己app已经中木马病毒,但是该病毒并不会造成一些危害,只是获取设备信息而已。虽然公关稿写的特别差,完全看不出认错态度,至少写出来了,用户知情,不像某些打车软件。这样,本次事件也就差不多了,app陆续更新包,发布没有中毒的app就皆大欢喜了。与此同时,国内一些安全机构发布了受感染的App,包含但不限于微信,银行类等(话说hacker已经关闭了网站,是不是微信流量实在是太大了,搞成DDos了)。

9月18日 19:17,微博名为 @saic 的开发者爆出该XcodeGhost木马,不仅仅发送一些本机设备,有一些更加严重的行为。她通过逆向XcodeGhost的包,在源代码中看到XcodeGhost做了一些应用程序里面AlertView(应用内的提示框,以下用‘弹框’称呼)的操作。如果涉及到iOS程序的弹框,里面可以做的内容就太多了,比如AppStore中请求用户AppleId和密码的操作就发生在弹框,别的软件也会经常使用弹框来输入用户名密码。木马可以做的最直接的事情就是模拟系统向用户请求Appid和密码。如果是这样,一些警觉性比较差的用户的用户名密码等都有可能泄露了。事情至此,这次中毒事件突然变严重了,本来我只以为挂马作者这次的行为只是一次针对开发者的攻击尝试,并不会有严重的安全问题。社交软件上一些苹果使用者已经开始呼吁删除中毒软件,修改自己的appid的密码,更有一些人已经把这个病毒和自己莫名收到输入Appid和密码的请求联系到一起。

9月19日04:40 ,中毒事件暴露给公众的第二天,有微博名@XcodeGhost-Author的作者发布了声明,作者自称是XcodeGhost的作者。作者自爆是一个苦逼开发者,这次事件仅仅是一次尝试,说自己并没有做一些很过分的事情。并且在github上公开了自己的木马代码。

/////////////////////////////////////////////////////////////////////////////////////////////////

我看了源码,如果源码是真的,确实安全性上面来讲不会有严重问题。源码中除了发送设备信息外,还会有一些跳转到Safari和AppStore,还会有一些弹框,弹框的行为也是让用户打开AppStore。

/////////////////////////////////////////////////////////////////////////////////////////////////

流水账说完,这究竟是怎么一回事呢。


1. 究竟发生了什么事

Xcode是苹果的app开发者开发软件的工具,这次攻击者其实是对Xcode做了手脚,导致用户编译出来的代码,增加了一些额外的代码,而这些额外的代码做了一些非开发者控制的事情,这其中就包含发送设备信息等。但是发生这件事情的前提是开发者使用了做过手脚的Xcode。在这里不得不吐糟国内开发者的网络环境之差,下载速度几百K算快的,我从开发者网站下载Xcode7,下载一整天没有下载完,还老是断。当开发者下载一些国内的所谓镜像,比如从百度网盘,迅雷,那就有可能中招了,这次的中毒的Xcode很大部分就是迅雷下载的,从侧面证明迅雷的包检查机制也很好绕过。(迅雷的工程师们是不是又要忙了)。


2. 这件事情是不是很严重

可以说很严重,也可以说不严重。说这件事情很严重,是因为我们把程序的控制权分享分享给了第三个人,他可以做任何程序内部的操作,包括监控输入,支付,跳转,用户的内容等行为(但也仅限于单个中毒的app内部,系统层的内容和别的app的内容是拿不到的,这里就不得不感谢苹果的沙盒机制,在机制上保护了一定的安全性),并且这次攻击证明根本上苹果软件的开发和提交机制是有漏洞的,更严重的问题是会不会已经有了一些别的病毒在软件中,只是没有被发现。 不严重是因为这次的病毒如果按照木马作者披露的源码,并没有做严重损害用户隐私的事情(一些安全机构逆向了源码,基本和作者公开的代码符合 http://security.tencent.com/index.php/blog/msg/96 )。 


3. 怎么避免这种事情

“程序最大的bug不是程序自身,而是人”。这次事件是各种因素一起影响的结果,开发者根本没有意识到Xcode都会被攻击,国内网络环境太差,公司不配备VPN等等。而开发者作为软件的开发者和安全的负责人以及直接责任人更需要去规范和争取,因为你比其他人知道的更多,也更清楚问题有多严重。


4. 说一些有意思的事情。

(1)XcodeGhost作者披露的东西完全是个人相关的,但是感觉作者的公关并不像一个个人开发者,背后应该有团队。还可以从精心挑选的加密key(“stringWithFormatter”)以防止逆向,精心挑选的很有迷惑性的上传数据的网址(http://init.icloud-analysis.com),屏蔽调试器等行为看出来,这次攻击必然是一次很成熟的攻击行为

(2)2015-09-14 国家互联网应急中心已经发布了针对Xcode的警告 http://www.cert.org.cn/publish/main/12/2015/20150914152821158428128/20150914152821158428128_.html 国家队也是有用的,可是为什么各大公司都没有收到消息呢

(3)2015-03-16 国外安全相关网站发布了一篇文章 表示他们截获一些消息,CIA试图通过攻击Xcode来攻击苹果软件 https://www.schneier.com/blog/archives/2015/03/how_the_cia_mig.html 并给出了hack大致的方向,就是这次攻击的方式。

(4)‘苹果不过也就这样嘛’,这种针对开发者的攻击行为如果成功在原理上iOS和Android都无法防备,因为从App的角度来讲,这些行为他也无法判断是攻击者还是开发者的,所以即使有审核也无济于事。其次是苹果的安全机制已经很不错了,只要不越狱(在此我再声明一下,如果不是开发者,手机千万不要越狱,千万,千万)

(5)一墙更比一墙高呐

推荐阅读更多精彩内容