iOS 设备的安全一直为业界所重视,日前企业安全领域领导者Palo Alto Networks 撰文分析了最近几个月所发现的新木马“TinyV”。在今年的10 月份,Palo Alto 发现了一个恶意的负载文件瞄准了iOS 的越狱设备,经过调查后发现,Palo Alto 认为该文件属于一个名为“TinyV”的新型iOS 木马家族。在12 月,有中国用户指出他们的设备受到了这个恶意软件的影响。
经过进一步的深入研究后,Palo Alto 发现该恶意文件已经被重新打包并植入到一些iOS 应用中,而这些iOS 应用往往可以通过多个渠道进行下载(非App Store 渠道)。在接下来的篇幅里,我们将会讨论“TinyV”是如何工作以及如何传播的。
重新打包和传播
“TinyV”被重新打包进一些为越狱设备而“准备”的应用中,受影响的iOS 应用不少。经过重新打包后,这些应用被上传到网络并提供用户下载。
用户有可能通过xx 助手下载到这些受感染的应用,在一些应用的官网上供下载的应用,也不见得是十分安全。我们往往在iOS 设备上访问这些网站的下载链接的时候会被跳转到描述文件页面并让用户安装,这些被标榜为企业级应用的应用往往需要用户手动开启验证,才可以在设备上使用该应用。
用户有可能通过xx 助手下载受感染的应用
需要指出的是,“TinyV”重新打包的方式和之前的iOS 或者OSX 恶意应用不太一样(和之前著名的WireLurker 也不一样)。例如在某个受感染的播放器应用的iOS 安装文件“com.某某.ipa”中,往往存在着两个执行文件。一个是主要的执行文件Mach-O ,而另一个则是名为“xg.png”的Mach-O 动态库文件。在主要执行文件的导入表中,最后的导入入口是“@executable_path/xg.png”。这意味着在应用被执行后,“xg.png”的文件将会被加载。
而在其它受感染的应用中,除了主要的Mach-O 执行文件外,也会出现一些额外的Mach-O 动态库文件:“dj.png”, “macro_off@2x.png和zippo_on@2x.png” 。“TinyV”的作者修改了原来的应用文件,并增加这些动态库文件到导入表中。
被加载的“xg.png”文件将会通过调用方法来连接到C2 服务器并取得配置信息。被C2 提供的配置将会指向一个ZIP 文件的URL,并被指定为一个带有“zipinstall”值的“shName”。
指向一个ZIP 文件的URL
在这个被感染的应用中, “macro_off@2x.png” 将会访问同一个C2 服务器的另一个页面来获取其配置。这次“debUrl”值使用XOR 算法加密。尽管代码混淆,但使用关键的“0xaf”加密,却依然可以显示相同的URL。
恶意行为
从C2 服务器获得配置后,“TinyV”将会从授予的“debUrl” 值中下载ZIP 文件。这里调查的ZI P文件被托管在另一个C2 服务器apt[.]appstt.com 上,目前该URL 地址出现404 错误。不过据说在10 月底开始调查的时候,这个URL 是可以访问的,并且“deb.zip”文件也可以下载。
在这个“deb.zip”文件中,包含了4 个文件
safemode.deb(saurik 官方提供的MobileSafety 插件)
freeDeamo/usr/bin/locka(实施恶意行为的Mach-O 执行文件)
freeDeamo/Library/LaunchDaemons/com.locka.plist(一个PLIST 文件,用于在iOS 作为一个守护进程配置“locka”)
freeDeamo/zipinstall(命令进程文件)
下载和解压这个ZIP文件后,xg.png 将会执行zipinstall 脚本来安装locka 和com.locka.plist。
locka 文件主要执行的“TinyV”恶意行为包括:
连接C2 服务器来获得远程指令
在后台安装指定的IPA 文件或DEB 文件
在后台卸载指定的IPA 应用或DEB 包
改变/etc/hosts 文件
值得一提的是,研究人员还发现了一个名为“ClassStaticFunctionHook”的函数,目前该函数只被用于钩住广告的SDK 代码。然而它有可能在被感染的应用中产生更危险的后果。
影响
在12 月12 日,“TinyV”开始通过一个名为“XZ Helper”的插件来进行传播,许多用户都发现了XY Helper 插件出现在他们的iOS 设备中。由于“TinyV”的代码执行和大量的C2 服务器指令,即使删除了该插件还是会被重新安装。不少用户在威锋论坛里指出了这个问题,目前受该恶意程序影响的设备似乎只出现在中国。
最后,Palo Alto 建议用户如果没有必要的话切勿轻易越狱,又或者是不要安装任何来自未知来源的企业级应用。