在6月初,Bitdefender的Mac安全研究人员发现了一种针对macOS的新型高级间谍软件,目前已被Bitdefender命名为JokerSpy。
目前,大部分安全厂商都未能检测此间谍软件,并且关于它们的信息非常有限。(Emisoft,eScan,Gdata和Trellix(原McAfee)使用了Bitdefender的反病毒引擎)
样本分析shared.dat
shared.dat是一个通用的Python后门文件,它使用rot13替换来隐藏特定文件路径和字符串的值。它还生成一个唯一的设备标识符,以便在后续对命令与控制中心的请求中使用。
执行时,后门首先生成上述唯一设备标识符(UID)。然后,使用该UID作为临时文件的名称(uid.dat)。恶意软件接下来进入一个whileTrue循环,在此期间尝试使用自定义数据包格式与远程服务器进行通信。这些数据包以GITHUB_RES或GITHUB_REQ开头,后跟前一步生成的UID。后门支持通过远程服务器发送的四个命令,以cmdType数字形式表示:
代码:提取基本信息
当后门接收到cmdType为的命令时,它会提取以下详细信息:当前时间、用户名、主机名、操作系统版本,以及执行以下命令的结果:
在Unix系统上执行ifconfig-a和ps-ef;
在Windows系统上执行ipconfig/all和tasklist/svc。
这些详细信息还会被写入一个作为参数传入的文件中,本例中文件名为b.dat。
代码:CmdExec
cmdExec函数显然用于使用subprocess.Popen函数运行作为参数提供的特定命令。请求中包含用base64编码的命令,结果也使用相同的方法进行编码。
代码: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接收到的两个参数。
代码:KillSelf
这个函数很好理解,只是用于退出脚本。
sh.py–一个更强大的后门
sh.py(SHA-1bdecfd1ab5fd83be35edecd8fa70e)后门也是用Python编写的,具有跨平台功能。它将配置选项存储在~/Public/Safari/sar.dat文件中,先将其编码为Base64格式。存储在该文件中的设置包括UID(用户ID)、SleepCycleMin(最小睡眠周期时间)和两个可能的服务器URL。与shared.dat后门类似,sh.py也生成并保存一个UID(虽然是一个9位数)。
与shared.dat后门不同的是,这个后门没有硬编码的CC服务器值。相反,在运行脚本时可以作为参数提供CC的值,或者从设置文件中加载。
在主函数中,脚本使用while循环与远程服务器通信,并使用process_