Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

admin 2023年10月26日02:25:00评论145 views字数 9748阅读32分29秒阅读模式

此次SkidMap Rootkit挖矿窃密活动,关键样本为mldconfig和review,初始启动程序反复内存加载这两个恶意文件释放后续窃密木马、挖矿木马、Rootkit木马。

初始启动程序,通过篡改自启动服务的执行程序,使用多种持久化方式,比如,替换系统umount命令、替换agetty/ssh程序、劫持PAM认证等,在系统不同阶段,尝试内存加载mldconfig和review以及Rootkit,长期隐蔽驻留在主机中,难以完全清除。

样本分析

此次事件整体攻击流程,如下图:

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

此次事件涉及20多个恶意样本,按照攻击链路顺序,进行功能描述,如下表:

样本名称

样本功能简述

md5

b

判断系统是否存在gif,若不存在,则下载并执行gif

000916c60b2ab828ba8cea914c308999

gif

根据系统版本下载对应的gold*.tar.gz,密码解压后执行install.sh

daca61c12ad98f581d476906ab577c83

gold*.tar.gz

包含wtmpbotinstall.shclear.shlast.shrctl.sh各类脚本

/

wtmp

wtmp日志清理工具

6cb32495ffe0a7cb891abdf79718db65

install.sh

执行bot程序,关闭SELinux、删除监控相关服务

014f2c6170fe63c0ed98977dcf932fb4

bot

释放tty/infocmped/mldconfig/review/infocmped,infocmpedgif最先执行

b95c53001c2f640cb32ece98b12df22e

tty/infocmped

系统启动后,init进程第一个执行的子进程tty被替换,tty内存加载 mldconfig 或 review

342782b0e89998e0002212447940eecb

mldconfig/review

释放执行8个恶意文件与2Rootkit,替换sshscp命令,删除释放的恶意文件,清理痕迹

e4eb088d4f59b8ab20bdd1fe81425b3f

scp

发送已窃取的用户密码文件olog.h

2d19d9b9d3d29b7c53b13e908a802f64

ssh

窃取用户登录密码写入olog.h文件

a5887df19da4811536907278e0392a46

umount

执行umount命令时,替换agetty程序

9e4ac36f270c3f88bcfc4aac331cb927

agetty

用户ssh登录时,getty系统服务自动加载执行agettyagetty启动mldconfig/review

99c9efd23139bb90f57e88cfbf5bec46

biosdecoded

释放恶意pam_echo.sopam_sftp.so并设置共享库劫持

c332caa2debcc5c3348e3d6e17d9eadf

devlinked

释放gettexted挖矿程序

c4dc02c86672c35dd601c0dcba6110b9

matchpathcond

ssh后门木马

b7f9297eb94a1aa8ed17a4c928f93811

postcated

清理攻击痕迹

2ec0c3d8053737fff9469938ea9ebdb0

postmaped

发送已窃取的用户密码文件olog.h

080790043d14cba553714cef59771188

telinited

rctl远控木马

7898db004d056fe6ba5aeda3b2298275

gettexted

xmrig挖矿程序

a3ffb12011c9d0abb758037f2d8d82b1

kmeminfo.ko

kmeminfo.ko使用netfillter hook,过滤特定数据包

fe439c69aefe4913c02b046f5da722e9

mcpuinfo.ko

mcpuinfo.ko实现端口、文件、进程、内核模块等隐藏

452a30d5228325afe5fde87e8476f68e

rctl_ca.crt

rctl远控配置文件

f2c1edff2587e192a7462299db685704

pam_sftp.so

窃取用户登录密码写入ilog.h,设置后门密码FLVX**56$ab*%*Wx

4816fa970e66427d725a4d44727f9526

2.1 b

攻击开始通过Redis未授权漏洞,从z.shavsl[.]com下载b脚本并执行。b脚本检测系统中是否已经存在gif程序,若不存在,则从y.shavsl[.]com下载到/var/lib/gif并执行。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.2 gif

