随后的调查发现,App Store 中的恶意应用程序感染了包含相同木马的框架。例如,iOS 版 ComeCome 的感染方式与
随后的调查发现,App Store 中的恶意应用程序感染了包含相同木马的框架。例如,iOS 版 ComeCome 的感染方式与 Android 版相同。这是首次在 Apple 官方应用市场中发现感染 OCR 间谍软件的应用程序。
App Store 应用中的恶意框架
我们在 App Store 中检测到一系列嵌入恶意框架的应用程序。我们无法确定感染是供应链攻击的结果还是开发人员的蓄意行为。其中一些应用程序(例如送餐服务)似乎是合法的,而其他一些应用程序显然是为了引诱受害者而构建的。例如,我们看到了同一开发人员开发的几款类似的具有 AI 功能的“消息应用程序”:
除了恶意框架本身之外,一些受感染的应用程序在根文件夹中还包含一个modify_gzip.rb脚本。开发人员显然使用它来将框架嵌入到应用程序中:
该框架本身是用 Objective-C 编写的,并使用HikariLLVM进行混淆。在我们检测到的应用程序中,它有以下三个名称之一:
压缩;
谷歌应用程序开发工具包;
统计。
与 Android 版本一样,iOS 恶意软件也使用了ML Kit接口,该接口可以访问经过训练的 Google OCR 模型来识别文本,以及实现自定义 C2 通信协议的 Rust 库。但是,在这种情况下,它直接嵌入到恶意可执行文件中。与 Android 版本不同,iOS 框架保留了调试符号,这使我们能够识别出几个独特的细节:
这些行显示了框架创建者设备上存储项目的路径,包括用户名:
/Users/qiongwu/:项目作者的主目录
/Users/quiwengjing/:Rust 库创建者的主目录
C2-rust 通信模块名为im_net_sys。除了客户端之外,它还包含攻击者服务器可能用来与受害者通信的代码。
该项目的原始名称是GZIP。
该框架包含多个恶意类。以下是特别值得关注的:
MMMaker:下载配置并收集有关设备的信息。
ApiMgr:发送设备数据。
PhotoMgr:在设备上搜索包含关键字的照片并将其上传到服务器。
MMCore:存储有关 C2 会话的信息。
MMLocationMgr:收集设备的当前位置。在我们的测试期间,它没有发送任何数据,因此此类的确切用途尚不清楚。
某些类(例如MMMaker)可能在框架的早期版本中缺失或使用不同的名称,但这并没有改变恶意软件的核心功能。
混淆大大增加了样本的静态分析的复杂性,因为字符串是加密的,程序的控制流也被模糊了。为了快速解密感兴趣的字符串,我们选择了动态分析。我们在 Frida 下运行该应用程序,并捕获了存储这些字符串的_data部分的转储。引起我们注意的是,应用程序的 bundleID 位于解密数据之中
我们的结论如下:
该木马的行为会根据其运行的应用程序而有所不同。
可能被感染的应用程序比我们原先想象的要多。
在调查期间,与这些 ID 关联的部分应用已从 App Store 中移除,而其他一些应用仍然存在且包含恶意代码。列表中的部分 ID 指的是调查期间不包含恶意框架的应用:
com.kh-super.ios.superapp
com.unicornsoft.unicornhttpsforios
与 Android 专用版本一样,该木马实现了三种 OCR 输出过滤模式:关键字、词长和以加密形式存储在框架内部的“wordlists”文件夹中的本地化词典。遗憾的是,我们无法确定该恶意软件是否确实使用了最后一种方法。我们分析的所有样本均未包含词典链接或在运行时访问过这些词典。
发送包含关键字的选定照片是恶意框架运行的关键步骤。与 Android 应用程序类似,该木马仅在启动负责显示支持聊天的视图控制器时请求访问图库的权限。在初始化阶段,该木马根据其运行的应用程序,用自己的包装器替换相关控制器中的viewDidLoad或viewWillAppear方法,并调用方法+[PhotoMgr startTask:]。然后后者检查应用程序是否有权访问图库,并在需要时请求访问。接下来,如果获得访问权限,PhotoMgr会在可用且未处理过的照片中搜索符合发送条件的照片。
我们认为,此次攻击活动至少针对的是欧洲和亚洲的 Android 和 iOS 用户,如下所示:
所使用的关键词是欧洲和亚洲国家居民的各种母语。
资产内的词典以与关键字相同的方式本地化。
一些应用程序似乎在多个国家运营。一些送餐应用程序支持使用阿联酋、哈萨克斯坦、中国、印度尼西亚、津巴布韦和其他国家的电话号码进行注册。
我们怀疑除欧洲和亚洲之外的其他地区的移动用户也可能成为此次恶意活动的目标。
我们开始调查的第一个恶意模块名为“Spark”。当我们分析 iOS 专用木马时,恶意框架本身的捆绑包 ID“bigCat.GZIPApp”引起了我们的注意。因此得名“SparkCat”。以下是此恶意软件的一些特征:
跨平台兼容性;
使用在移动应用中很少见的 Rust 编程语言;
官方应用市场作为传播载体;
隐秘性,C2 域经常模仿合法服务和伪装成系统包的恶意框架;
混淆,阻碍分析和检测。
结论
不幸的是,尽管官方市场进行了严格审查,并且人们普遍意识到了基于 OCR 的加密钱包盗窃骗局,但受感染的应用程序仍然进入了 Google Play 和 App Store。这种木马特别危险的原因在于,没有迹象表明应用程序中隐藏了恶意植入物。它请求的权限可能看起来像是其核心功能所需的权限,或者乍一看似乎无害。该恶意软件的运行也相当隐秘。这个案例再次打破了 iOS 在某种程度上不受针对 Android 的恶意应用程序威胁影响的神话。以下是一些可以帮助您避免成为此恶意软件受害者的提示:
如果您的设备上安装了受感染的应用程序,请将其删除,并且避免重新安装,直到修复程序发布为止。
避免将包含敏感信息的截图(例如加密钱包恢复短语)存储在图库中。您可以将密码、机密文件和其他敏感信息存储在特殊应用中。
在所有设备上使用强大的安全产品。
我们的安全产品在检测到与此活动相关的恶意软件时返回以下结论:
HEUR:Trojan.IphoneOS.SparkCat.*
HEUR:Trojan.AndroidOS.SparkCat.*