见闻您现在的位置是:首页 > 风向标 > 见闻

新的 SysJoker 后门针对 Windows、Linux 和 macOS

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-01-21见闻 6 0关键字:   

针对多个操作系统的恶意软件在恶意软件威胁领域也不例外。去年 9 月才记录的Vermilion Strike是迄今为止最新的例子之一。

本文由机器翻译,原文:https://www.intezer.com/blog/malware-analysis/new-backdoor-sysjoker/ Nf9无知


Nf9无知

2021 年 12 月,我们发现了一个针对 Windows、Mac 和 Linux 的新多平台后门。VirusTotal 中完全未检测到 Linux 和 Mac 版本。我们将这个后门命名为SysJokerNf9无知

SysJoker 是在对一家领先教育机构的基于 Linux 的 Web 服务器的主动攻击期间首次发现的。经过进一步调查,我们发现 SysJoker 也有 Mach-O 和 Windows PE 版本。根据在 VirusTotal 中发现的命令和控制 (C2) 域注册和样本,我们估计 SysJoker 攻击是在 2021 年下半年发起的。  Nf9无知

SysJoker 伪装成系统更新,并通过解码从托管在 Google Drive 上的文本文件中检索到的字符串来生成其 C2。在我们的分析中,C2 更改了 3 次,表明攻击者处于活动状态并正在监视受感染的机器。根据受害者学和恶意软件的行为,我们评估 SysJoker 是针对特定目标的。Nf9无知

SysJoker 以用于TypeScript 文件的后缀.ts上传到 VirusTotal。此恶意软件的一个可能攻击媒介是通过受感染的 npm 包。  Nf9无知

下面我们提供了对该恶意软件的技术分析以及 IoC 以及检测和响应缓解措施。Nf9无知

SysJoker的技术分析

该恶意软件是用 C++ 编写的,每个样本都是针对它所针对的特定操作系统量身定制的。在 VirusTotal 中完全未检测到 macOS 和 Linux 样本。Nf9无知

Nf9无知

VirusTotal 中针对 Mac M1 处理器的e06e06752509f9cd8bc85aa1aa24dba2Nf9无知

行为分析

SysJoker 的行为对于所有三个操作系统都是相似的。我们将分析 SysJoker 在 Windows 上的行为。Nf9无知

与 Mac 和 Linux 示例不同,Windows 版本包含一个第一阶段的 dropper。滴管 ( d71e1a6ee83221f1ac7ed870bc272f01 ) 是一个 DLL,它作为style-loader.ts上传到 VirusTotal,在撰写本文时只有 6 次检测。Nf9无知

