翻译:https://www.elastic.co/security-labs/invisible-miners-unveiling-ghostengine
Elastic Security Labs 发现了 REF4578,这是一个包含多个恶意模块的入侵集,利用易受攻击的驱动程序来禁用已知的安全解决方案 (EDR),以进行加密挖矿。
序言
Elastic Security Labs 发现了一个包含多个恶意模块的入侵集,该入侵集利用易受攻击的驱动程序禁用已知的安全解决方案 (EDR),以进行加密挖矿。此外,该团队还发现了建立持久性、安装以前未记录的后门和执行加密挖矿程序的功能。我们将此入侵集称为 REF4578,主要有效载荷称为 GHOSTENGINE(Antiy 团队的切入研究将此入侵集的部分内容命名为 HIDDENSHOVEL)。
主要收获
- 恶意软件作者采用了许多应急和复制机制
- GHOSTENGINE利用易受攻击的驱动程序来终止和删除已知的EDR代理,这些代理可能会干扰已部署的知名挖矿机
- 为了确保XMRIG挖矿器的安装和持久性,这一活动涉及了非常多的复杂性
代码分析
REF4578执行流程
2024年5月6日,UTC时间14:08:33,一个名为(伪装成合法Windows文件)的PE文件的执行标志着REF4578入侵的开始。以下警报是在遥测中捕获的,表明部署了已知的易受攻击的驱动程序。Tiworker.exe TiWorker.exe
REF4578 执行 Tiworker 启动感染链
执行时,该文件会下载并执行一个 PowerShell 脚本,该脚本会协调整个入侵执行流程。分析显示,该二进制文件执行硬编码 PowerShell 命令行以检索混淆脚本,该脚本用于从攻击者 C2 下载更多工具、模块和配置,如下图所示。
GHOSTENGINE
GHOSTENGINE负责检索和执行机器上的模块。它主要使用HTTP从已配置的域下载文件,并在域不可用的情况下使用备份IP。此外,它使用FTP作为具有嵌入式凭据的辅助协议。以下是执行流程的摘要:
PowerShell脚本
该脚本下载并执行一个组件,该组件旨在清除属于同一家族但不同活动的先前感染的残余系统;删除和下的恶意文件,并按名称删除以下计划任务: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 事件日志通道:
Application
Security
Setup
System
Forwarded Events
Microsoft-Windows-Diagnostics-Performance
Microsoft-Windows-AppModel-Runtime/Operational
Microsoft-Windows-Winlogon/Operational
清除 Windows 日志通道
禁用Windows Defender,启用远程服务,并清除以下内容:
C:\Windows\Temp\
C:\Windows\Logs\
C:\$Recycle.Bin\
C:\windows\ZAM.krnl.trace
如果没有,它会尝试删除系统中的大文件,然后再寻找另一个有足够空间的合适卷,并在。C: C:\Windows\Fonts $RECYCLE.BIN\Fonts 下创建一个文件夹。
要获取 C2 域名的当前 DNS 解析,GHOSTENGINE 会使用硬编码的 DNS 服务器列表,以及 .NET 服务器列表。1.1.1.1 8.8.8.8
接下来,为了建立持久性,创建以下计划任务如下:
- 使用OneDriveCloudSync每20分钟运行一次恶意服务DLL
msdtc ``C:\Windows\System32\oci.dll
- 运行DefaultBrowserUpdate每 60 分钟下载脚本并执行一次
C:\Users\Public\run.bat,``get.png
-
OneDriveCloudBackup每 40 分钟执行一次
C:\Windows\Fonts\smartsscreen.exe
持久性计划任务
终止命令行中包含的所有进程和任何PowerShell进程,不包括当前进程。这是一种终止任何并发运行的恶意软件实例的方法。
然后,该脚本会下载一个 JSON 文件,其中包含其检索到的 PE 文件的哈希值。该文件会通过检查以前感染时下载的文件的哈希值来验证是否要下载任何更新的二进制文件。
config.txt文件,用于检查更新后的二进制文件
最后,下载其所有模块和各种PE文件。下表包含每个下载文件的描述:
路径 | 类型 | 描述 |
---|---|---|
C:\Windows\System32\drivers\aswArPots.sys |
Kernel driver | 来自Avast的脆弱驱动程序 |
C:\Windows\System32\drivers\IObitUnlockers.sys |
Kernel driver | 来自IObit的脆弱驱动程序 |
C:\Windows\Fonts\curl.exe |
PE executable | 用于通过cURL下载文件 |
C:\Windows\Fonts\smartsscreen.exe |
PE executable | 核心负载(GHOSTENGINE),其主要目的是停用安全工具,完成初始感染,并执行挖矿程序。 |
C:\Windows\System32\oci.dll |
Service DLL | 持久性/更新模块 |
backup.png |
Powershell script | 后门模块 |
kill.png |
Powershell script | 一个PowerShell脚本,注入并执行负责杀死安全传感器的PE文件 |
GHOSTENGINE 模块
GHOSTENGINE部署了几个模块,可以篡改安全工具,创建后门,并检查软件更新。
EDR代理控制器和矿工模块:smartsscreen.exe
该模块主要在下载和安装加密挖矿器之前终止任何活动的EDR代理进程。
smartscreen.exe GHOSTENGINE模块
恶意软件扫描并比较所有正在运行的进程与已知EDR代理的硬编码列表。如果有任何匹配,它首先通过利用Avast反rootkit驱动程序文件和IOCTL通过PID终止进程来终止安全代理。
然后,smartscreen.exe 被用来删除带有另一个易受攻击驱动程序的安全代理二进制文件,该驱动程序来自 IObit,IOCTL 为 .iobitunlockers.sys 0x222124
然后,smartscreen.exe 会从 C2 服务器下载 XMRig 客户端挖掘程序,并将其命名为 .XMRig.smartscreen.exe。最后,它执行 XMRig、其驱动程序和配置文件,启动挖矿进程。
smartscreen.exe执行XMRig
更新/持久化模块:oci.dll
PowerShell脚本创建了一个服务DLL(),一个由。DLL的体系结构因机器而异;支持32位或64位。它的主要功能是创建系统持久性,并通过从C2下载脚本并执行它从C2服务器下载任何更新。
持久性/更新机制oci.dll
每次服务启动时,它将加载并生成PowerShell一行代码,执行:msdtc oci.dll
oci.dll下载和执行
EDR代理终止模块:kill.png
kill.png
是一个PowerShell脚本,它将shellcode注入当前进程,解密并将PE文件加载到内存中。
kill.png注入shellcode
该模块是用c++编写的,作者将冗余集成到其操作中。这种冗余在用于终止和删除EDR代理二进制文件的技术的复制中是显而易见的;它不断地扫描任何新的进程。
硬编码的安全代理监控列表
Powershell 后门模块:backup.png
PowerShell 脚本的功能类似后门,可在系统上远程执行命令。它会持续发送一个包含唯一 ID 的 Base64 编码 JSON 对象,该唯一 ID 源自当前时间和计算机名称,同时等待 base64 编码命令。然后,这些命令的结果会被发送回来。
backup.png作为后门运行
在这个例子中是base64编码的JSON对象:eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9
$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}
Miner配置
XMRig是一个合法的加密矿工,他们已经记录了配置文件的用法和元素在这里。正如本文开头所指出的,REF4578入侵集的最终目标是获得对环境的访问权限,并部署持久的门罗币加密矿工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
}
Monero 支付 ID
Monero 是一种区块链加密货币,侧重于混淆和可替代性,以确保匿名性和隐私性。支付 ID](https://www.getmonero.org/resources/moneropedia/paymentid.html)是一个任意和可选的交易附件,由 32 个字节(64 十六进制字符)或 8 个字节(在集成地址的情况下)组成。
使用上述配置摘录()中的支付 ID,我们可以查看配置中列出的某个Monero 矿池网站上的 Worker 和矿池统计数据。468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f
REF4578 付款 ID 的工人和资金池统计数据
此外,我们还可以看到交易哈希值,我们可以在 Monero 区块链资源管理器上查看这些哈希值。请注意,虽然交易可以追溯到四个月前,但这只表明了该特定工人和账户的潜在货币收益。
REF4578 付款编号的付款
使用区块链浏览器和我们从支付ID中获得的交易哈希 之一,我们可以看到公钥,提取的金额和时间。请注意,这些公钥与一次性地址或隐形地址一起使用,攻击者随后将使用私钥来解锁资金。
REF4578 支付编号的交易
在上面的交易示例中,我们可以看到有一笔XMR(门罗币的缩写)的提款总额为14.86美元。Monerao矿池网站显示,在2024年1月至3月期间,有四笔交易的XMR金额大致相同,总额约为60.70美元。7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442``0.109900000000
截至本研究发表时,仍有活跃的矿工连接到REF4578支付ID。
矿工积极连接到REF4578支付ID
虽然这个特定的支付ID似乎不是一个大赢家,但很明显,REF4578可以成功地操作这个入侵集。这次攻击的其他受害者可能有不同的支付id,用于跟踪入侵,这些id可能会组合在一起,形成更大的整体打击。
恶意软件和 MITRE ATT&CK
Elastic 使用 MITRE ATT&CK 框架来记录威胁针对企业网络使用的常见战术、技术和程序。
战术
战术是技术或子技术的原因。它是对手的战术目标:采取某种行动的原因。
技术代表了对手如何通过执行某种行动来实现战术目标。
- Command and Scripting Interpreter: PowerShell
- Command and Scripting Interpreter: Windows Command Shell
- Scheduled Task/Job: Scheduled Task
- Indicator Removal: Clear Windows Event Logs
- Masquerading
- Process Injection
- Process Discovery
- Exfiltration Over C2 Channel
- Data Encoding
- Resource Hijacking
-
Service Stop
### 缓解 GHOSTENGINE
检测
GHOSTENGINE 恶意软件的首要目标是使端点安全解决方案失去功能,并禁用特定的 Windows 事件日志,如记录进程创建和服务注册的安全日志和系统日志。因此,优先检测和预防这些初始操作至关重要:
- 可疑的 PowerShell 执行
- 从异常目录执行
- 将权限提升至系统完整性
- 部署易受攻击的驱动程序并建立相关内核模式服务。
一旦加载了易受攻击的驱动程序,检测机会就会大大减少,组织必须找到停止向其SIEM传输日志的受损端点。
如果DNS记录查找通过HTTP()和HTTPS()等知名端口指向已知矿池域,则可能生成网络流量并可识别。Stratum也是另一种流行的矿工网络协议,默认情况下,通过端口80
443
4444
。
对该入侵集的分析显示了以下检测规则和行为预防事件:
-可疑的PowerShell下载
-通过脚本解释器生成的服务控制
—创建本地定时任务
-从异常目录执行进程
-Svchost产卵Cmd
-不寻常的亲子关系
—清除Windows事件日志
-Microsoft Windows Defender篡改
-通过丢失DLL的潜在权限升级
-通过不可信路径进行二进制伪装
### 预防
恶意文件防范 :
防止 GHOSTENGINE 文件
防止 Shellcode 注入
防止GHOSTENGINE shellcode
漏洞驱动文件创建防范(Windows.VulnDriver.ArPot和Windows.VulnDriver.IoBitUnlocker
防止 GHOSTENGINE 驱动程序
YARA
Elastic Security 创建了 YARA 规则来识别此活动。
所有观测数据的 ECS 和 STIX 格式均可下载。
本研究讨论了以下观测数据。
Observable | Type | Name | Reference |
---|---|---|---|
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753 |
SHA-256 | C:\Windows\Fonts\smartsscreen.exe |
GHOSTENGINE EDR controller module |
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1 |
SHA-256 | C:\Windows\System32\drivers\aswArPots.sys |
Avast vulnerable driver |
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8ae |
SHA-256 | C:\Windows\System32\drivers\IObitUnlockers.sys |
Iobit vulnerable driver |
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150 |
SHA-256 | C:\Windows\System32\oci.dll |
Update/Persistence module (64-bit) |
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7ab |
SHA-256 | C:\Windows\System32\oci.dll |
Update/Persistence module (32-bit) |
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03f |
SHA-256 | C:\Windows\Fonts\taskhostw.exe |
Miner client |
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1ca |
SHA-256 | C:\Windows\Fonts\config.json |
Miner configuration file |
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5 |
SHA-256 | C:\Windows\Fonts\WinRing0x64.sys |
Miner driver |
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22b |
SHA-256 | C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exe |
Initial stager |
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347e |
SHA-256 | backup.png |
GHOSTENGINE backdoor module |
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1 |
SHA-256 | get.png |
GHOSTENGINE loader |
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104 |
SHA-256 | kill.png |
GHOSTENGINE EDR termination module |
download.yrnvtklot[.]com |
domain | C2 server | |
111.90.158[.]40 |
ipv4-addr | C2 server | |
ftp.yrnvtklot[.]com |
domain | C2 server | |
93.95.225[.]137 |
ipv4-addr | C2 server | |
online.yrnvtklot[.]com |
domain | C2 server |
参考文献
上述研究中参考了以下文献: