隐形矿工:揭秘 GHOSTENGINE 的加密货币挖矿行动

Elastic Security Labs 发现了一个名为 REF4578 的入侵集合,该集合包含多个恶意模块,并利用漏洞驱动程序禁用已知的安全解决方案 (EDR) 进行加密货币挖矿。

25 分钟阅读攻击模式
Invisible miners: unveiling GHOSTENGINE’s crypto mining operations

序言

Elastic Security Labs 发现了一个入侵集合,该集合包含多个恶意模块,并利用漏洞驱动程序禁用已知的安全解决方案 (EDR) 进行加密货币挖矿。此外,该团队还发现了建立持久性、安装先前未记录的后门以及执行加密货币矿工的能力。我们将此入侵集称为 REF4578,并将主要有效负载称为 GHOSTENGINE(Antiy 团队的切线研究将此入侵集的某些部分命名为 HIDDENSHOVEL)。

主要要点

  • 恶意软件作者采用了许多应急和重复机制
  • GHOSTENGINE 利用易受攻击的驱动程序来终止和删除可能干扰部署的知名加密货币矿工的已知 EDR 代理
  • 此活动涉及非常高的复杂度,以确保 XMRIG 矿工的安装和持久性

代码分析

2024 年 5 月 6 日 14:08:33 UTC,名为 Tiworker.exe 的 PE 文件(伪装成合法的 Windows TiWorker.exe 文件)的执行标志着 REF4578 入侵的开始。遥测数据中捕获了以下警报,表明已部署已知的漏洞驱动程序。

执行后,此文件会下载并执行一个 PowerShell 脚本,该脚本协调整个入侵的执行流程。分析显示,此二进制文件执行硬编码的 PowerShell 命令行来检索混淆的脚本 get.png,该脚本用于从攻击者的 C2 下载更多工具、模块和配置,如下面的屏幕截图所示。

GHOSTENGINE

GHOSTENGINE 负责在计算机上检索和执行模块。它主要使用 HTTP 从配置的域下载文件,并在域不可用时使用备用 IP。此外,它还使用 FTP 作为辅助协议,其中嵌入了凭据。以下是执行流程的摘要

此脚本下载并执行 clearn.png,这是一个旨在清除系统中属于同一家族但不同活动的先前感染的残留物的组件;它会删除 C:\Program Files\Common Files\System\adoC:\PROGRA~1\COMMON~1\System\ado\ 下的恶意文件,并按名称删除以下计划任务

  • Microsoft Assist Job
  • System Help Center Job
  • SystemFlushDns
  • SystemFlashDnsSrv

这些计划任务工件的证据可能是先前感染的指标。

在执行过程中,它会尝试禁用 Windows Defender 并清除以下 Windows 事件日志通道

  • 应用程序
  • 安全
  • 安装程序
  • 系统
  • 转发事件
  • Microsoft-Windows-Diagnostics-Performance
  • Microsoft-Windows-AppModel-Runtime/Operational
  • Microsoft-Windows-Winlogon/Operational

get.png 禁用 Windows Defender,启用远程服务,并清除以下内容

  • C:\Windows\Temp\
  • C:\Windows\Logs\
  • C:\$Recycle.Bin\
  • C:\windows\ZAM.krnl.trace

get.png 还会验证 C:\ 卷是否至少有 10 MB 的可用空间来下载文件,并将其存储在 C:\Windows\Fonts 中。如果空间不足,它会尝试从系统中删除大文件,然后查找另一个具有足够空间的合适卷,并在 $RECYCLE.BIN\Fonts 下创建一个文件夹。

为了获取 C2 域名当前的 DNS 解析,GHOSTENGINE 使用硬编码的 DNS 服务器列表 1.1.1.18.8.8.8

接下来,为了建立持久性,get.pngSYSTEM 身份创建以下计划任务

  • OneDriveCloudSync 使用 msdtc 每 20 分钟运行恶意服务 DLL C:\Windows\System32\oci.dll(稍后介绍)
  • DefaultBrowserUpdate 运行 C:\Users\Public\run.bat,该文件下载 get.png 脚本并每 60 分钟执行一次
  • OneDriveCloudBackup 每 40 分钟执行 C:\Windows\Fonts\smartsscreen.exe

get.png 终止所有 curl.exe 进程以及命令行中包含 *get.png* 的任何 PowerShell 进程(当前进程除外)。这是一种终止任何并发运行的恶意软件实例的方法。

