Varonis 发现了一种加密挖矿病毒:我们的调查

Varonis 发现了一种加密挖矿病毒:我们的调查

我们的网络安全调查团队最近调查了一家中型公司的几乎完全感染加密货币挖矿病毒的网络。 分析
收集的恶意软件样本显示发现了新的修改
这种病毒,称为 诺曼,使用各种方法隐藏其存在。 另外还发现 交互式网络外壳,这可能与采矿经营者有关。

研究概述

  • Varonis公司发现了大规模的加密货币挖矿软件感染:公司几乎所有服务器和工作站都感染了此类软件
  • 自一年多前首次感染以来,修改和受感染设备的数量稳步增加
  • 我们发现了一种新型门罗币加密挖矿程序(Norman),它使用各种方法隐藏其不被安全软件分析,以避免检测到
  • 大多数恶意软件变体使用 DuckDNS(免费的动态 DNS 服务)连接到控制中心(C&C 服务器)并获取配置参数或发送新数据
  • Norman是一款基于开源矿机-XMRig的高性能门罗币加密货币矿机
  • 我们还没有无可辩驳的证据将加密货币矿工与交互式 PHP shell 联系起来。 然而,有充分的理由相信它们来自同一攻击者。 研究人员正在收集更多证据来证明这种联系是否存在。
  • 在本文中,您可以熟悉 Varonis 关于防范远程 Web shell 和加密货币挖矿程序的建议

调查

调查在下一个试点项目期间开始 平台
网络安全瓦罗尼斯
(Varonis 数据安全平台),可以在互联网请求期间(通过网络代理)快速识别网络级别的多个可疑异常事件,这些事件与文件系统上的异常操作相关。
客户立即指出我们平台识别的设备
属于最近报告应用程序崩溃和网络速度下降的同一用户。

我们的团队手动检查了客户的环境,根据 Varonis 平台生成的警报从一个受感染的站点移动到另一个站点。 事件响应小组制定了一项特殊规则 数据警报模块 检测正在积极挖矿的计算机,这有助于快速消除威胁。 收集到的恶意软件样本已发送给取证和开发团队,他们建议有必要对样本进行进一步检查。
受感染的节点是由于它们发出的调用而被发现的 鸭DNS,一种动态 DNS 服务,允许用户创建自己的域名并将其快速映射到不断变化的 IP 地址。 如上所述,事件中的大多数恶意软件访问 DuckDNS 以连接到控制中心 (C&C),而其他恶意软件则访问配置参数或发送新数据。

几乎所有服务器和计算机都感染了恶意软件。 主要用于
加密货币矿工的常见变种。 其他恶意软件包括密码转储工具和 PHP shell,而许多工具已经运行了好几年。

我们向客户提供了结果,从他们的环境中删除了恶意软件,并阻止了进一步的感染。

在所有已发现的加密货币矿工样本中,有一个脱颖而出。 我们给他起了个名字 诺曼.

见面! 诺曼. 加密矿工

Norman 是基于 XMRig 代码的高性能门罗币加密货币挖矿程序。 与发现的其他矿工样本不同,诺曼使用技术隐藏其不被安全软件分析,以逃避检测并防止进一步传播。

乍一看,这个恶意软件是一个隐藏在 svchost.exe 名下的普通挖矿程序。 然而,研究发现它使用了更有趣的方法来隐藏检测并保持运行。

该恶意软件的部署过程可分为三个阶段:

  • 表现;
  • 执行;
  • 矿业。

逐步分析

第一阶段:执行

第一阶段从可执行文件 svchost.exe 开始。

该恶意软件是使用 NSIS(Nullsoft 脚本安装系统)编译的,这很不寻常。 NSIS 是一个用于创建 Windows 安装程序的开源系统。 与 SFX 一样,该系统创建文件存档和安装程序运行时执行的脚本文件。 脚本文件告诉程序要运行哪些文件,并可以与存档中的其他文件进行交互。

注: 要从可执行文件获取 NSIS 脚本文件,您必须使用 7zip 版本 9.38,因为更高版本不实现此功能。

NSIS 存档的恶意软件包含以下文件:

  • CallAnsiPlugin.dll、CLR.dll - 用于调用 .NET DLL 函数的 NSIS 模块;
  • 5zmjbxUIOVQ58qPR.dll - 主要有效负载 DLL;
  • 4jy4sobf.acz、es1qdxg2.5pk、OIM1iVhZ.txt - 有效负载文件;
  • Retreat.mp3、Cropped_controller_config_controller_i_lb.png 只是与进一步恶意活动无关的文件。

