隐藏挖矿木马rcu_tasked的查杀

1. 前言

本来没打算写这篇博客的,因为本身自己对于linux就属于一知半解,但奈何类似的问题遇到了好几次,而且彼此之间间隔时间比较长——长到恰好忘记了上次是如何排除相关问题的。

虽然每次排查都进行了相关的留痕,但奈何相关知识没有连成线,始终不成体系,造成每次基于是从零开始。

痛定思痛之下,这次借着问题的解决,总结下相关的关键点,为之后的再见减轻些心理压力。

2. 排查

2.1 找出导致问题的进程

服务器中了挖矿木马之后的最直接的表现就是CPU被打满,我们首先要做的是把这个进程找出来。

主要涉及到的命令

# 按照CPU使用率排序
top

# 查看找进程信息
ps

# 占用CPU最多的十个进程
ps -aux --sort=-pcpu|head -10


这里可能会存在的一个问题是“明明服务器的CPU已经被打满了,但是top命令的返回信息里并没有明显占用CPU的进程”?

针对这个问题,可以使用busybox来作进一步的努力:

# 安装
wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
mv busybox /usr/bin/busybox
chmod +x /usr/bin/busybox

# 查看进程信息 (我遇到的类似问题就是使用这种方式定位的)
busybox top

# 查看帮助信息
busybox --help

2.2 定位进程详细信息

相关Linux命令如下:

# 通过 ll /proc/PID 查到进程的绝对路径等信息
ll /proc/PID

2.3 阻止进程重启

找到进程之后,使用kill -9 PID杀掉它只能解决一时,100%的情况是该木马会进行进程守护的操作,我们需要破掉这一层来彻底解决问题。

相关linux命令

######################################## 1. 排查
########### 查看 crontab
#	a. 进程守护的方式之一是使用定时任务
#	b. 如果返回值里有异常的任务, 接下来就是删除掉任务以及相应的文件
crontab -l

########### 查看linux service
#	a. 可能出现"crontab没有计划, 但木马进程依然会重启"的现象
#	b. 这个时候就需要再排查一下linux运行的服务了

# 进入目录
cd /lib/systemd/system

# 使用 ll 命令查看最新服务文件, 返回结果将按照由旧到新的顺序排列
# 	我这里的异常服务文件名为 myservice.service
ll -rt

2.4 重启服务器

完成以上"删除木马","阻止重启"操作之后,最好是重启一次服务

reboot

3. 加固系统

重启完毕,恢复正常的系统,除了常规的升级系统、修改密码、禁用端口、打安全补丁之外,针对性地进行一些安全加固也是很有必要的。


############### 使用 chattr 命令禁止文件/文件夹被修改
# 锁定目录,不能让新木马文件产生
chmod 000 /usr/bin/nshbsjdy
chattr +i /usr/bin/nshbsjdy```

4. 其他相关排查手段

在排查问题的过程中,上下文信息肯定是多多益善。

############################### 使用 netstat 查看一下程序端口占用
netstat -anp | grep ESTAB

############################### 查看网卡流经的流量
# 显示名为eth0的网卡接口的详细信息,包括流入和流出的数据量。
ifconfig eth0

# 显示名为eth0的网卡接口的详细信息,包括流入和流出的数据量。
ip -s link show eth0

# 无论是使用ifconfig还是ip命令,您都可以通过查看RX bytes和TX bytes字段来获取流入和流出的数据量。这些字段显示的是以字节为单位的数据量。

# 返回值解读
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 20000  bytes 12345678 (12.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15000  bytes 87654321 (87.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在上述输出中,您可以通过以下字段来解读网卡流量信息:

1. RX packets:表示接收到的数据包的数量。
2. RX bytes:表示接收到的数据量(以字节为单位)。
3. TX packets:表示发送的数据包的数量。
4. TX bytes:表示发送的数据量(以字节为单位)。

通过查看这些字段,您可以了解有关特定网卡接口的流入和流出数据量的信息。例如,在上述示例中,接收到的数据量为 12.3 MiB,发送的数据量为 87.6 MiB。

请注意,输出中的数据量字段(如bytes)通常以字节为单位,并且可能会在输出中使用不同的单位(如字节、千字节、兆字节)。需要根据具体情况进行单位转换和解读。


############################### 查看Linux系统日志

# /var/log/secure 是一个系统日志文件,它记录了与系统安全相关的事件和日志信息。这个文件通常存在于基于Linux的操作系统中,如CentOS、Red Hat、Fedora等。
# 一般来说你会看到很多来自不同ip的登录意图。
cat /var/log/secure

# /var/log/ 目录是存储日志文件的默认位置,它包含了许多不同类型的日志文件。以下是一些常见的 /var/log/ 目录下的日志文件类型:
1. auth.log:用于记录用户认证和授权相关的事件和信息,如登录和注销、sudo授权等。
2. syslog:系统日志文件,记录了系统级别的事件和信息,包括内核消息、系统启动、服务启动和停止等。
3. messages:类似于 syslog,记录了系统的一般消息和事件。
4. kern.log:记录了与内核相关的事件和消息,如内核模块加载和卸载、硬件故障等。
5. daemon.log:记录了系统上运行的后台守护进程的事件和消息。
7. secure:类似于 auth.log,记录了与系统安全相关的事件和信息,如登录失败尝试、文件权限变更等。
8. boot.log:记录了系统启动期间的事件和消息,包括加载的驱动程序、启动的服务等。

除了上述常见的日志文件,还有许多其他类型的日志文件可能存在于 /var/log/ 目录中,这些文件的名称和功能可能因不同的操作系统和配置而有所不同。在 Linux 系统中,日志文件通常以 .log 或 .log.* 的形式存在,可以根据名称和内容来判断它们的用途。

5. 相关

  1. 记一次阿里云被挖矿处理记录 – 推荐
  2. 一次Linux服务器被入侵和删除木马程序的经历 – 推荐
  3. 腾讯云 - 挖矿木马自助清理手册
  4. 公司服务器被入侵植入挖矿软件,如何追查?

猜你喜欢

转载自blog.csdn.net/lqzkcx3/article/details/132227662
RCU