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



我们的安全调查部门最近在一家中型公司中进行了一个几乎完全加密的挖矿病毒网络的案例。 分析方法
收集的恶意软件样本表明发现了新的修改
这样的病毒,称为Norman ,使用各种方法隐藏它们的存在。 此外,还发现了一个交互式Web Shell ,它可能与采矿运营商有关。

研究概述


  • Varonis检测到大规模感染了加密矿工:公司中几乎所有服务器和工作站都感染了此类软件
  • 自从一年多前发生首次感染以来,修改和感染设备的数量稳步增加
  • 我们发现的新型加密矿工Monero(Norman)使用各种方法将其隐藏在安全软件的分析中,以避免被发现
  • 大多数恶意软件变体都使用DuckDNS(免费的动态DNS服务)连接到控制中心(C&C服务器),以及获取配置参数或发送新数据。
  • Norman-基于高性能开源矿工的Monero加密货币矿工-XMRig
  • 我们尚无确凿证据表明加密矿工与交互式PHP Shell之间存在联系。 但是,有充分的理由相信其来源是同一攻击者。 研究人员收集有关存在或不存在这种关系的其他证据。
  • 在本文中,您可以找到有关针对远程Web Shell和加密矿工的防护的Varonis建议。

调查中


调查是在平台的下一个试点项目期间开始的
Varonis网络安全性 (Varonis数据安全平台),它使您可以在Internet请求(通过Web代理)与文件系统上的异常操作相关联的情况下,在网络级别上快速识别多个可疑异常事件。
客户立即表明,我们平台识别的设备,
属于最近报告应用程序崩溃和网络变慢的用户。

我们的团队根据Varonis平台生成的警报,手动检查了客户的环境,从一个受感染的工作站转移到另一个受感染的工作站。 事件响应团队还在DatAlert模块中制定了一条特殊规则,以检测正在主动挖掘的计算机,这有助于快速消除威胁。 收集到的恶意软件的样本已发送到法证和开发部门的团队,后者表示有必要对样本进行更多研究。
通过使用DuckDNS呼叫 (动态DNS)发现了受感染的站点,该站点允许其用户创建自己的域名并将其快速映射到更改的IP地址。 如上所述,事件中的大多数恶意软件都将DuckDNS转换为连接到控制中心(C&C)的方式,另一个获取配置参数或发送新数据。

几乎所有服务器和计算机都感染了恶意软件。 主要应用于
常见的加密矿工选项。 其他恶意软件包括密码转储工具,PHP shell和许多工具已经使用了几年。

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

在所有发现的加密矿工样本中,有一个脱颖而出。 我们叫他诺曼

认识我! 诺曼 加密矿工


Norman是基于XMRig代码的高性能Monero加密货币矿工。 与发现的其他矿工样本不同,Norman使用方法将其从安全软件的分析中隐藏起来,以避免检测并防止进一步分发。

乍一看,此恶意软件是隐藏在svchost.exe名称下的常规矿工。 但是,研究表明,它使用了更多有趣的方法来隐藏工作的检测和维护。

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

  • 充实
  • 实施;
  • 采矿。

分步分析


阶段1.执行


第一步从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脚本文件中运行有效负载的命令如下所示。



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

第二阶段。实施


5zmjbxUIOVQ58qPR.dll文件是主要的有效负载,它来自上面的NSIS脚本。 对元数据的快速分析表明,该DLL最初称为Norman.dll,这就是为什么我们将其称为。

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

在实施过程中,涉及将自我介绍引入您自己的流程以及其他流程的许多操作。 根据操作系统的位深度,恶意软件将
选择系统文件夹的不同路径并启动不同的过程。



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



部署的有效负载具有两个主要功能:执行加密矿工和防止检测。

如果操作系统是64位


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



之后,原始svchost.exe文件将关闭,而新的svchost.exe文件将用作监视矿工进程操作的程序。



如果操作系统是32位


在执行原始svchosts.exe文件(NSIS文件)的过程中,它会复制自己的进程,并向其中注入有效负载(与64位版本一样)。

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



恶意软件隐藏了explorer.exe中的实现事实,并通过wuapp.exe和空值覆盖了以前实现的代码。



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

在执行算法结束时,恶意软件始终将加密矿工注入其合法流程。

它旨在通过在用户启动任务管理器时关闭矿机来防止检测。

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



关闭任务管理器后,恶意软件一次又一次启动wuapp.exe进程
向其中介绍一个矿工。

第三阶段。


考虑上面提到的XMRig矿机。

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

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



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



应该注意的是,禁止访问目标XMR站点,这有效地中了该矿工。

矿工配置:

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

神秘的PHP Shell将数据传输到C&C


在调查过程中,我们的法医专家发现了一个引起关注的XSL文件。 在对样本进行深入分析之后,发现了一个新的PHP shell,该shell不断连接到控制中心(C&C服务器)。

在客户环境中的多台服务器上,找到了一个XSL文件,该文件由著名的Windows可执行文件(mscorsv.exe)从sysWOW64目录的文件夹中启动。

该恶意软件文件夹称为“自动恢复”,其中包含几个文件:

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

可执行文件:
  • Msscorsv.exe
  • Wmiprvse.exe



XSL文件


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

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



九个DLL