下面给出了运行负载的 NSIS 脚本文件中的命令。

Varonis 发现了一种加密挖矿病毒:我们的调查

该恶意软件通过调用5zmjbxUIOVQ58qPR.dll函数来执行,该函数将其他文件作为参数。

第二阶段:实施

从上面的 NSIS 脚本可以看出,文件 5zmjbxUIOVQ58qPR.dll 是主要有效负载。 对元数据的快速分析显示,该 DLL 最初名为 Norman.dll,因此我们将其命名为 Norman.dll。

DLL 文件是在 .NET 中开发的,并通过三重混淆来防止逆向工程
使用著名的商业产品Agile .NET Obfuscator。

在执行过程中,自注入的很多操作涉及到自己的进程,也涉及到其他进程。 根据操作系统位深度,恶意软件将
选择系统文件夹的不同路径并启动不同的进程。

Varonis 发现了一种加密挖矿病毒:我们的调查

根据系统文件夹路径,恶意软件将选择不同的进程来运行。

Varonis 发现了一种加密挖矿病毒:我们的调查

注入的有效负载有两个主要功能:执行加密挖矿程序和防止检测。

如果操作系统是 64 位

当执行原始 svchosts.exe 文件(NSIS 文件)时,它会创建自己的新进程并将有效负载 (1) 注入其中。 不久之后,它启动 notepad.exe 或 explorer.exe,并向其中注入 cryptominer (2)。

Varonis 发现了一种加密挖矿病毒:我们的调查

此后,原来的svchost.exe文件退出,新的svchost.exe文件作为监控矿工进程的程序。

Varonis 发现了一种加密挖矿病毒:我们的调查

如果操作系统是 32 位

当原始 svchosts.exe 文件(NSIS 文件)运行时,它会复制自己的进程并将有效负载注入其中,就像 64 位版本一样。

在这种情况下,恶意软件会将有效负载注入用户的 explorer.exe 进程中。 从那里,恶意代码启动一个新进程(wuapp.exe 或 vchost.exe)并向其中注入矿工。

Varonis 发现了一种加密挖矿病毒:我们的调查

该恶意软件通过使用 wuapp.exe 的路径和空值覆盖之前注入的代码,隐藏了它已将自身注入 explorer.exe 的事实。

Varonis 发现了一种加密挖矿病毒:我们的调查

与在 64 位环境中运行的情况一样,原始 svchost.exe 进程会退出,如果用户终止该进程,第二个进程将用于将恶意代码重新注入到 explorer.exe 中。

在执行算法结束时,恶意软件总是将加密挖矿程序注入到其启动的合法进程中。

它旨在通过在用户启动任务管理器时终止挖矿程序来防止检测。

请注意,启动任务管理器后,wuapp.exe 进程就会结束。

Varonis 发现了一种加密挖矿病毒:我们的调查

关闭任务管理器后,恶意软件会一遍又一遍地启动wuapp.exe进程
矿工将其注入其中。

第三阶段:矿工

考虑上面提到的 XMRig 矿工。

该恶意软件将伪装的 UPX 版本的矿工注入记事本、exe、explorer.exe、
svchost.exe 或 wuapp.exe,具体取决于操作系统位深度和执行算法的阶段。

矿机中的 PE 标头已被删除,在下面的屏幕截图中我们可以看到它被 UPX 屏蔽。

Varonis 发现了一种加密挖矿病毒:我们的调查

创建转储并重建可执行文件后,我们可以运行它:

Varonis 发现了一种加密挖矿病毒:我们的调查

应该注意的是,对目标 XMR 站点的访问被拒绝,这有效地压制了该矿工。

矿工配置:

"url": "pool.minexmr.com:5555","user":
"49WvfokdnuK6ojQePe6x2M3UCD59v3BQiBszkuTGE7wmNJuyAvHM9ojedgxMwNx9tZA33P84EeMLte7t6qZhxNHqHyfq9xA","pass":"x"

神秘的 PHP shell 将数据传递给 C&C

在调查过程中,我们的取证团队发现了一个引起他们注意的 XSL 文件。 经过对样本的深入分析,发现了一个新的PHP shell,不断连接到控制中心(C&C服务器)。

