序言
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\ado
和 C:\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.1
和 8.8.8.8
。
接下来,为了建立持久性,get.png
以 SYSTEM
身份创建以下计划任务
- OneDriveCloudSync 使用
msdtc
每 20 分钟运行恶意服务 DLLC:\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.exe | PE 可执行文件 | 用于通过 cURL 下载文件 |
C:\Windows\Fonts\smartsscreen.exe | PE 可执行文件 | 核心有效负载 (GHOSTENGINE),其主要目的是停用安全工具,完成初始感染,并执行矿工。 |
C:\Windows\System32\oci.dll | 服务 DLL | 持久性/更新模块 |
backup.png | Powershell 脚本 | 后门模块 |
kill.png | Powershell 脚本 | 一个 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 框架来记录威胁对企业网络使用的常见战术、技术和程序。
战术
战术代表技术或子技术的原因。这是攻击者的战术目标:执行操作的原因。
技术
技术代表攻击者如何通过执行操作来实现战术目标。
- 命令和脚本解释器:PowerShell
- 命令和脚本解释器:Windows 命令 Shell
- 计划任务/作业:计划任务
- 指示器删除:清除 Windows 事件日志
- 伪装
- 进程注入
- 进程发现
- 通过 C2 通道渗漏数据
- 数据编码
- 资源劫持
- 停止服务
缓解 GHOSTENGINE
检测
GHOSTENGINE 恶意软件的首要目标是使端点安全解决方案失效,并禁用特定的 Windows 事件日志(例如,记录进程创建和服务注册的安全日志和系统日志)。因此,必须优先检测和阻止这些初始操作
- 可疑的 PowerShell 执行
- 从不寻常的目录执行
- 将权限提升到系统完整性
- 部署易受攻击的驱动程序并建立相关的内核模式服务。
一旦加载了易受攻击的驱动程序,检测机会会大大减少,组织必须找到停止向其 SIEM 传输日志的受感染端点。
如果 DNS 记录查找指向 已知的矿池域名,并且使用众所周知的端口(如 HTTP (80
) 和 HTTPS (443
)),则可能会生成和识别网络流量。Stratum 也是矿工常用的另一种网络协议,默认情况下使用端口 4444
。
对该入侵集的分析揭示了以下检测规则和行为阻止事件
- 可疑的 PowerShell 下载
- 通过脚本解释器生成的服务控制
- 本地计划任务创建
- 从不寻常的目录执行进程
- Svchost 生成 Cmd
- 不寻常的父子关系
- 清除 Windows 事件日志
- Microsoft Windows Defender 篡改
- 可能通过缺少 DLL 提升权限
- 通过不受信任的路径伪装二进制文件
预防
恶意文件预防
Shellcode 注入预防
易受攻击的驱动程序文件创建预防(Windows.VulnDriver.ArPot 和 Windows.VulnDriver.IoBitUnlocker)
YARA
Elastic Security 创建了 YARA 规则来识别此活动。
观察结果
所有可观察值也可通过 ECS 和 STIX 格式在 下载。
本研究中讨论了以下可观察值。
可观察值 | 类型 | 名称 | 参考 |
---|---|---|---|
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753 | SHA-256 | C:\Windows\Fonts\smartsscreen.exe | GHOSTENGINE EDR 控制器模块 |
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1 | SHA-256 | C:\Windows\System32\drivers\aswArPots.sys | Avast 易受攻击的驱动程序 |
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8ae | SHA-256 | C:\Windows\System32\drivers\IObitUnlockers.sys | Iobit 易受攻击的驱动程序 |
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150 | SHA-256 | C:\Windows\System32\oci.dll | 更新/持久性模块(64 位) |
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7ab | SHA-256 | C:\Windows\System32\oci.dll | 更新/持久性模块(32 位) |
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03f | SHA-256 | C:\Windows\Fonts\taskhostw.exe | 矿工客户端 |
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1ca | SHA-256 | C:\Windows\Fonts\config.json | 矿工配置文件 |
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5 | SHA-256 | C:\Windows\Fonts\WinRing0x64.sys | 矿工驱动 |
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22b | SHA-256 | C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exe | 初始加载器 |
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347e | SHA-256 | backup.png | GHOSTENGINE 后门模块 |
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1 | SHA-256 | get.png | GHOSTENGINE 加载器 |
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104 | SHA-256 | kill.png | GHOSTENGINE EDR 终止模块 |
download.yrnvtklot[.]com | 域名 | C2 服务器 | |
111.90.158[.]40 | ipv4 地址 | C2 服务器 | |
ftp.yrnvtklot[.]com | 域名 | C2 服务器 | |
93.95.225[.]137 | ipv4 地址 | C2 服务器 | |
online.yrnvtklot[.]com | 域名 | C2 服务器 |
参考资料
以下内容在上述研究中被引用