XcodeGhost的无聊分析

这个是什么我就不说了,我在我的百度云的Xcode6.4找到这个样本,发现应该是以静态库形式嵌入,以我业余水平写的一篇无聊分析。(请注意,我是业余的,而且话这么短时间写的东西可能很多错漏,望大大及时指出)

XcodeGhost的本质

其实就是一个静态库,通过编译时嵌入,支持模拟器32位、64位,真机v7,v7s,64位。
如何验证?
直接看模拟工程,然后编译成功。
pic0

由于我心理害怕那个包含XcodeGhost的Xcode6.4不知道有没有其他问题,所以暂时不敢直接用它来编译,目前是用AppStore的Xcode6.4编译的。

接下来就是反编译之(本来应该直接反编译CoreService这个文件的,可惜我的Hopper不给力)
pic1
从调用方式来看,居然不是用常见的load和intialize,而是重写-[UIWindow makeKeyAndVisible],这点有点奇怪(不排除我的水平太渣)。

接下来继续看,这里有个奇怪的笑点,这个玩意不支持iOS6.0之前的应用,也就是说5.x的设备很“安全”。
pic2

接下就是对NSUserDefaults记录了当前时间,写了一个timer定时执行check方法,还有加了监视挂起、唤醒等各种通知。
pic3

接下通过Check方法检查时间,再执行Run方法
pic4

之后就是获取这么点东西,序列化JSON后加密(居然还加密,真是业界良心),POST去”http://init.icloud-analysis.com”。
pic5
pic6

看到这里,危害性几乎木有,都是监视和获取一些应用和系统的数据(不包含用户的密码)。

不过,后续有点奇怪了,请求完成后调用了Response,这个方法相对复杂,还包含了解析JSON。
pic7
pic8
可以用dispatch_after控制弹出一个UIAlertView(请原谅我这么懒,那个堆的block我都懒得debug找出来,是猜的。但也就三个block,要猜对不难。)
pic9

这个显示UIAlertView的方法也没什么好说的
pic10
但看不到设置alertViewStyle,因此这只是一个无输入框的弹框。

UIAlertViewDelegate方法
pic11

当然里面的内容都是通过服务器返回的,根据判断弹出SKStoreProductViewController这个应用内下载的控制器。
pic12

总结

从目前分析来看,我个人认为这个东西危害不算大(我手上的样本的确如此,我也不排除有疏漏),主要做了手机数据上传和钓鱼引导下载。对于Swizzling和私有API、KeyChain都还没用到,似乎不存在盗取密码的风险。

附上XcodeGhost用到的类和C函数一览:
pic13
pic14

  1. 看了源码后我也觉得奇怪,在category里重写方法不会导致runtime的时候弹出方法实现了多次,which one to use is undefined的警告log么?重写方法不是swizzling比较合适么?

    • 后来看了源码,感觉制作者的iOS开发能力不是太强。。。第一,方法命名不规范;第二,本应能盗取更多讯息,却只用来钓鱼;第三,这种自启动的方式相当不优雅。这个category重写方法不会有编译提示的,因为是静态库内嵌编译进去

    • 后来看了源码,感觉制作者的iOS开发能力不是太强。。。第一,方法命名不规范;第二,本应能盗取更多讯息,却只用来钓鱼;第三,这种自启动的方式相当不优雅。这个category重写方法不会有编译提示的,因为是静态库内嵌编译进去