在客户环境中的多台服务器上发现了一个 XSL 文件,该文件是由 sysWOW64 目录中的文件夹中的已知 Windows 可执行文件 (mscorsv.exe) 启动的。

该恶意软件文件夹名为 AutoRecover,包含 几个文件:

  • XSL 文件:xml.XSL
  • 九个DLL文件

可执行文件:

  • 可执行程序
  • 执行程序

Varonis 发现了一种加密挖矿病毒:我们的调查

XSL文件

XSL 文件是样式表,类似于 CSS 中使用的样式表,描述如何显示 XML 文档。

使用记事本,我们确定它实际上不是 XSL 文件,而是被 Zend Guard 混淆的 PHP 代码。 这个奇怪的事实表明
基于其执行算法的恶意软件的有效负载。

Varonis 发现了一种加密挖矿病毒:我们的调查

九个 DLL

对 XSL 文件的初步分析得出这样的结论:存在这样的数字
DLL有一定的意义。 主文件夹包含一个名为 php.dll 的 DLL 以及与 SSL 和 MySQL 相关的其他三个库。 在子文件夹中,专家发现了 XNUMX 个 PHP 库和 XNUMX 个 Zend Guard 库。 它们都是合法的,并且是从 PHP 安装包或外部 dll 中获取的。

在此阶段,假设该恶意软件是基于 PHP 创建的,并由 Zend Guard 进行了混淆。

可执行文件

此文件夹中还有两个可执行文件:Mscorsv.exe 和 Wmiprvse.exe。

在分析 mscorsv.exe 文件后,我们确定它没有经过 Microsoft 签名,尽管其 ProductName 参数设置为“Microsoft. 网络框架”。
起初这看起来很奇怪,但分析 Wmiprvse.exe 让我们更好地了解情况。

Wmiprvse.exe 文件也未签名,但包含 PHP 组版权符号和 PHP 图标。 快速浏览一下它的行,就会发现 PHP 帮助中的命令。 当使用 -version 开关执行时,发现它是一个旨在运行 Zend Guard 的可执行文件。

Varonis 发现了一种加密挖矿病毒:我们的调查

当以类似方式启动 mscorsv.exe 时,屏幕上显示相同的数据。 我们比较了这两个文件的二进制数据,发现除了元数据之外,它们是相同的
版权和公司名称/产品名称。

Varonis 发现了一种加密挖矿病毒:我们的调查

据此得出结论,XSL 文件包含使用 Zend Guard 可执行文件运行的 PHP 代码,隐藏在名称 mscorsv.exe 下。

解析 XSL 文件

通过互联网搜索,专家很快获得了Zend Guard反混淆工具,并恢复了xml.XSL文件的原始外观:

Varonis 发现了一种加密挖矿病毒:我们的调查

原来,恶意软件本身是一个 PHP shell,不断连接到控制中心(C&C 服务器)。

它发送和接收的命令和输出都是加密的。 由于我们拥有源代码,因此我们拥有加密密钥和命令。

该恶意软件包含以下内置功能:

  • Eval - 通常用于修改代码中的现有变量
  • 本地文件录制
  • 使用数据库的可能性
  • 与 PSEXEC 合作的可能性
  • 隐藏执行
  • 绘图流程和服务

以下变量表明该恶意软件有多个版本。

Varonis 发现了一种加密挖矿病毒:我们的调查

在采集样本时,发现了以下版本:

  • 0.5f
  • 0.4p
  • 0.4o

确保系统上持续存在恶意软件的唯一功能是,在执行时,它会创建一个自行执行的服务及其名称
版本之间的变化。

专家试图在互联网上寻找类似样本,结果发现了恶意软件
他们认为,这是现有样本的先前版本。 该文件夹的内容相似,但 XSL 文件不同并且具有不同的版本号。

Parle-Vu 恶意软件?

该恶意软件可能起源于法国或其他法语国家:SFX 文件有法语注释,表明作者使用法语版本的 WinRAR 来创建它。

Varonis 发现了一种加密挖矿病毒:我们的调查

而且,代码中的一些变量和函数也用法语命名。

Varonis 发现了一种加密挖矿病毒:我们的调查

Varonis 发现了一种加密挖矿病毒:我们的调查

监控执行并等待新命令

专家修改了恶意软件代码并安全启动了已修改的
版本来收集有关其收到的命令的信息。

Varonis 发现了一种加密挖矿病毒:我们的调查