然后,此脚本下载 config.txt,这是一个 JSON 文件,其中包含它检索的 PE 文件的哈希值。此文件通过检查之前从过去任何感染中下载的文件的哈希值,来验证是否需要下载任何更新的二进制文件。

最后,get.png 下载其所有模块和各种 PE 文件。下表包含每个下载文件的描述

路径类型描述
C:\Windows\System32\drivers\aswArPots.sys内核驱动程序来自 Avast 的漏洞驱动程序
C:\Windows\System32\drivers\IObitUnlockers.sys内核驱动程序来自 IObit 的漏洞驱动程序
C:\Windows\Fonts\curl.exePE 可执行文件用于通过 cURL 下载文件
C:\Windows\Fonts\smartsscreen.exePE 可执行文件核心有效负载 (GHOSTENGINE),其主要目的是停用安全工具,完成初始感染,并执行矿工。
C:\Windows\System32\oci.dll服务 DLL持久性/更新模块
backup.pngPowershell 脚本后门模块
kill.pngPowershell 脚本一个 PowerShell 脚本,它注入并执行一个负责杀死安全传感器的 PE 文件

GHOSTENGINE 模块

GHOSTENGINE 部署了多个模块,这些模块可以篡改安全工具、创建后门并检查软件更新。

EDR 代理控制器和矿工模块:smartsscreen.exe

此模块主要终止任何活动的 EDR 代理进程,然后下载并安装加密货币矿工。

该恶意软件扫描所有正在运行的进程,并将其与硬编码的已知 EDR(端点检测与响应)代理列表进行比较。如果存在任何匹配项,它会首先利用 Avast Anti-Rootkit 驱动程序文件 aswArPots.sys 和 IOCTL 0x7299C004 来终止具有匹配 PID 的进程,从而终止安全代理。

然后,使用 smartscreen.exe 和另一个存在漏洞的驱动程序 iobitunlockers.sys(来自 IObit),使用 IOCTL 0x222124 删除安全代理二进制文件。

接着,smartscreen.exe 从 C2 服务器下载 XMRig 客户端挖矿程序(WinRing0x64.png),并将其另存为 taskhostw.png。最后,它执行 XMRig、其驱动程序和配置文件 config.json,启动挖矿过程。

更新/持久性模块:oci.dll

PowerShell 脚本创建一个服务 DLL(oci.dll),这是一个由 msdtc 加载的虚假 DLL。该 DLL 的架构因机器而异,可以是 32 位或 64 位。它的主要功能是创建系统持久性,并通过从 C2 下载 get.png 脚本并执行它,从 C2 服务器下载任何更新。

每次 msdtc 服务启动时,它都会加载 oci.dll 以产生 PowerShell 单行命令,该命令执行 get.png

EDR 代理终止模块:kill.png

kill.png 是一个 PowerShell 脚本,它将 shellcode 注入到当前进程中,解密并将 PE 文件加载到内存中。

此模块使用 C++ 编写,作者在其操作中集成了冗余。这种冗余在 smartsscreen.exe 中使用的终止和删除 EDR 代理二进制文件的技术复制中很明显;它会持续扫描任何新进程。

Powershell 后门模块:backup.png

PowerShell 脚本的功能类似于后门,允许在系统上执行远程命令。它不断发送一个 Base64 编码的 JSON 对象,其中包含一个唯一 ID,该 ID 从当前时间和计算机名称派生,同时等待 Base64 编码的命令。然后将这些命令的结果发送回去。

在此示例中,eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 是 Base64 编码的 JSON 对象

$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}

矿工配置

XMRig 是一种合法的加密货币矿工,他们在这里记录了配置文件用法和元素 这里。正如本出版物开头所述,REF4578 入侵集的最终目标是访问环境并部署持久的 Monero 加密货币矿工 XMRig。

我们从矿工中提取了配置文件,这非常有价值,因为它允许我们报告 Monero 支付 ID 并跟踪工作人员和矿池的统计数据、开采的加密货币、交易 ID 和提款。

以下是 REF4578 XMRig 配置文件的摘录