对XSL文件的初步分析使我们得出结论:
DLL具有一定意义。 主文件夹包含一个名为php.dll的DLL和其他三个与SSL和MySQL相关的库。 在子文件夹中,专家找到了四个PHP库和一个Zend Guard库。 所有这些都是合法的,并且可以从PHP安装程序包或作为外部dll获得。

在此阶段,假设该恶意软件基于PHP,并且被Zend Guard混淆。

可执行文件


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

分析mscorsv.exe文件后,我们发现它没有由Microsoft签名,尽管其ProductName参数设置为“ Microsoft。 Net Framework。”
起初,这似乎很奇怪,但是通过对Wmiprvse.exe的分析,可以更好地了解这种情况。

Wmiprvse.exe文件也未签名,但包含PHP组版权符号和PHP图标。 在粗略扫描期间,在其行中找到了来自PHP帮助的命令。 当使用-version开关执行它时,发现这是一个旨在运行Zend Guard的可执行文件。



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



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

解析XSL文件


使用Internet上的搜索,专家们很快获得了对Zend Guard进行模糊处理的工具,并还原了原始xml.XSL文件:



事实证明,该恶意软件本身是一个PHP外壳,始终与控制中心(C&C服务器)连接。

它发送和接收的命令和输出已加密。 因为我们收到了源代码,所以我们既有加密密钥又有命令。

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

  • 评估-通常用于修改代码中的现有变量
  • 本地文件记录
  • 数据库功能
  • PSEXEC功能
  • 隐藏执行
  • 流程和服务映射

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



收集样本时,发现以下版本:

  • 0.5f
  • 0.4分
  • 0.4度

确保系统中恶意软件不断存在的唯一功能是,在执行时,它会创建一个自行执行的服务及其名称
因版本而异。

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

Parle Wu Malvare?


该恶意软件的来源可能是法国或另一个讲法语的国家:SFX文件包含法语注释,表明作者使用法语版本的WinRAR进行了创建。



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





监控执行情况并等待新团队


专家修改了恶意软件代码,并安全启动了已修改的
版本以收集有关收到的团队的信息。



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

目前没有新的团队。

交互式PHP Shell和加密矿工:它们有关系吗?


Varonis专家不确定Norman是否与PHP shell关联,因为存在支持和反对此假设的重要论据:

为什么它们可以关联


  • 尽管在不同网段的各种设备上发现了恶意密码挖掘软件的样本,但没有一个样本能够独立分发到其他系统。 攻击者可能会分别感染每个节点(可能使用与感染“零病人”时相同的攻击媒介),尽管使用PHP shell在作为攻击目标的网络上传播会更有效。
  • 针对特定组织的大规模针对性自动化运动通常在实施过程中留下技术工件或可识别的网络安全威胁痕迹。 在这种情况下,找不到任何种类的东西。
  • Norman和PHP Shell都使用DuckDNS服务。

为什么它们可能不相关


  • 加密采矿恶意软件选项和PHP Shell之间没有技术相似之处。 恶意的cryptominer用C ++创建,而shell用PHP创建。 而且,代码结构没有相似之处,并且网络功能的实现方式也不同。
  • 恶意软件选项和PHP外壳程序之间没有直接的交互作用来交换数据。
  • 他们没有一般的开发人员注释,文件,元数据或指纹。

防止外壳脱落的三项建议


恶意软件需要来自控制中心(C&C服务器)的命令,看起来并不像普通病毒。 他的行为不是那么可预见的,而是类似于没有自动化工具或脚本的黑客或彭斯特的行为。 因此,在没有恶意软件签名的情况下检测这些攻击是比常规防病毒扫描更为复杂的任务。

以下是保护公司免受远程外壳攻击的三项建议:
  1. 保持所有软件为最新
    攻击者经常利用软件和操作系统中的漏洞在组织的网络中传播并搜索感兴趣的数据,从而
    盗窃 及时安装补丁程序可以大大降低此类威胁的风险。
  2. 跟踪异常数据访问事件
    攻击者很可能会尝试在外围显示组织的机密数据。 监视访问此数据的异常事件将允许
    检测受感染的用户以及实际上可能落入攻击者手中的整个文件夹和文件集,而不仅仅是这样考虑这些用户可用的所有数据。
  3. 跟踪网络流量
    由于使用了防火墙和/或代理服务器,因此可以检测并阻止与恶意软件控制中心(C&C服务器)的恶意连接,这将阻止攻击者执行命令并使输出任务复杂化
    周长数据。

关注灰矿问题? 六项保护建议:

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

    尽管DuckDNS和其他动态DNS服务本身对系统无害,但DuckDNS恶意软件的使用为参与调查的专家团队简化了受感染节点的检测。
  6. 制定事件响应计划
    确保您具有针对此类事件描述的必要步骤,这些步骤可自动检测,限制和消除灰色加密货币开采的威胁。

给Varonis客户的提示。
Varonis DatAlert包括检测恶意软件以进行加密挖掘的威胁模型。 客户还可以基于作为黑名单候选者的域来创建自己的规则,以有针对性地发现软件。 为确保您使用的是最新版本的DatAlert并应用适当的威胁模型,请联系您的销售代表或Varonis支持。

Source: https://habr.com/ru/post/zh-CN466817/


All Articles