SkidMap目前存在两种主要的变体,目标分别为Debian/Ubuntu 和 RedHat/CentOS。

gif恶意文件根据不同的版本下发不同的攻击套件实施挖矿攻击。支持Linux发行版为:AlibabaAnolisopenEulerEulerOSSteamCentOSRedHat Rock

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

首先创建ssh 密钥文件/root/.ssh/authoried_keys和/root/.ssh/authoried_keys2。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtNw4sDrVPO1dELkT5ag+Wa5ewywgEGC6oQJ7ugP01cUJR+6UVnx6DipvZuqWFAkA9Zm7sJUrY6K430wFv82ZNWkbJOjcf1lhl4++njRt1vxwmTheSecwlDvk5fRf6086rm2HmmdvvsUsvSaowbDD23WNXfI3rAibluVhjNmqcFfLvB5DWO8E42zkq8jk1CWdM95D/mtDzCIrxbg/azBdfsXCU1hP8JvjAgDCkelc7NIesmT6ibG4uqeNg2IWiX/M0YG8T9hWoOHJasTl+Ub+gU34Imz21l9JJ66yQtD0GtgszFJBS4AelNSrVOjHEouR9Bx6AToB515nKJ7NEvGSz root@vps1

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

接下来检查 SELinux 的状态,禁用SELinux。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

下一步,若不是EulerOS,则删除旧版本的挖矿程序和持久化项。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

若是EulerOS系统则下载euler*.tar.gz攻击套件。下载对应版本的gold*.tar.gz (gold7或gold8或euler7或euler8),压缩包密码为openssl des3 -d -k Xo@2089@md。解压后执行install.sh,删除gold*落地文件,等install.sh执行完毕后,执行bot释放的infocmped恶意文件。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

验证已下载的*.tar.gz文件的md5值。 (gold7或gold8或euler7或euler8)

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.3 gold*.tar.gz

解压gold7.tar.gz。bin目录下包含bot和wtmp恶意文件,通过install.sh执行。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.4 bot

bot程序释放mldconf/review(本次攻击的核心恶意文件)、tty、umount、infocmped恶意文件,修改落地时间为2012-02-23 09:26:37。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.5 tty/infocmped

tty与infocmped的md5一致,该样本主要功能为,当系统启动后,init进程执行的被替换tty,tty程序内存加载mldconfig 或 review。

tty程序,在正常的tty功能结束后,多执行一个恶意函数。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

load_mldconfig_review函数执行流程:

首先,通过/var/run/postmaped信号,判断mldconfig 或 review是否正在运行,若 mldconfig 或 review 没有正在运行,利用 memfd_create 方式内存加载恶意文件,若失败,则利用 /dev/shm 共享内存的方式加载 mldconfig 或 review。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.6 mldconfig/review

mldconfig和review的md5一致,是此次攻击事件的核心恶意文件,mldconfig和review内存加载执行后,释放并加载其他恶意文件和Rootkit。

mldconfig和review执行流程,如下:

首先,设置程序版本为0.0.8.3以及环境变量。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

获取当前系统内核版本,为了加载对应版本的Rootkit,解除ssh、scp以及pam.d相关配置文件的不可修改属性,为了之后替换和修改这些文件。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

根据获取的内核版本对比后,生成不同版本的Rootkit的内核模块文件。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

不同的Rootkit,读取自身不同的数据段后写入/lib/udev/collectd/mcpuinfo.ko、

/lib/udev/collectd/kmeminfo.ko。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

判断当前系统中ssh和scp的md5值是否为a5887df19da4811536907278e0392a46和2d19d9b9d3d29b7c53b13e908a802f64。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

若不是,读取自身数据段,替换系统中的ssh和scp程序,修改其时间戳为系统中sshd的创建时间,修改落地文件权限为775。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

