在6月初,Bitdefender的Mac安全研究人员发现了一种针对 macOS 的新型高级间谍软件,目前已被Bitdefender命名为JokerSpy。
目前,大部分安全厂商都未能检测此间谍软件,并且关于它们的信息非常有限。(Emisoft,eScan,Gdata和 Trellix(原McAfee)使用了Bitdefender的反病毒引擎)
样本分析 shared.dat
shared.dat是一个通用的Python后门文件,它使用rot13替换来隐藏特定文件路径和字符串的值。它还生成一个唯一的设备标识符,以便在后续对命令与控制中心的请求中使用。
执行时,后门首先生成上述唯一设备标识符(UID)。然后,使用该UID作为临时文件的名称(<uid>.dat)。恶意软件接下来进入一个while True循环,在此期间尝试使用自定义数据包格式与远程服务器进行通信。这些数据包以GITHUB_RES或GITHUB_REQ开头,后跟前一步生成的UID。后门支持通过远程服务器发送的四个命令,以cmdType数字形式表示:
代码501:提取基本信息
当后门接收到cmdType为501的命令时,它会提取以下详细信息:当前时间、用户名、主机名、操作系统版本,以及执行以下命令的结果:
在Unix系统上执行ifconfig -a和ps -ef;
在Windows系统上执行ipconfig /all和tasklist /svc。
这些详细信息还会被写入一个作为参数传入的文件中,本例中文件名为b.dat。
代码502:CmdExec
cmdExec函数显然用于使用subprocess.Popen函数运行作为参数提供的特定命令。请求中包含用base64编码的命令,结果也使用相同的方法进行编码。
代码503:DownExec
DownExec例程根据受害者的操作系统表现不同。对于MacOS设备,该函数将一个文件写入到/Users/Shared/AppleAccount.tgz。从服务器接收的内容在写入存档时也使用base64编码。它将存档解压缩到/Users/Shared文件夹,然后打开/Users/Shared/TempUser/AppleAccountAssistant.app应用程序。
在Linux系统上,恶意软件调用dist_name函数,该函数检查/etc/os-release以验证受害者发行版是Debian、Fedora还是其他系统。该函数将从C2接收到的一些C代码写入一个临时文件tmp.c,然后在Fedora上使用cc命令,在Debian上使用gcc命令将其编译为/tmp/.ICE-unix/git文件。编译完成后,该文件在后台执行,同时使用C2接收到的两个参数。
代码504:KillSelf
这个函数很好理解,只是用于退出脚本。
sh.py – 一个更强大的后门
sh.py(SHA-1 bd8626420ecfd1ab5f4576d83be35edecd8fa70e)后门也是用Python编写的,具有跨平台功能。它将配置选项存储在~/Public/Safari/sar.dat文件中,先将其编码为Base64格式。存储在该文件中的设置包括UID(用户ID)、SleepCycleMin(最小睡眠周期时间)和两个可能的服务器URL。与shared.dat后门类似,sh.py也生成并保存一个UID(虽然是一个9位数)。
与shared.dat后门不同的是,这个后门没有硬编码的C&C服务器值。相反,在运行脚本时可以作为参数提供C&C的值,或者从设置文件中加载。
在主函数中,脚本使用while循环与远程服务器通信,并使用process_command函数处理特定命令,该函数接收以下任一值作为参数:
"L" -> 列出文件(路径、大小、访问时间、权限)
"C" -> 执行系统上的命令并输出结果
"CD" -> 切换目录
"XS"、"XSI" -> 使用exec执行命令。与"XS"不同的是,"XSI"先将命令编码为Base64格式再执行。
"R" -> 删除文件/目录
"E" -> 执行特定路径下的文件(可带参数)
"U" -> 将从服务器接收到的数据解码(Base64)后写入文件
"D" -> 从文件中读取数据,并将其分批以Base64格式发送给服务器
"G" -> 调用load_setting()函数,并将当前配置(来自sar.dat文件)以Base64格式发送给服务器
"W" -> 使用save_settings函数为特定选项设置值,比如SleepCycleMin或ServerUrl(2个元素的数组)
该后门还包括一个名为'get_basic_information'的函数,该函数提取系统的特定细节,例如主机名、用户名、操作系统版本、Python版本等等。当执行该函数时,脚本尝试连接到两个服务器URL之一,以便将这些详细信息发送过去。如果第一个URL不可用,则尝试与第二个URL进行联系。
xcc 间谍软件的前身
与前两个文件不同,这个第三个组件是一个FAT二进制文件(多架构文件),包含了两种架构(x86 Intel和ARM M1)的Mach-O文件。xcc二进制文件使用Swift编写,目标MacOS 12及更高版本。它的主要目的似乎是在使用潜在的间谍软件组件之前检查权限(可能用于捕获屏幕),但并不包含间谍软件组件本身。这让我们相信这些文件是更复杂攻击的一部分,并且我们调查的系统中缺少了几个文件。
除了6月1日上传的xcc文件之外,我们还找到了一个日期为6月6日的第二个文件(在我们的IoC列表中标记为样本E)。与"原始"的xcc文件不同,这个文件只包含x86架构的Mach-O二进制文件。
xcc文件具有特定的自定义签名,意味着它们与任何已知的苹果开发者都不相关。文件的标识符包含关键字XProtectCheck,以及文件内容中指定的路径"/Users/joker/Downloads/Spy/XProtectCheck/",这暗示了该项目的目的,以及该组件的角色。
xcc检查由苹果的TCC(透明度、同意和控制)管理的权限,例如完全磁盘访问、屏幕录制和辅助功能。辅助功能方面使用了"AXIsProcessTrusted"函数,它是macOS辅助功能API的一部分,而捕获屏幕的权限则通过调用CGPreflightScreenCaptureAccess()来获取。另外,函数getTopWindowApp使用了苹果的frontmostApplication属性来识别用户当前正在与之交互的活动应用程序。
命令与控制
命令与控制服务器在share.dat Python后门中被硬编码。首次提到该域名可追溯到2023年2月10日,大致在同一时间,有一系列与感染的MacOS QR码阅读器(QRLog)相关的推文中提到了它。
检测
Bitdefender将Python组件标记为Trojan.Python.JokerSpy。
Mach-O二进制文件被检测为Trojan.MAC.JokerSpy。
IOC
文件:
网址:https://www.git-hub.me/view.php
目前,Bitdefender的安全研究人员仍在持续追踪JokerSpy,如果您的macOS仍然未安装防护,我建议您尽快采取以下措施来保护您的系统:
- 安装可信赖的安全软件:选择一个经过认证且受信任的安全软件,如Bitdefender等,并确保定期更新其病毒定义库和程序版本。
- 谨慎设置反病毒排除。
- 执行macOS操作系统和应用程序的更新:及时安装操作系统和应用程序的安全更新,以修补已知的漏洞并增强系统安全性。
- 谨慎下载和打开附件:避免从不受信任的来源下载文件,特别是来自未知发件人的电子邮件附件。一定要验证文件的来源和可靠性。
- 部署更佳高级的防护,例如EDR、XDR、MDR等。
阅读Bitdefender博客原文:
https://www.bitdefender.com/blog/labs/fragments-of-cross-platform-backdoor-hint-at-larger-mac-os-attack/
了解 Bitdefender EDR/XDR/MDR/EPP/容器安全/云工作负载安全解决方案,联系合作:
致电:4000-132-568
联系:sales@bitdefender-cn.com
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!