研究人员发现一款攻击Windows、Linux、macOS平台的后门恶意软件。
2021年12月,Intezer安全研究人员发现一个多平台后门软件,可以攻击Windows、Linux和macOS系统。其中Linux和macOS版本的后门完全没有被VirusTotal 检测到,研究人员将该后门命名为SysJoker。
SysJoker技术分析
SysJoker恶意软件是用C++语言编写的,每个样本都根据要攻击的目标操作系统进行了修改。
攻击Mac M1处理器的SysJoker样本
行为分析
针对这3个不同操作系统的不同版本的SysJoker的行为基本类似。本文对Windows版本的SysJoker行为进行分析:
与Mac和Linux样本不同,Windows版本的SysJoker样本中含有一个第一阶段释放器。释放器是一个DLL文件,该DLL之前就被上传到了VirusTotal平台,被成功检出6次。
释放器会从C2 https[://]github[.]url-mini[.]com/msg.zip处获取压缩的zip SysJoker文件,然后复制到C:\ProgramData\RecoverySystem\recoveryWindows.zip,然后解压并执行。所有以上操作都是PowerShell 命令执行的。进程树和powershell命令如下所示:
进程树和powershell命令
SysJoker运行后,会修改90-120秒之间的一个随机值。然后创建C:\ProgramData\SystemData\ 目录,并将自己复制到该目录,伪装成igfxCUIService.exe。然后,使用Living off the Land (LOtL)命令收集关于机器的信息。SysJoker使用不同的临时文本文件来记录这些命令执行的结果。然后这些文本文件的内容会被保存在JSON对象中,然后立刻删除这些文件,随后编码并写入一个名为microsoft_Windows.dll的文件。下图是SysJoker将JSON对象植入内存中的过程:
SysJoker 将JSON 对象植入内存
然后会收集MAC地址、用户名、物理媒介序列化和IP地址。SysJoker会在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 中添加记录来实现驻留。在以上每个步骤之间都会加一个随机的休眠时间。进程树和powershell命令如下所示:
进程树和powershell命令
然后,SysJoker就会开始C2通信。
解码和编码方案
SysJoker的二进制文件中含有一个硬编码的XOR key,用于解码和编码二进制文件中的字符串,以及发送和从C2接收到的数据。XOR key是一个RSA公钥,并不用于解码方案中。该XOR key存在于所有的SysJoker版本中:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkfNl+Se7jm7sGSrSSUpV3HUl3vEwuh+xn4q\BY6aRFL91x0HIgcH2AM2rOlLdoV8v1vtG1oPt9QpC1jSxShnFw8evGrYnqaou7gLsY5J2B06eq5UW7\+OXgb77WNbU90vyUbZAucfzy0eF1HqtBNbkXiQ6SSbquuvFPUepqUEjUSQIDAQAB
解析 C2
为获得可用的C2和开始通信,SysJoker首先解码硬编码的谷歌Drive链接:
用CyberChef解码
Google Drive链接中含有一个明文domain.txt的文本文件,其中含有编码后的C2。文本文件的内容是随着时间变化的,具体是根据当前可用的C2。SysJoker会解码C2,并发送收集到的用户信息到C2的/api/attach目录。C2会返回一个唯一的token用作恶意软件与C2通信的标识符。
C2指令
SysJoker会运行一个while(1)循环,用C2返回的token发送请求到C2的/api/req目录,并使用库中的函数来处理C2响应的JSON。SysJoker ping C2指令的过程如下所示:
步骤
如果服务器响应数据,SysJoker就会分析接收到的payload。SysJoker可以从C2接收以下指令:exe, cmd, remove_reg, exit。
SysJoker与C2的通信如下所示:
remove_reg和exit在当前版本中并未实现。但根据指令的名字研究人员推测是负责对恶意软件的自删除。
Exe:该命令负责释放和运行可执行文件。SysJoker会接收到一个到zip文件的URL,要释放文件的路径目录、提取的可执行文件的文件名。然后下载该文件,并解压和执行。
分析函数的IDA代码段-exe部分
执行后,恶意软件就会向C2的/api/req/res API返回成功或失败的消息。
分析函数的IDA代码段-exe部分,含状态信息
cmd :该命令负责运行命令和上传响应给C2。SysJoker会解码命令,执行、并利用/api/req/res API
上传命令的响应到C2。
分析函数的IDA代码段-cmd命令部分
研究人员在分析过程中发现,目前C2尚未响应下一阶段的指令。
本文翻译自:https://www.intezer.com/blog/malware-analysis/new-backdoor-sysjoker/如若转载,请注明原文地址