“匿铲”挖矿木马活动分析
时间 : 2024年05月10日 来源: 安天CERT
1.概述
近期,安天CERT通过网络安全监测发现了一起新的挖矿木马攻击事件,该挖矿木马从2023年11月开始出现,期间多次升级组件,目前版本为3.0。截止到发稿前,该挖矿木马攻击事件持续活跃,感染量呈上升态势。主要特点是隐蔽性强、反分析、DLL劫持后门和shellcode注入等,因此安天CERT将该挖矿木马命名为“匿铲”。
在此次攻击活动中,攻击者利用了两个比较新颖的技术以对抗反病毒软件,第一个技术是滥用反病毒软件的旧版本内核驱动程序中的功能来结束反病毒软件和EDR,这个技术通过一个主体的PowerShell脚本、一个独立的PowerShell脚本和一个控制器(内存加载的小型可执行文件)来完成,主体的PowerShell脚本用于下载并安装反病毒软件的旧版本内核驱动程序,独立的PowerShell脚本用于解密并内存加载控制器,控制器用来控制内核驱动程序。虽然被滥用的旧版本内核驱动程序早已更新,但目前仍能被非法利用并有效结束大多数反病毒软件。第二个技术是利用MSDTC服务加载后门DLL,实现自启动后门,达到持久化的目的。这个技术利用了MSDTC服务中MTxOCI组件的机制,在开启MSDTC服务后,该组件会搜索oci.dll,默认情况下Windows系统不包含oci.dll。攻击者会下载后门DLL重命名为oci.dll并放在指定目录下,通过PowerShell脚本中的命令创建MSDTC服务,这样该服务会加载oci.dll后门,形成持久化操作。
经验证,安天智甲终端防御系统不会被反病毒软件的旧版本内核驱动程序所阻断,也能够对该后门DLL的有效查杀。
2.攻击流程
“匿铲”挖矿木马首先会从放马服务器上下载名为“get.png”的PowerShell脚本,解码后执行哈希验证、创建计划任务、禁用系统自带杀毒软件和创建服务等操作。之后会下载“kill.png”脚本和“delete.png”、“kill(1).png”两个压缩文件,脚本解码出shellcode代码,shellcode代码经过解密得到控制器(一个可执行文件)并注入到powershell.exe进程中,两个压缩文件经过解压缩得到反病毒厂商的旧版本内核驱动程序“aswArPots.sys”和“IObitUnlockers.sys”,由控制器调用,终止杀毒软件和EDR程序等。还会根据受害主机自身系统型号下载对应的“86/64.png”的压缩文件,解压缩后会得到oci.dll文件,通过MSDTC服务调用实现DLL劫持后门。在“get.png”脚本中还看到了下载“backup.png”脚本的地址,但下载函数还未实现,可能后续版本会加,该脚本主要功能是发送心跳接收命令等。最后“get.png”脚本会下载“smartsscreen.exe”程序,该程序会下载挖矿程序及其组件进行挖矿。
图2-1 攻击流程图
3.样本梳理与功能分析
3.1 样本梳理
针对该挖矿木马攻击,对其样本及功能进行梳理,如下表所示:
表3-1 样本及功能梳理
样本名 |
落地名 |
样本路径 |
功能 |
get.png |
不落地 |
内存中 |
初始投放载荷,下载后续样本,持久化 |
backup.png |
无 |
无 |
初始投放载荷没有定义下载该样本,推测后续增加 |
run.bat |
run.bat |
C:\Users\Public |
powershell命令下载get.png |
kill.png |
不落地 |
powershell.exe内存中 |
终止杀毒软件和EDR等进程 |
kill.png(1) |
aswArPots.sys |
C:\Windows\System32\drivers |
|
delete.png |
IObitUnlockers.sys |
C:\Windows\System32\drivers |
强制删除文件和进程 |
86.png/64.png |
oci.dll |
C:\Windows\System32 |
DLL劫持后门 |
smartsscreen.png |
smartsscreen.exe |
C:\Windows\Fonts |
下载挖矿程序等 |
curl.png |
curl.exe |
C:\Windows\Fonts |
curl官方文件 |
config.json |
config.json |
C:\Windows\Fonts |
挖矿配置文件 |
taskhostw.png |
taskhostw.exe |
C:\Windows\Fonts |
XMRig挖矿程序 |
WinRing0x64/32.png |
WinRing0x64/32.sys |
C:\Windows\Fonts |
挖矿驱动程序 |
config.txt |
不落地 |
无 |
包含版本信息及样本哈希 |
表3-2 挖矿程序中的矿池地址和钱包地址
矿池地址 |
钱包地址 |
111.90.143.130:80 |
ZEPHYR2ty7pYE3wUdjLn1QKsFLiatXdMZHZzQSJToaoFM1LvWPzuqsvdtLzXRRk2hhFTxLCvLnAr4XJBCvrVfUeP8F6XC7QLgza47 |
93.95.228.47:80 |
|
zephyr.herominers.com:1123 |
3.2 样本功能分析
3.2.1 核心脚本模块分析(get.png)
利用系统自带的工具删除指定计划任务、结束指定进程和停止指定服务,疑似清理与其存在竞争关系的挖矿木马持久化操作。
图3-1 删除计划任务等
遍历所有可能的驱动器字母(从A到Z),检查每个驱动器是否有足够的可用空间。如果找到符合条件的驱动器,则返回该驱动器的名称,如果遍历完所有驱动器都没有找到,则返回空。
图3-2 遍历驱动器
清理C:\Windows\Installer目录中的空间,查找该目录中最大的文件。搜索C:驱动器根目录和除了一些系统目录之外的所有子目录中具有特定扩展名(.exe、.msi、.iso、.7z、.rar、.zip)的最大文件。如果找到了最大的文件,将其删除,以便释放空间。
图3-3 释放空间
定义了所需的空间量为10MB,如果找到了一个合适的驱动器,函数将尝试创建一个隐藏的目录\$RECYCLE.BIN\Fonts来保存文件。
图3-4 下载文件存放位置
尝试通过DoH服务获取域名对应的IP地址,如果失败,则尝试使用传统的DNS查询方法。如果两种方法都失败,则使用备份的IP地址。目的是确保可以获取到用于HTTP和FTP下载的域名的IP地址。
图3-5 获取域名对应IP地址
通过字符串替换操作来更新配置信息,以确保配置文件中的下载地址与实际的下载服务器地址一致。添加一个时间戳参数,通常用于确保每次请求都会加载最新的内容,而不是从缓存中加载。将HTTP地址转换为FTP地址,并移除了可能存在的时间戳参数。
图3-6 更新配置信息
创建多个计划任务,分别执行后续下载到的载荷。计划任务名分别为“OneDriveCloudSync”、“DefaultBrowserUpdate”、“OneDriveCloudBackup”,分别对应执行更新程序、自身文件、smartsscrren.exe。
图3-7 创建计划任务
清理自身旧的进程。
图3-8 清理自身旧的进程
从远程服务器获取配置信息,并确保配置信息中的某些字符串哈希值存在。如果这些字符串存在,函数将停止循环,并继续执行后续的脚本操作。如果字符串不存在,尝试使用FTP协议再次下载配置信息。
图3-9 验证配置信息是否一致
配置信息如下,其中包括curl、xm、xmc、xms、smart、scan、ms86、ms64、dkill和ddelete字符串。
图3-10 配置信息
禁用Windows Defender的实时监控,关闭rpc服务,清理系统的垃圾文件和日志等。
图3-11 禁用系统自带杀毒软件
从指定的URL下载文件并保存到C:\Windows\System32\drivers,创建并启动名为aswArPots和IObitUnlockers的服务。
图3-12 创建服务
停止并重启MSDTC服务,将下载的适用于主机系统的x86.png或x64.png重命名为oci.dll并保存在C:\Windows\System32中,通过MSDTC服务实现DLL劫持后门。
图3-13 DLL劫持后门
最后下载并运行多个后续组件,具体如图所示。
图3-14 下载后续组件
3.2.2 远控模块分析(backup.png)
该脚本用于将日期时间、受害者主机名进行2次BASE编码并回传至攻击者服务器,不断地向服务器发送心跳信号,接收命令,执行这些命令,并将命令的输出结果发送回服务器。
图3-15 发送心跳包等至服务器
3.2.3 对抗模块分析(kill.png)
该脚本实际为压缩和BASE64编码后的PowerShell脚本,该脚本会解密多层载荷,并在最后将一段shellcode代码注入到powershell.exe进程中。
图3-16 进程注入
shellcode会解密内嵌的一段PE再次实现内存加载。最终加载的PE数据为白名单驱动利用模块,该模块会伪装白名单通信的驱动协议,操纵底层驱动利用系统权限删除、终止指定的进程或文件,大部分进程为杀毒软件、防火墙、沙箱等安全软件的核心进程。该可执行文件旨在整理正在运行的进程列表,然后将它们与Anti-Virus和EDR进程名称的CRC64校验和值的混淆硬编码列表进行比较。如果任何进程名称与硬编码列表中的条目直接关联,则会将I/O控制(IOCTL)代码发送到Avast驱动程序,从而导致进程终止。部分被列入攻击者处理名单的进程名如下:
图3-17 反杀毒软件驱动
3.2.4 自我更新模块分析(86/64.png)
msdtc目录下具有两个文件:“86.png”、“64.png”。分别对应32位环境与64位环境,两个样本在代码结构方面完全一致,仅在编译时选择的目标系统位数不同。该文件仅负责从攻击者服务器重新下载“get.png”并执行,用于自我更新。
图3-18 自我更新下载get.png
3.2.5 挖矿组件下载器模块分析(smartsscreen.exe)
该文件为挖矿组件的下载模块,由Golang语言开发,运行后会访问攻击者服务器下载挖矿各个组件等。
图3-19 下载后续挖矿组件
该组件运行后会访问攻击者服务器下载“config.txt”、“curl.png”用于校验挖矿组件HASH与下载挖矿组件。随后分别访问下载XMRig官方开源挖矿组件。其中“taskhostw.png”为挖矿程序,“config.json”为挖矿配置文件,“WinRing0x64.png”为XMRig运行所需驱动。
图3-20 下载挖矿组件网络数据
4.挖矿木马落地排查与清除方案
4.1 挖矿木马落地识别
1.计划任务
计划任务名 |
对应样本路径 |
DefaultBrowserUpdate |
C:\Users\Public\run.bat |
OneDriveCloudBackup |
cmd.exe /c start
C:\Windows\Fonts\smartsscreen.exe |
OneDriveCloudSync |
cmd.exe
/c C:\Windows\System32\sc.exe start msdtc |
2.文件
文件名 |
路径 |
smartsscreen.exe |
C:\Windows\Fonts |
taskhostw.exe |
|
WinRing0x64/32.sys |
|
curl.exe |
|
config.json |
|
run.bat |
C:\Users\Public\run.bat |
oci.dll |
C:\Windows\System32 |
aswArPots.sys |
C:\Windows\System32\drivers |
IObitUnlockers.sys |
3.服务
服务名 |
对应注册表 |
MSDTC |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC |
4.进程
进程名 |
路径 |
powershell.exe |
内存执行 |
smartsscreen.exe |
C:\Windows\Fonts |
taskhostw.exe |
5.网络
IP |
功能 |
111.90.158.40 |
挂马服务器 |
111.90.143.130:80 |
矿池地址 |
93.95.228.47:80 |
4.2 清除方案
建议采用安天系统安全内核分析工具(ATool)*免费版(下载地址:https://vs2.antiy.cn/)进行检测查杀,首先删除三个计划任务,计划任务名为DefaultBrowserUpdate、OneDriveCloudBackup和OneDriveCloudSync。
图4-1 删除计划任务
结束相应进程,smartsscreen.exe、taskhostw.exe和powershell.exe。
图4-2 结束相应进程
删除挖矿程序等对应目录中的样本。
图4-3 删除对应目录样本
删除对应的驱动文件,aswArPots.sys和IObitUnlockers.sys。重启MSDTC服务,如不是自身创建,可对应删除该服务。
图4-4 删除对应驱动文件
5.事件对应的ATT&CK映射图谱
针对攻击者投放挖矿木马的完整过程,安天梳理本次攻击事件对应的ATT&CK映射图谱如下图所示。
图5-1 事件对应的ATT&CK映射图谱
表5-1 事件对应的ATT&CK技术行为描述表
ATT&CK阶段/类别 |
具体行为 |
注释 |
执行 |
利用命令和脚本解释器 |
使用PowerShell脚本命令 |
持久化 |
执行流程劫持 |
利用oci.dll劫持 |
利用计划任务/工作 |
创建计划任务 |
|
防御规避 |
进程注入 |
shellcode注入到powershell.exe中 |
修改注册表 |
修改注册表 |
|
反混淆/解码文件或信息 |
反混淆PowerShell命令 |
|
使用Rootkit |
aswArPots.sys反Rootkit监控 |
|
削弱防御机制 |
禁用Windows Defender |
|
发现 |
发现文件和目录 |
查找指定目录最大文件 |
发现系统时间 |
获取系统时间 |
|
命令与控制 |
编码数据 |
回传编码数据 |
影响 |
资源劫持 |
占用CPU资源 |
6.防护建议
针对挖矿攻击,安天建议企业采取如下防护措施:
1. 安装终端防护:安装反病毒软件,针对不同平台建议安装安天智甲终端防御系统Windows/Linux版本;
2. 加强SSH口令强度:避免使用弱口令,建议使用16位或更长的口令,包括大小写字母、数字和符号在内的组合,同时避免多个服务器使用相同口令;
3. 及时更新补丁:建议开启自动更新功能安装系统补丁,服务器应及时更新系统补丁;
4. 及时更新第三方应用补丁:建议及时更新第三方应用如Redis等应用程序补丁;
5. 开启日志:开启关键日志收集功能(安全日志、系统日志、错误日志、访问日志、传输日志和Cookie日志),为安全事件的追踪溯源提供基础;
6. 主机加固:对系统进行渗透测试及安全加固;
7. 部署入侵检测系统(IDS):部署流量监控类软件或设备,便于对恶意代码的发现与追踪溯源。安天探海威胁检测系统(PTD)以网络流量为检测分析对象,能精准检测出已知海量恶意代码和网络攻击活动,有效发现网络可疑行为、资产和各类未知威胁;
8. 安天服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查;安天7*24小时服务热线:400-840-9234。
部署企业级终端防御系统,实时检测防护即时通讯软件接收的不明文件。安天智甲终端防御系统采用安天下一代威胁检测引擎检测不明来源文件,通过内核级主动防御能力阻止其落地和运行。
图6-1 安天智甲终端防御系统有效防护
7.IoCs
IoCs |
111.90.158.40 |
93.95.225.137 |
111.90.143.130 |
93.95.228.47 |
download.yrnvtklot.com |
ftp.yrnvtklot.com |
online.yrnvtklot.com |
zephyr.herominers.com |
hxxp://111.90.158.40/config.txt |
hxxp://111.90.158.40/curl.png |
hxxp://111.90.158.40/kill.png |
hxxp://111.90.158.40/smartsscreen.png |
hxxp://111.90.158.40/get.png |
hxxp://111.90.158.40/msdtc/86.png |
hxxp://111.90.158.40/msdtc/64.png |
hxxp://111.90.158.40/drives/kill.png |
hxxp://111.90.158.40/drives/delete.png |
hxxp://111.90.158.40/backup.png |
hxxp://111.90.158.40/config.json |
hxxp://111.90.158.40/info.txt |
hxxp://111.90.158.40/taskhostw.png |
hxxp://111.90.158.40/WinRing0x64.png |
hxxp://93.95.225.137/update |
hxxp://93.95.225.137/result |
AE465AF2287D24CCDEEC8035A1E3F159 |
B9E37DD582A6FF810672F9B33865C217 |
851284B85ACA7D8E966F3F0DCF9AA33B |
C3834835873B9D7D6B9A2436F748AA51 |
DC6CD17105168171C27FB167239636E1 |
8D31AE369E67EE0B412D889299F2B4B2 |
AA8FFE5D6495AFB8515E1B7C27A7A4AC |
271520C83F847743AA6EACCD1B949797 |
F6F15D525D1C893B996A01E1EA5CCC63 |
1801337FF3C1CBEC9B97ED0F7B79AC0B |