在第一次通信会话结束时,专家发现恶意软件收到了一条使用 Base64 编码的命令作为 EVAL64 启动密钥的参数。
该命令被解码并执行。 它会更改几个内部变量(读取和写入缓冲区大小),之后恶意软件进入等待命令的工作周期。

目前,尚未收到新的命令。

交互式 PHP shell 和 cryptominer:它们有关系吗?

Varonis 专家不确定 Norman 是否与 PHP shell 有关,因为支持和反对这一假设都有强有力的论据:

为什么它们可能有关联?

  • 尽管在各个网段的各种设备上都发现了恶意加密货币挖矿软件样本,但它们都没有能力独立传播到其他系统。 攻击者有可能分别感染每个节点(可能使用与感染零号患者相同的攻击向量),尽管使用 PHP shell 在作为攻击目标的整个网络中传播会更有效。
  • 针对特定组织的大规模、有针对性的自动化活动通常会留下技术工件或可识别的网络安全威胁痕迹。 在这种情况下,没有发现任何此类情况。
  • Norman 和 PHP shell 都使用了 DuckDNS 服务。

为什么他们可能没有关系?

  • 加密挖矿恶意软件变体和 PHP shell 之间没有技术相似之处。 恶意挖矿程序是用 C++ 创建的,外壳是 PHP 的。 而且,代码结构也没有相似之处,网络功能的实现也不同。
  • 恶意软件变体和 PHP shell 之间没有直接通信来交换数据。
  • 他们不共享开发人员评论、文件、元数据或数字指纹。

防御远程 shell 的三个建议

恶意软件与常规病毒不同,它需要控制中心(C&C 服务器)的命令才能运行。 他的行为不太可预测,更类似于黑客或渗透测试人员在没有自动化工具或脚本的情况下执行的行为。 因此,在没有恶意软件签名的情况下检测这些攻击比常规防病毒扫描更具挑战性。

以下是保护公司免受远程 shell 攻击的三项建议:

  1. 保持所有软件最新
    攻击者经常利用软件和操作系统中的漏洞在组织的网络中传播并搜索感兴趣的数据,以便
    盗窃。 及时修补可以显着降低此类威胁的风险。
  2. 监控异常数据访问事件
    最有可能的是,攻击者会试图将组织的机密数据带出边界。 监控对此数据的异常访问事件将允许
    检测受感染的用户以及实际上可能落入攻击者手中的整套文件夹和文件,而不仅仅是考虑这些用户可用的所有数据。
  3. 监控网络流量
    使用防火墙和/或代理服务器可以检测并阻止与恶意软件控制中心(C&C 服务器)的恶意连接,从而防止攻击者执行命令并使其更难
    周长数据。

关注灰色挖矿问题? 六大防护建议:

  1. 使所有操作系统保持最新状态
    补丁管理对于防止资源滥用和恶意软件感染非常重要。
  2. 控制网络流量和网络代理
    这样做是为了检测某些攻击,并防止其中一些攻击,您可以根据有关恶意域的信息阻止流量或限制不必要的数据传输通道。
  3. 使用和维护防病毒解决方案和端点安全系统 (但绝不限于仅使用这一层保护)。
    端点产品可以检测知名的加密货币挖矿程序,并在感染对系统性能和能源使用造成损害之前预防感染。 请注意,阻止检测的新修改或新方法可能会导致端点安全无法检测同一恶意软件的新版本。
  4. 监控计算机CPU活动
    通常,加密货币矿工使用计算机的中央处理器进行挖矿。 有必要分析有关性能下降的任何消息(“我的计算机已开始变慢。”)。
  5. 监控 DNS 动态 DNS 服务(如 DuckDNS)的异常使用

    尽管 DuckDNS 和其他动态 DNS 服务本质上不会对系统有害,但恶意软件对 DuckDNS 的使用使我们的调查团队更容易检测受感染的主机。

  6. 制定事件响应计划
    确保您针对此类事件制定了必要的程序,以自动检测、遏制和减轻灰色加密货币挖矿的威胁。

Varonis 客户请注意。
Varonis 数据警报 包括能够检测加密挖矿恶意软件的威胁模型。 客户还可以创建自定义规则,以根据列入黑名单的候选域进行目标软件检测。 为确保您运行最新版本的 DatAlert 并使用正确的威胁模型,请联系您的销售代表或 Varonis 支持。

来源: habr.com

添加评论