Linux

服务器被植入挖矿进程,肯定不能留它过年

一 背景

腊月二十八,也就是今天,在例行安全巡检的过程中,收到机器异常报警提醒,登录机器发现有服务器上的异常进程syst3md,占用系统CPU资源非常高,初步诊断为挖矿进程。啥也不说,这肯定不能忍,肯定得清理干净,不然这年还咋过呀……

二 分析处理流程

1 发现异常进程

[root@prometheus ~]# top
top - 16:18:04 up 10 min,  2 users, load average: 5.11, 4.41, 2.43
Tasks: 299 total,   2 running, 297 sleeping,   0 stopped,   0 zombie
%Cpu0 : 99.0 us,  1.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1 : 99.0 us,  1.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2 : 99.0 us,  1.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3 : 98.7 us,  1.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  8010508 total,  1955104 free,  4140028 used,  1915376 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3509664 avail Mem
​
PID USER     PR NI   VIRT   RES   SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                      
6152 root      20   0 2900492   5524   4144 S 382.1  0.1  17:21.28 /usr/bin/.ICE-unix/.k/.file-2234A/syst3md                                                                                                    
2881 1000      20   0 1007268 224608   8436 S   1.3  2.8   0:05.32 /usr/sbin/victoriametrics --promscrape.config=/etc/victoriametrics-promscrape.yml --retentionPeriod=30d --storageDataPath=/srv/victoriametric+
2998 root      20   0 4534900 337360 198336 S   0.7  4.2   0:08.79 /usr/bin/clickhouse-server --config-file=/etc/clickhouse-server/config.xml                                                                    
1580 root      20   0 1549568  31252  11436 S   0.3  0.4   0:01.55 containerd --config /var/run/docker/containerd/containerd.toml --log-level info                                                              
2327 root      20   0  117436  14368   4096 S   0.3  0.2   0:01.19 /usr/bin/python2 /usr/bin/supervisord -n -c /etc/supervisord.conf                                                                            
2895 root      20   0 4984516  72332  24680 S   0.3  0.9   0:01.24 /usr/sbin/pmm-managed --victoriametrics-config=/etc/victoriametrics-promscrape.yml --victoriametrics-url=http://127.0.0.1:9090/prometheus --p+
3278 root      20   0  722348  18496   5156 S   0.3  0.2   0:01.77 /usr/local/percona/pmm2/exporters/postgres_exporter --auto-discover-databases --collect.custom_query.hr --collect.custom_query.hr.directory=/+
3294 root      20   0  727032  18848   6324 S   0.3  0.2   0:02.12 /usr/local/percona/pmm2/exporters/node_exporter --collector.bonding --collector.buddyinfo --collector.cpu --collector.diskstats --collector.e+
   1 root      20   0  125424   4016   2496 S   0.0  0.1   0:01.38 /usr/lib/systemd/systemd --switched-root --system --deserialize 21                                                                            
   2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [kthreadd]                                                                                                                                    
   3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 [ksoftirqd/0]

可以看到,进程号为6152的进程,把4核CPU的虚拟机打满了。其可执行程序是:/usr/bin/.ICE-unix/.k/.file-2234A/syst3md

2 手工杀死进程

[root@prometheus ~]# kill -9 6152

马上,又有该进程在运行了。更加确定,这一定是个异常的进程。

3 查看该进程的执行文件

[root@prometheus .file-2234A]# pwd
/usr/bin/.ICE-unix/.k/.file-2234A
[root@prometheus .file-2234A]# ll -al
total 12332
drwxr-xr-x 3 1000 1000     122 Jan 20 05:59 .
drwxrwxrwx 3 root root      25 Jan 20 05:59 ..
-rwxr-xr-x 1 1000 1000  922808 Aug 21  2020 1
-rwxr-xr-x 1 1000 1000  923336 Aug 21  2020 apachelogs
-rwxr-xr-x 1 root root    5572 Jan 20 05:59 config.json
-rwxr-xr-x 1 1000 1000  926112 Aug 21  2020 run
drwxr-xr-x 2 1000 1000      56 Dec 26  2022 .settings
-rwxr-xr-x 1 1000 1000  926272 Aug 21  2020 setup
-rwxr-xr-x 1 1000 1000     575 Sep  8  2020 status
-rwxr-xr-x 1 1000 1000 8903920 Jul  3  2023 syst3md
[root@prometheus .file-2234A]#

把异常进程还伪装成和systemd服务非常近似。

[root@prometheus .file-2234A]# rm -rf syst3md
rm: cannot remove 'syst3md': Permission denied
[root@prometheus .file-2234A]# file syst3md
syst3md: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=f9ca08913ec027001dc778aad11e983378225faf, stripped
[root@prometheus .file-2234A]#

并且还无法删除该执行文件。

4 查看定时任务

[root@prometheus .file-2234A]# crontab -l
* * * * * /usr/bin/.ICE-unix/.k/.file-2234A/1 > /dev/null <&1 2>&1 & disown
@monthly /usr/bin/.ICE-unix/.k/.file-2234A/1 > /dev/null <&1 2>&1 & disown
@reboot /usr/bin/.ICE-unix/.k/.file-2234A/apachelogs > /dev/null <&1 2>&1 & disown
[root@prometheus .file-2234A]# crontab -r
[root@prometheus .file-2234A]# crontab -l
no crontab for root
[root@prometheus .file-2234A]#

果不其然,有定时任务在重启该进程的服务。立即删除所有定时任务:crontab -r 。

5 再次杀死该异常进程

[root@prometheus .file-2234A]# kill -9 21466
[root@prometheus .file-2234A]#

发现压根儿不奏效,删除定时启动该异常进程的定时任务,且杀死异常进程之后,该异常又死灰复燃。

6 修改文件权限

[root@prometheus .file-2234A]# chattr -ia *
[root@prometheus .file-2234A]# ll
total 12332
-rwxr-xr-x 1 1000 1000  922808 Aug 21  2020 1
-rwxr-xr-x 1 1000 1000  923336 Aug 21  2020 apachelogs
-rwxr-xr-x 1 root root    5572 Jan 20 05:59 config.json
-rwxr-xr-x 1 1000 1000  926112 Aug 21  2020 run
-rwxr-xr-x 1 1000 1000  926272 Aug 21  2020 setup
-rwxr-xr-x 1 1000 1000     575 Sep  8  2020 status
-rwxr-xr-x 1 1000 1000 8903920 Jul  3  2023 syst3md
[root@prometheus .file-2234A]#

7 再杀死异常进程

依然无果,并且,定时任务又出现……

8 删除定时任务并重启

[root@prometheus .file-2234A]# crontab -l
* * * * * /usr/bin/.ICE-unix/.k/.file-2234A/1 > /dev/null <&1 2>&1 & disown
@monthly /usr/bin/.ICE-unix/.k/.file-2234A/1 > /dev/null <&1 2>&1 & disown
@reboot /usr/bin/.ICE-unix/.k/.file-2234A/apachelogs > /dev/null <&1 2>&1 & disown
[root@prometheus .file-2234A]# crontab -r && reboot

至此,重启之后,不再发现有异常进程。

三 补救措施

立即修改服务器root口令,然后修改普通用户口令,禁用不必要的用户。开启防火墙,并限制该机器的ssh登录。

四 问题复盘

先通过压缩打包该路径下的文件,并全部删除该异常文件。留存下来,日后回头深入复盘分析。

留言