根据当前的时间获取随机字符串后缀,拼接出完整路径,文件名称格式为固定名称.五位随机字符,与取证时发现的恶意进程格式一致。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

修改落地文件权限为775。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

恶意文件落地时间为2012-02-23 09:26:37。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

/lib/udev/collectd/mcpuinfo.ko与/lib/udev/collectd/kmeminfo.ko内核模块生成后,首先会加载网络相关驱动,并卸载Linux监控调试驱动sysdig,最后加载Rootkit。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

若Rootkit加载阶段成功,则释放执行一系列恶意文件后删除(释放的恶意文件分析,详见2.3至2.11节),生成ns_last_pid、pid_max文件,记录上一次执行恶意文件的进程号,为了指定PID执行各类恶意文件进程。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

若Rootkit加载阶段失败,则清理痕迹,执行 /usr/bin/biosdecoded,删除落地的内核模块文件,设置 module.sig_enforce=0,关闭内核模块验证,当重启后再次尝试加载Rootkit。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

若Rootkit释放阶段失败,则清理痕迹,执行 /usr/bin/biosdecoded,直接重启。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.7 ssh/scp

ssh与scp由mldconfig/review释放,除了完成正常ssh功能,以外会使用凯撒密码,偏移为4的方式,将用户输入的用户名、远程主机地址、用户密码,加密后记录到/usr/include/olog.h文件中。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

scp用于传输窃取的密码文件/usr/include/olog.h。

2.8 biosdecoded

biosdecoded由mldconfig/review最先释放,此文件为不管Rootkit加载成功与否,最先执行的恶意文件。

biosdecoded执行后,首先判断是否存在pam_unix.so文件,该文件为Pam认证模块共享库文件,若两个路径下都不存在此文件,则退出。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

接着判断系统中是否存在md5为4816fa970e66427d725a4d44727f9526的pam_sftp.so,若不存在,则读取自身数据段,生成参考pam_userdb.so创建时间的恶意pam_sftp.so文件。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

修改/etc/pam.d/sshd、/etc/pam.d/su、/etc/pam.d/sudo配置文件。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

添加“auth sufficient   pam_sftp.so”配置,完成pam认证共享库劫持。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

修改/etc/pam.d的访问时间,参考/etc/pam.d/login,伪装为未修改前的时间。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.8.1 pam_sftp.so

pam_sftp.so由biosdecoded释放,完成pam认证模块共享库劫持。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

其中pam_sm_authenticate导出函数被篡改。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

恶意的pam_sm_authenticate函数会在系统发生认证时触发,首先判断认证密码是否为后门密码FLVX**56$ab*%*Wx,若不是,则记录由凯撒密码加密的用户密码到 /usr/include/ilog.h文件中,并修改ilog.h文件的落地时间为2016-01-14 21:00:22。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

ilog.h文件内容为用户名和加密后的密码。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

ilog.h文件落地时间为2016-01-14 21:00:22。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.9 devlinked

devlinked由mldconfig/review释放后执行,其主要功能为释放gettexted恶意文件,进行挖矿,判断gettexted挖矿进程是否运行。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

定期清理各类审计日志。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.9.1 gettexted

gettexted由devlinked释放后定期执行,gettexted为XMRig 6.18.0 built on Feb 12 2023 版本的挖矿程序。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

根据系统当前的状态,选择连接不同的矿池。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)   

2.10 postcated

postcated由mldconfig/review释放并执行,其主要功能为,对通过pam认证和ssh登录窃取密码写入的ilog.h文件内容,进行排序去重后生成olog.h。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

通过socket将排序去重后生成的olog.h文件发送到远程log.softgoldinformation.com服务器。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.11 postmaped

postmaped由mldconfig/review释放并执行,其主要功能为清理dmesg日志信息。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

sub_400410函数读取/var/log/messages,与agetty字符串及以后的一系列字符串,进行对比,若存在,则清理/var/log/messages文件内容。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

agetty偏移24字节为umount字符串。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

故存在以下字符串,则清理messages文件内容,如下表strings,这些字符串都与SkidMap挖矿活动使用恶意文件名称相关。

表strings

agetty
rctl_cert.pem
systemd-udeved
pam_auth.so
umount
rctl_priv.pem
systemd-udeved.service
systemd-runlevel
mount
rctl_ca.crt
logrotated
systemd-cgroup
mcpuinfo.ko
rctlcli.cfg
ldattached
systemd-deltaed
mzoneinfo.ko
infocmp
hardlinked
gettexted
kmeminfo.ko
selinuxdefconed
biosdecoded
dpkgsplit
systemd-firstload
selinuxexecconed
dhclientd
lsloginsd
postcated
postaliasd
systemd-reboot
plymouthed
devlinked
blockdeved
systemd-logined
partprobed
matchpathcond
lgroupdeleted
collectd
discovered
mountinfo
postmaped
ilog.h
mldconfig
telinited
getsebooled
olog.h
review
rctlconf
mkdir


2.12 telinited

telinited由mldconfig/review释放并执行,其主要功能为修改的rctl远控程序,默认使用/etc/collectd/rctlcli.cfg配置文件启动,使用/etc/collectd/certs/目录下的证书文件,进行通信认证。(https://github.com/ycsunjane/rctl)

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.12.1 rctl_ca.crt

rctl_ca.crt为rctl使用的ca证书,证书信息,如下:

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.13 matchpathcond

matchpathcond由mldconfig/review释放并执行,其主要功能为ssh后门木马。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

默认使用/etc/ssh/ssh_config.d/04-redhat.conf作为配置文件,允许root登录开启密码认证。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.14 kmeminfo.ko

内核模块kmeminfo.ko由mldconfig/review释放并加载,其主要功能为隐藏自身模块,并使用netfillter hook,过滤特定数据包。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.15 mcpuinfo.ko

内核模块mcpuinfo.ko由mldconfig/review释放并加载,其主要功能为隐藏自身模块,隐藏进程、文件、网络连接;阻止特定进程执行;阻止新的内核模块加载;过滤内核调试信息等。

具体劫持点和功能,如下图:

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

Rootkit禁止运行一系列监控或取证工具,如下deny_bin_file表:

表deny_bin_file

hostguard
tat_agent
AliHips
JCSAgentCore
hostwatch
bcm-agent
argusagent
ifrit-supervise
AliSecGuard
bcm-ii
AliYunDunUpdate
ifrit-agent
AliYunDun
bcm-si
AliNet
MonitorPlugin
aliyun-service
jdog-watchdog
assist_daemon
jdog-monitor
CmsGoAgent
jdog-monitor
YDService
jdog-kunlunmirror
YDLive
busybox
sgagent
unhide
sysdig_probe
csysdig
telescope

Rootkit过滤隐藏的一些文件,如下file_name表:

表file_name

mcpuinfo.ko
rctl_cert.pem
logrotated
getsebooled
mzoneinfo.ko
rctl_priv.pem
ldattached
systemd-runlevel
kmeminfo.ko
rctl_ca.crt
hardlinked
systemd-cgroup
systemd-firstload
rctlcli.cfg
biosdecoded
systemd-deltaed
postcated
infocmp
dhclientd
gettexted
devlinked
selinuxdefconed
systemd-reboot
dpkgsplit
matchpathcond
selinuxexecconed
systemd-logined
lsloginsd
mountinfo
postaliasd
collectd
plymouthed
telinited
blockdeved
ilog.h
partprobed
systemd-udeved
lgroupdeleted
olog.h
discovered
mldconfig
postmaped
rctlconf
systemd-udeved.service

2.16 umount

umount除了正常的umount命令功能以外,多执行一个恶意函数,用于释放agetty恶意文件,实现系统持久化控制。

读取自身数据段,释放/sbin/agetty恶意文件,设置权限775

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

修改agetty恶意文件落地时间为2012-02-23 09:26:37。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

2.17 agetty

agetty由umount释放并替换系统正常的agetty文件,其主要功能为在用户ssh登录时执行,agetty除了正常的ssh登录认证以外,多执行一个恶意函数。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

读取 /var/run/postmaped 判断是否已经执行 mldconfig 或 review,若未执行,则利用memfd或shm的方式,内存加载mldconfig 或 review。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

4 SkidMap挖矿处置

SkidMap_Clear_ver3.sh替换tty、agetty、ssh、scp为正常的程序文件,删除恶意文件,修改auditd服务配置文件,启动kdump服务、auditd审计服务后重启。

重启后,系统没有Rootkit植入情况,挖矿和窃密木马没有再次启动。

Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

5 总结

SkidMap挖矿家族演变至今,攻击方式越来越复杂,对抗程度越来越激烈。

启动程序互相调用,篡改大量系统程序,加载Rootkit,内存加载恶意文件、删除落地文件等手段,阻碍事件响应,响应过程中疏忽任意细节,都会导致无法完全清除。

IOC

mail.shenjinai.top

domain

y.shavsl.com

domain

z.shavsl.com

domain

45.140.169.127

ip

45.89.230.225

ip

tty

342782b0e89998e0002212447940eecb

infocmped

342782b0e89998e0002212447940eecb

mldconfig

e4eb088d4f59b8ab20bdd1fe81425b3f

review

e4eb088d4f59b8ab20bdd1fe81425b3f

scp

2d19d9b9d3d29b7c53b13e908a802f64

ssh

a5887df19da4811536907278e0392a46

umount

9e4ac36f270c3f88bcfc4aac331cb927

agetty

99c9efd23139bb90f57e88cfbf5bec46

biosdecoded.sivxz

c332caa2debcc5c3348e3d6e17d9eadf

devlinked.lnnoj

c4dc02c86672c35dd601c0dcba6110b9

matchpathcond.kzsqk

b7f9297eb94a1aa8ed17a4c928f93811

postcated.mhcpw

2ec0c3d8053737fff9469938ea9ebdb0

postmaped.yjpef

080790043d14cba553714cef59771188

telinited.fyajh

7898db004d056fe6ba5aeda3b2298275

gettexted

a3ffb12011c9d0abb758037f2d8d82b1

kmeminfo.ko

fe439c69aefe4913c02b046f5da722e9

mcpuinfo.ko

452a30d5228325afe5fde87e8476f68e

rctl_ca.crt

f2c1edff2587e192a7462299db685704

pam_sftp.so

4816fa970e66427d725a4d44727f9526

gif

daca61c12ad98f581d476906ab577c83

bot

b95c53001c2f640cb32ece98b12df22e

wtmp

6cb32495ffe0a7cb891abdf79718db65

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtNw4sDrVPO1dELkT5ag+Wa5ewywgEGC6oQJ7ugP01cUJR+6UVnx6DipvZuqWFAkA9Zm7sJUrY6K430wFv82ZNWkbJOjcf1lhl4++njRt1vxwmTheSecwlDvk5fRf6086rm2HmmdvvsUsvSaowbDD23WNXfI3rAibluVhjNmqcFfLvB5DWO8E42zkq8jk1CWdM95D/mtDzCIrxbg/azBdfsXCU1hP8JvjAgDCkelc7NIesmT6ibG4uqeNg2IWiX/M0YG8T9hWoOHJasTl+Ub+gU34Imz21l9JJ66yQtD0GtgszFJBS4AelNSrVOjHEouR9Bx6AToB515nKJ7NEvGSz root@vps1

ssh key


原文始发于微信公众号(TahirSec):Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月26日02:25:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux | 揭秘SkidMap Rootkit复杂挖矿活动(二)http://cn-sec.com/archives/2139266.html

发表评论

匿名网友 填写信息