{
    "autosave": false,
    "background": true,
    "colors": true,

...truncated...

    "donate-level": 0,
    "donate-over-proxy": 0,
    "pools": [
        {
            "algo": "rx/0",
            "coin": "monero",
            "url": "pool.supportxmr[.]com:443",
            "user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
            "keepalive": true,
            "tls": true

...truncated...

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "verbose": 0,
    "watch": true,
    "pause-on-battery": false,
    "pause-on-active": false
}

门罗币支付 ID

门罗币是一种专注于混淆和可替代性的区块链加密货币,以确保匿名性和隐私性。支付 ID 是一个任意的、可选的交易附件,由 32 个字节(64 个十六进制字符)或 8 个字节(在集成地址的情况下)组成。

使用上述配置摘录中的支付 ID(468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f),我们可以查看配置中列出的 门罗币挖矿池站点之一上的工作人员和矿池统计数据。

此外,我们可以看到交易哈希值,我们可以在门罗币区块链浏览器上查找。请注意,虽然交易可以追溯到四个月前,但这仅表明该特定工作人员和帐户的潜在货币收益。

使用区块链浏览器和我们从支付 ID 中获得的 交易哈希,我们可以看到公钥、提款金额和时间。请注意,这些公钥与一次性地址或隐身地址一起使用,攻击者将使用私钥来解锁资金。

在上述交易 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 的示例中,我们可以看到提取了 0.109900000000 XMR(门罗币的缩写),总计 14.86 美元。Monerao 矿池站点显示了大约相同数量 XMR 的四笔交易,总计约为 60.70 美元(2024 年 1 月至 3 月)。

在本次研究发布时,仍有活跃的矿工连接到 REF4578 支付 ID。

虽然此特定支付 ID 看起来并不是一个大额收入来源,但很明显 REF4578 可以成功地运行此入侵集。此活动的其他受害者可能使用不同的支付 ID 来跟踪入侵,这些支付 ID 可以合并以获得更大的总收入。

恶意软件和 MITRE ATT&CK

Elastic 使用 MITRE ATT&CK 框架来记录威胁对企业网络使用的常见战术、技术和程序。

战术

战术代表技术或子技术的原因。这是攻击者的战术目标:执行操作的原因。

技术

技术代表攻击者如何通过执行操作来实现战术目标。

缓解 GHOSTENGINE

检测

GHOSTENGINE 恶意软件的首要目标是使端点安全解决方案失效,并禁用特定的 Windows 事件日志(例如,记录进程创建和服务注册的安全日志和系统日志)。因此,必须优先检测和阻止这些初始操作

  • 可疑的 PowerShell 执行
  • 从不寻常的目录执行
  • 将权限提升到系统完整性
  • 部署易受攻击的驱动程序并建立相关的内核模式服务。

一旦加载了易受攻击的驱动程序,检测机会会大大减少,组织必须找到停止向其 SIEM 传输日志的受感染端点。

如果 DNS 记录查找指向 已知的矿池域名,并且使用众所周知的端口(如 HTTP (80) 和 HTTPS (443)),则可能会生成和识别网络流量。Stratum 也是矿工常用的另一种网络协议,默认情况下使用端口 4444

对该入侵集的分析揭示了以下检测规则和行为阻止事件

预防

恶意文件预防

Shellcode 注入预防

易受攻击的驱动程序文件创建预防(Windows.VulnDriver.ArPotWindows.VulnDriver.IoBitUnlocker

YARA

Elastic Security 创建了 YARA 规则来识别此活动。

观察结果

所有可观察值也可通过 ECS 和 STIX 格式在 下载

本研究中讨论了以下可观察值。

可观察值类型名称参考
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753SHA-256C:\Windows\Fonts\smartsscreen.exeGHOSTENGINE EDR 控制器模块
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1SHA-256C:\Windows\System32\drivers\aswArPots.sysAvast 易受攻击的驱动程序
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8aeSHA-256C:\Windows\System32\drivers\IObitUnlockers.sysIobit 易受攻击的驱动程序
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150SHA-256C:\Windows\System32\oci.dll更新/持久性模块(64 位)
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7abSHA-256C:\Windows\System32\oci.dll更新/持久性模块(32 位)
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03fSHA-256C:\Windows\Fonts\taskhostw.exe矿工客户端
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1caSHA-256C:\Windows\Fonts\config.json矿工配置文件
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5SHA-256C:\Windows\Fonts\WinRing0x64.sys矿工驱动
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22bSHA-256C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exe初始加载器
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347eSHA-256backup.pngGHOSTENGINE 后门模块
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1SHA-256get.pngGHOSTENGINE 加载器
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104SHA-256kill.pngGHOSTENGINE EDR 终止模块
download.yrnvtklot[.]com域名C2 服务器
111.90.158[.]40ipv4 地址C2 服务器
ftp.yrnvtklot[.]com域名C2 服务器
93.95.225[.]137ipv4 地址C2 服务器
online.yrnvtklot[.]com域名C2 服务器

参考资料

以下内容在上述研究中被引用