UnityGhost的检测和回溯
0x1 问题描述和速查方法
此次XcodeGhost病毒不仅篡改了Xcode的dmg安装文件,百度安全实验室发现Unity3D也被插入了恶意代码。Unity是由Unity Technologies开发的多平台综合型游戏开发工具,可用于创建三维视频游戏、实时三维动画等类型的互动内容,支持发布游戏至Windows、OS X、Wii、iPhone、Windows Phone 8和Android等平台。不过,目前安全实验室搜集到的样本仅感染了iOS应用,尚未发现感染安卓或Windows平台的代码。
目前观察到,Unity OS X平台和Windows平台的安装包版本在4.x至5.1.x(范围可能更大),64位和32位版本均存在被修改的情况。被修改后的文件均无数字签名,在文件安装前较易区分。对于OS X下dmg文件中包含的pkg文件,可使用pkgutil –check-signature Unity.pkg进行检查。以下附上Windows和OS X下正确版本数字签名校验的截图:
病毒作者修改了libiPhone - lib - il2cpp.a文件,在其中添加了libiPhone - lib - il2cpp.a - arch - masterx.x.o(其中arch为具体的架构名),并修改了project.pbxproj的配置信息。libiPhone - lib - il2cpp.a在Mac平台下的路径为./Unity/Unity.app/Contents/PlaybackEngines/iossupport/Trampoline/Libraries/libiPhone - lib - il2cpp.a,在Windows平台上的路径为Unity/Editor/Data/PlaybackEngines/iossupport/Trampoline/Libraries/libiPhone - lib - il2cpp.a。
快速自查方法:由于.a是复合的archive文件,解压较为麻烦,可直接检查./iossupport/Trampoline/Unity - iPhone.xcodeproj/project.pbxproj中是否含有-ObjC字符串,若有则属于被感染版本。下图左侧为受感染文件,右侧为正常文件。
0x2 代码逻辑
总体而言,Unity上受感染的恶意代码行为与XcodeGhost行为基本一致。更详细的信息可参考之前关于XcodeGhost的分析。从这些分析中可以看出,恶意代码作者有很强的躲避检测的意图。下图是OS X平台上的一个受感染文件libiPhone - lib - il2cpp.a - armv7 - master.o。
0x3 制作时间
通过对比恶意DMG和官方DMG中的文件信息,能够清晰地了解恶意代码作者打包修改文件的时间。以unity - 4.6.6.dmg为例:
可以看出,UnityGhost作者在今年6月29日下午进行了修改操作。
以下是搜集到的官方发布版本和样本篡改时间的时间轴: