我们最近注意到MalwareHunterTeam 在Twitter上发布的帖子显示Java下载器的检测率较低。其名称为“由于Covid-19爆发CI + PL.jar而导致的公司PLP_Tax减免”,表明它可能已用于以Covid-19为主题的网络钓鱼活动。运行该文件导致下载了一个用Node.js编写的,未检测到的新恶意软件样本。该木马被称为“ QNodeService”。
对于编写商品恶意软件的恶意软件作者来说,使用Node.js是不寻常的选择,因为它主要是为Web服务器开发而设计的,并且不会预先安装在可能成为目标的机器上。但是,使用不常见的平台可能有助于逃避防病毒软件的检测。
该恶意软件具有使其能够下载/上传/执行文件,从Chrome / Firefox浏览器窃取凭据以及执行文件管理等功能。它针对Windows系统,但是其设计和某些代码段表明跨平台兼容性可能是未来的目标。
感染始于Java下载器,该Java下载器除了下载Node.js外,还下载以下文件:“ wizard.js”和“ qnodejs-win32-ia32.js”或“ qnodejs-win32-x64.js”。我们分析了这些组件以了解有关它们行为的更多信息。
Java下载器分析
上面提到的样本“由于Covid-19爆发CI + PL.jar而导致的PLP_Tax公司减免”,用作Java下载程序,已被Allatori混淆器混淆了。Allatori添加垃圾代码并混淆字符串,使分析更加困难。我们对代码进行了模糊处理,以便能够开始分析。
图1.样本的反编译代码(被Allatori混淆器混淆)
图2.样本的反混淆代码
它将Node.js下载到User Profile目录。它检查系统体系结构并适当下载32位或64位版本。
图3.用于将Node.js下载到用户目录的代码片段
它还从URL hxxps://central.qhub.qua.one/scripts/wizard.js下载名为“ wizard.js”的文件。然后,它使用带有多个命令行参数(包括C&C服务器的URL)的Node.js运行此文件:
图4. Node.js运行的wizard.js
请注意,“ – group user:476 @ qhub-subscription […]”是在与C&C服务器通信期间使用的参数;用户标识符的出现和“订阅”的出现表明该恶意软件可以作为订阅服务出售。
向导分析
该Wizard.js文件是一个模糊的Javascript(Node.js)文件。它负责持久性(通过创建“运行”注册表项),并负责根据系统体系结构下载另一个有效负载。
它创建一个名为“ qnodejs- <8位十六进制数字> .cmd”的文件,其中包含用于启动该文件的参数。这由它在“ HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run”中创建的注册表项条目调用。它还检查它是否在Windows平台上运行,这表明作者可能会考虑跨平台兼容性。
图5. Wizard.js检查它是否在Windows上运行,并安装“运行”注册表项
图6.由wizard.js添加的注册表“运行”项
它从hxxps://central.qhub.qua.one/scripts/qnodejs- - .js下载文件。根据Node.js中process.platform和process.arch的可能值,我们找到服务器上托管的文件qnodejs-win32-ia32.js和qnodejs-win32-x64.js。该服务器还为每个样本包含SHA1哈希,尽管它们被命名为.sha256。这些哈希将在运行时由下载的样本下载并检查。
图7.使用process.platform和process.arch确定要下载的有效负载
qnodejs-win32- .js的分析
根据系统架构(操作系统是64位还是32位)下载名为qnodejs-win32-ia32.js或qnodejs-win32-x64.js的文件。
这些文件包含一个嵌入式的“ node_modules”文件夹,其中包含Node.js的库,该库在执行时提取。与Java代码本身不同,这些库是特定于体系结构的,这就是基于系统体系结构分发单独文件的原因。以下屏幕截图基于2020-04-30的“ win32-ia32”变体。
图8.代码内部使用的名称“ QNodeService”
恶意软件分为模块。使用名为“ v”的查找功能会混淆对这些模块的访问。一些模块仅包含对导入库的“ require”调用,而其他模块则是作者编写的自定义模块。
我们将此恶意软件命名为“ QNodeService”,因为这似乎是内部使用的名称,如验证命令行参数的代码所示。
图9.恶意软件使用的模块
图10.带有查找功能“ v”的索引引用模块
该文件中的某些模块与Wizard.js相同;特别是,这些方法重用了确定样本URL及其哈希值的代码。在此文件中,该模块用于下载和验证SHA1哈希。如果哈希失败,则恶意软件终止。
该恶意软件使用socket.io库与C&C服务器进行通信。因此,它采用反应式编程范例进行设计,并使用WebSocket与服务器进行通信。
图11. WebSocket握手
该恶意软件可以从Chrome和Firefox窃取密码。
以下是恶意软件接受的命令列表:
命令 描述
控制/重装 指示Wizard.js重新下载主要有效负载。
控制/卸载 指示Wizard.js从系统中删除“运行”键条目并终止。
信息/获取IP地址 获取IP地址,位置,主机名等。
信息/获取标签 返回由“ set-label”命令设置的标签
信息/获取机器的uuid 获取由恶意软件生成的UUID。
信息/获取操作系统名称 获取系统的平台(windows)和体系结构(x32 / x64)。
信息/获取用户主页 获取用户配置文件目录(os.homedir())
信息/设置标签 设置标签
文件管理器/绝对 获取文件的完整路径
文件管理器/执行 使用命令“ start”“ / B ”执行文件
文件管理器/删除 删除系统上的一个或多个文件(使用“ rimraf”库接受glob)
文件管理器/转发访问 生成URL和令牌以用于“ http转发”命令(请参见下文)
文件管理器/列表 列出特定目录中的文件
文件管理器/ mkdirs 在系统上创建目录
文件管理器/写入 将C&C服务器发送的文件写入系统
http转发 发送到C&C上特定URL的HTTP请求被路由到受感染的计算机(请参见下文)
密码恢复/应用程序 列出可以读取密码的应用程序(Chrome和Firefox)
密码恢复/恢复 从特定应用程序(Chrome或Firefox)中恢复密码
5月5 日,该恶意软件使用三个附加命令进行了更新:
信息/获取标签 返回由“ add-tag”命令设置的标签列表
信息/添加标签 添加标签
信息/删除标签 删除标签
需要特别注意的是http-forward命令,它使攻击者无需直接连接到受害机器即可下载文件,如下图13-16所示。但是,访问计算机上的文件需要有效的请求路径和访问令牌。C&C服务器必须首先发送“ file-manager / forward-access”以生成URL和访问令牌,以便稍后用于http-forward命令。
图13. C&C服务器通过WebSocket发送“文件管理器/转发访问”命令
图14.恶意软件以图15中的cURL请求中使用的访问令牌和URL进行响应
恶意软件使用转发URL和访问令牌进行响应。然后,获得了URL和访问令牌的第三方可以向C&C服务器发送HTTP请求,以从受害机器中检索文件,而无需直接连接到该机器。
图15.到C&C服务器的HTTP cURL请求,请求“ C:\ foo.txt”(内容为“ bar”)
C&C服务器使用http-forward命令将HTTP请求转发到受害计算机上的恶意软件。如果访问令牌正确,则恶意软件会将文件的内容发送回C&C服务器,后者再通过HTTP响应将内容发送回攻击者,从而实现远程下载。
图16. C&C服务器使用“ http-forward”命令将cURL请求转发到受害计算机上的恶意软件
与wizard.js类似,作者似乎在考虑跨平台兼容性。尽管此示例是win32-ia32变体,但它包含的代码可改善Darwin(MacOS)和Linux平台上的兼容性。
威胁行动者不断提出巧妙的方法来创建恶意软件,并确保其尽可能长时间地影响尽可能多的系统,例如,使用较少用于恶意软件创建的环境,保持持久性并为它们提供跨平台兼容性。为了抵御此类恶意软件,用户可以通过以下安全解决方案阻止他们通过可能的入口点,例如电子邮件,端点和网络。
转载ots网络社区 原文链接:http://www.ots-sec.cn/ots911/vip_doc/17252979.html