Dropper从 C2 https[://]github[.]url-mini[.]com/msg.zip中删除一个压缩的 SysJoker ( 53f1bb23f670d331c9041748e7e8e396 ) ,将其复制到C:\ProgramData\RecoverySystem\recoveryWindows.zip,解压缩并执行它。所有这些操作都是通过 PowerShell 命令执行的。Nf9无知

Nf9无知

显示 PowerShell 命令的进程树。Nf9无知

一旦 SysJoker ( d90d0f4d6dad402b5d025987030cc87c ) 被执行,它会随机休眠 90 到 120 秒。然后,它将创建 C:\ProgramData\SystemData\ 目录并将自身复制到该目录下,伪装成igfxCUIService.exe(igfxCUIService 代表 Intel Graphics Common User Interface Service)。接下来,它将使用离地 (LOtL) 命令收集有关机器的信息。SysJoker 使用不同的临时文本文件来记录命令的结果。这些文本文件会立即删除,存储在 JSON 对象中,然后编码并写入名为microsoft_windows.dll的文件。下图展示了SysJoker在内存中构建的JSON对象。Nf9无知

Nf9无知

SysJoker 在内存中构建的 JSON 对象。Nf9无知

它将收集 MAC 地址、用户名、物理媒体序列号和 IP 地址(请参阅 IoC 部分以获取完整的命令列表)。SysJoker 将通过向注册表运行键HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run添加一个条目来创建持久性。在上述每个步骤之间,恶意软件会随机休眠一段时间。Nf9无知

以下屏幕截图显示了进程树和命令。Nf9无知

Nf9无知

处理树和命令。Nf9无知

接下来,SysJoker 将开始其 C2 通信。Nf9无知

解码/编码方案  

SysJoker 在二进制文件中保存一个硬编码的 XOR 密钥,用于解码和编码二进制文件中的字符串以及从 C2 发送和接收的数据。XOR 密钥是未在解码方案中使用的 RSA 公钥。SysJoker 的所有版本中都存在相同的 XOR 键:Nf9无知

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkfNl+Se7jm7sGSrSSUpV3HUl3vEwuh+xn4q\Nf9无知

BY6aRFL91x0HIgcH2AM2rOlLdoV8v1vtG1oPt9QpC1jSxShnFw8evGrYnqaou7gLsY5J2B06eq5UW7\Nf9无知

+OXgb77WNbU90vyUbZAucfzy0eF1HqtBNbkXiQ6SSbquuvFPUepqUEjUSQIDAQABNf9无知

解决 C2

为了获得可用的 C2 并开始通信,SysJoker 首先对硬编码的 Google Drive 链接进行解码。Nf9无知

Nf9无知

 Nf9无知

Nf9无知

使用CyberChef 解码。Nf9无知

Google Drive 链接托管一个名为domain.txt的文本文件,该文件包含一个编码的 C2。文本文件的内容会随着时间的推移而变化,具体取决于当前可用的 C2。SysJoker 将解码 C2 并将收集到的用户信息发送到 C2 的/api/attach 目录作为初始握手。C2 回复一个唯一的令牌,从现在开始,当恶意软件与 C2 通信时,该令牌将用作标识符。Nf9无知

C2 说明

SysJoker 运行一个 while(1) 循环,该循环使用唯一令牌向 C2 的/api/req目录发送请求,并将处理 C2 的响应,该响应使用此库 中的函数构建为 JSON 这是 SysJoker ping C2 以获取说明的方式(请参见下图中的步骤 2):Nf9无知

Nf9无知

脚步。Nf9无知

如果服务器响应数据,SysJoker 将解析接收到的有效负载(参见下图中的步骤 3)。SysJoker 可以从 C2 接收以下指令:execmd、  remove_regexitNf9无知

下图显示了 SysJoker 与 C2 的通信流程。Nf9无知

Nf9无知

当前版本中未实现remove_regexit 。根据指令名称,我们可以假设它们负责恶意软件的自我删除。让我们看看execmd指令:Nf9无知

exe  - 此命令负责删除和运行可执行文件。SysJoker 将收到一个 zip 文件的 URL、一个文件应该被放置到的路径的目录,以及恶意软件应该在提取的可执行文件上使用的文件名。它将下载此文件,解压缩并执行它。Nf9无知

Nf9无知

解析函数的 IDA 代码片段,如果是exe部分。Nf9无知

执行后,恶意软件将回复 C2 的/api/req/res  API,如果进程成功则返回“成功”,否则返回“异常”(上图中的步骤 4)。Nf9无知

Nf9无知

解析函数的IDA代码片段,构建响应状态。Nf9无知

cmd  - 该指令负责运行命令并将其响应上传到 C2。SysJoker 将对命令进行解码、执行并通过/api/req/res  API将命令的响应上传到 C2 (上图中的步骤 4)。Nf9无知

Nf9无知

解析函数的IDA代码片段,构建cmd命令响应。Nf9无知

在我们的分析过程中,C2 没有响应下一个阶段的指令。Nf9无知

检测与响应

要检测您组织中的机器是否受到威胁,我们建议采取以下步骤:Nf9无知

1. 使用内存扫描器检测内存中的 SysJoker 有效载荷Nf9无知


  • Nf9无知

    • 对于 Linux 机器,使用Intezer Protect 获得对基于 Linux 系统中代码的完整运行时可见性,并在任何恶意或未经授权的代码时收到警报。我们有一个免费的社区版Nf9无知

    • 对于 Windows 机器,使用 Intezer 的Endpoint ScannerEndpoint Scanner 将让您了解驻留在机器内存中的所有二进制代码的类型和来源。下图显示了一个感染 SysJoker 的端点示例:Nf9无知

Nf9无知

2. 使用检测内容在您的 EDR 或 SIEM 中进行搜索。我们为您提供了以下每个操作系统的 IoC 和丰富的检测内容列表。将这些与您的 EDR 一起使用来寻找受感染的机器。我们将很快发布一个专门的博客,讨论如何使用检测内容来检测 SysJoker。 Nf9无知

如果您已被入侵,请执行以下步骤:Nf9无知

  1. 杀死与SysJoker相关的进程,删除相关的持久化机制,以及所有与SysJoker相关的文件(见下文检测内容部分)Nf9无知

  2. 通过运行内存扫描程序确保受感染的机器是干净的Nf9无知

  3. 调查恶意软件的初始入口点。如果服务器感染了 SysJoker,在调查过程中,请检查:Nf9无知

    • 面向公众的服务的配置状态和密码复杂性  Nf9无知

    • 使用的软件版本和可能的已知漏洞Nf9无知

SysJoker 的 Linux 和 Windows 版本现已在Intezer Analyze 中编入索引。Nf9无知

Nf9无知

最终积分

有迹象表明 SysJoker 攻击是由高级威胁参与者执行的:Nf9无知

  1. 代码是从头开始编写的,在其他攻击中从未见过。最重要的是,在实时攻击中很少发现以前看不见的 Linux 恶意软件。Nf9无知

  2. 攻击者注册了至少 4 个不同的域,并为三种不同的操作系统从头开始编写恶意软件。Nf9无知

  3. 在我们的分析过程中,我们没有目睹攻击者发送的第二阶段或命令。这表明攻击是特定的,通常适合高级参与者。  Nf9无知

根据恶意软件的功能,我们评估攻击的目标是间谍活动以及横向移动,这也可能导致勒索软件攻击作为下一阶段之一。Nf9无知

IOC

精灵

bd0141e88a0d56b508bc52db4dab68a49b6027a486e4d9514ec0db006fe71eedNf9无知

d028e64bf4ec97dfd655ccd1157a5b96515d461a710231ac8a529d7bdb936ff3Nf9无知

苹果电脑

1a9a5c797777f37463b44de2b49a7f95abca786db3977dcdac0f79da739c08acNf9无知

fe99db3268e058e1204aff679e0726dc77fd45d06757a5fda9eafc6a28cfb8dfNf9无知

d0febda3a3d2d68b0374c26784198dc4309dbe4a8978e44bb7584fd832c325f0Nf9无知

视窗

61df74731fbe1eafb2eb987f20e5226962eeceef010164e41ea6c4494a4010fcNf9无知

1ffd6559d21470c40dcf9236da51e5823d7ad58c93502279871c3fe7718c901cNf9无知

d476ca89674c987ca399a97f2d635fe30a6ba81c95f93e8320a5f979a0563517Nf9无知

36fed8ab1bf473714d6886b8dcfbcaa200a72997d50ea0225a90c28306b7670eNf9无知

C2

https://bookitlab[.]techNf9无知

https://winaudio-tools[.]comNf9无知

https://graphic-updater[.]comNf9无知

https://github.url-mini[.]comNf9无知

https://office360-update[.]comNf9无知

https://drive.google[.]com/uc?export=download&id=1-NVty4YX0dPHdxkgMrbdCldQCpCaE-HnNf9无知

https://drive.google[.]com/uc?export=download&id=1W64PQQxrwY3XjBnv_QAeBQu-ePr537euNf9无知

检测内容

视窗

机器上创建的文件和目录:

C:\ProgramData\RecoverySystemNf9无知

C:\ProgramData\RecoverySystem\recoveryWindows.zipNf9无知

C:\ProgramData\RecoverySystem\msg.exeNf9无知

C:\ProgramData\SystemDataNf9无知

C:\ProgramData\SystemData\igfxCUIService.exeNf9无知

C:\ProgramData\SystemData\tempo1.txtNf9无知

C:\ProgramData\SystemData\tempo2.txtNf9无知

C:\ProgramData\SystemData\tempi1.txtNf9无知

C:\ProgramData\SystemData\tempi2.txtNf9无知

C:\ProgramData\SystemData\temps1.txtNf9无知

C:\ProgramData\SystemData\temps2.txtNf9无知

C:\ProgramData\SystemData\tempu.txtNf9无知

C:\ProgramData\SystemData\microsoft_windows.dllNf9无知

C:\ProgramData\xAE 操作系统\ServiceHub.exeNf9无知

持久性:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunNf9无知

名称: igfxCUIService类型: REG_SZ数据:  “C:\ProgramData\SystemData\igfxCUIService.exe”Nf9无知

命令:

“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” getmac | Out-File -Encoding 'Default' 'C:\ProgramData\SystemData\temps1.txt' ; wmic 路径 win32_physicalmedia 获取序列号 | Out-File -Encoding 'Default' 'C:\ProgramData\SystemData\temps2.txt'Nf9无知

“C:\Windows\System32\Wbem\WMIC.exe”路径 win32_physicalmedia 获取序列号Nf9无知

“C:\Windows\system32\getmac.exe”Nf9无知

“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” $env:用户名 | Out-File -Encoding 'Default' 'C:\ProgramData\SystemData\tempu.txt'Nf9无知

“C:\Windows\System32\cmd.exe” /c wmic OS 获取 Caption、CSDVersion、OSArchitecture、版本/值 > “C:\ProgramData\SystemData\tempo1.txt” && 键入“C:\ProgramData\SystemData\tempo1 .txt” > “C:\ProgramData\SystemData\tempo2.txt”Nf9无知

wmic OS 获取 Caption、CSDVersion、OSArchitecture、版本/值  Nf9无知

“C:\Windows\System32\cmd.exe” /c wmic nicconfig where 'IPEnabled = True' 获取 ipaddress > “C:\ProgramData\SystemData\tempi1.txt” && 键入“C:\ProgramData\SystemData\tempi1.txt ” > “C:\ProgramData\SystemData\tempi2.txt”Nf9无知

wmic nicconfig where 'IPEnabled = True' 获取 IP 地址  Nf9无知

“C:\Windows\System32\cmd.exe” /c REG ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V igfxCUIService /t REG_SZ /D “C:\ProgramData\SystemData\igfxCUIService.exe” /FNf9无知

REG ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V igfxCUIService /t REG_SZ /D “C:\ProgramData\SystemData\igfxCUIService.exe” /FNf9无知

Linux

机器上创建的文件和目录:

/。图书馆/Nf9无知

/.Library/SystemServices/updateSystemNf9无知

/.图书馆/系统网络Nf9无知

/.库/log.txtNf9无知

持久性:

创建 cron 作业:Nf9无知

@reboot (/.Library/SystemServices/updateSystem) Nf9无知

命令:

crontab -l | egrep -v “^(#|$)” | grep -e “@reboot (/.Library/SystemServices/updateSystem)”Nf9无知

cp -rf <样本名称> /.Library/SystemServices/updateSystemNf9无知

nohup '/.Library/SystemServices/updateSystem' >/dev/null 2>&1 &Nf9无知

如果配置 | grep -v 127.0.0.1 | grep -E “inet ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}) ” | awk '{打印 $2}'Nf9无知

IP 地址 | awk '/ether/{打印 $2}'Nf9无知

身份证 -uNf9无知

unname - 夫人Nf9无知

苹果电脑

机器上创建的文件和目录:

/图书馆/MacOsServicesNf9无知

/图书馆/MacOsServices/updateMacOsNf9无知

/图书馆/系统网络Nf9无知

/Library/LaunchAgents/com.apple.update.plistNf9无知

持久性:

通过路径/Library/LaunchAgents/com.apple.update.plist下的 LaunchAgent 创建持久性。Nf9无知

内容Nf9无知

<?xml 版本=”1.0″ 编码=”UTF-8″?>Nf9无知

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>Nf9无知

<plist 版本=”1.0″>Nf9无知

<字典>Nf9无知

        <key>标签</key>Nf9无知

        <string>com.apple.update</string>Nf9无知

    <key>LimitLoadToSessionType</key>Nf9无知

    <string>水色</string>Nf9无知

        <key>程序参数</key>Nf9无知

        <数组>Nf9无知

                <string>/Library/MacOsServices/updateMacOs</string>Nf9无知

        </array>Nf9无知

        <key>保活</key>Nf9无知

    <字典>Nf9无知

       <key>成功退出</key>Nf9无知

       <真/>Nf9无知

    </dict>Nf9无知

        <key>RunAtLoad</key>Nf9无知

        <真/>Nf9无知

</dict>Nf9无知

</plist>Nf9无知

您可以在Intezer Analyze中找到有关 SysJoker 的更多信息,它现在已经索引了 Linux 和 Windows 版本。Nf9无知

阿维加伊尔·梅希廷格

Avigayil 是 Intezer 的安全研究员和恶意软件分析师,之前曾在 CheckPoint 担任网络分析师。Nf9无知

瑞恩·罗宾逊

Ryan 是一名分析恶意软件和脚本的安全研究员。此前,他是 Anomali 威胁研究小组的研究员。Nf9无知

妮可·菲什拜因

Nicole 是一名恶意软件分析师和逆向工程师。在加入 Intezer 之前,她是以色列国防军 (IDF) 情报部队的一名嵌入式研究员。Nf9无知


Nf9无知

本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! () 有话说 ()

相关文章