服务器挖矿病毒的解决方案

记录一次解决挖矿病毒的过程(进程:susupdate,networkservice)

昨天晚上突然收到阿里云的警报提醒,服务器又被攻击,开始还没当回事,晚上测试的时候发现服务器变的异常卡顿。然后进入后台查看,发现CPU直接飙升到100%.........

service011

1.找出病毒进程

我们使用top命令查看进程运行情况:

(由于当天晚上已经解决,但是忘记截图保存,下面部分图片来自于网络)

se02se0

找到其中CPU占有率较高的进程,可能不同的环境对应的进程名称不同。

  • 分析病毒的执行脚本
# update.sh文件:
# 由Redis侵入,将本机密码set到redis中,dump.rdb文件修改为authorized_keys,然后把文件的目录设置到/root/.ssh下,保证其可以使用 SSH 登录到服务器。
config.json (挖矿配置)、
sysupdate (XMR 挖矿软件)、
update.sh (病毒主脚本)、
networkservice(scanner扫描并入侵其他的主机)、
sysguard(watchdog 用于监控并保证病毒的正常运行以及更新)

2.根据进程号找到运行文件的位置

ls -l proc/{进程号}/exe

es03

在我的服务器下,其运行文件均存放于/etc目录下的。

3.删除病毒进程

kill -9 进程号

4.删除病毒文件

在步骤2中,我们已经找到了病毒文件所在的地方,但是如果直接使用rm -rm 可能显示拒绝操作,没有权限。

4.1 文件无法正常删除如何解决?

  • 问题背景

有时候需要修改文件的权限,但是即使在root下使用chmod命令也不一定能成功更改,有时也会遇到Operation not permitted的问题。

一般,Linux下root用户的权限是最大 (Linux下UID数值越小的用户,权限越大,可以看到最小值为0,即root用户)

但是在使用chmod改变文件权限的时候,即使在root用户下,也会遇到operation not permitted的问题。

其实chmod的底层实现是chattr命令,用此命的功能更为强大,甚至可以锁定文件,即使root用户也操作不了此文件。

  • 解决办法

lsattr可用来查看文件的属性:

lsattr filename

如果文件属性中有i与a,或者其中一个,使用chattr命令去掉:

chattr -ia filename

对病毒文件进行删除:

chattr -i sysupdate
rm -f sysupdate 
chattr -i sysupdates
rm -f sysupdates
chattr -i networkservice
rm -f networkservice
chattr -i sysguard
rm -f sysguard
chattr -i update.sh
rm -f update.sh
chattr -i config.json
rm -f config.json

5.删除定时任务(重要!!)

这一步一定要做,我第一次删除后忘记定时任务因为权限问题,没删掉,然后隔一段时间又重启了。

crontab -l   查看定时任务
crontab -r   删除所有定时任务

也可以直接进入目录/var/spool/cron下查看定时程序:

se04

这一步直接使用rm -f或者corntab -r可能显示:cannot remove ‘root’: Permission denied

由于此时我已经是root用户,然后使用ll命令查看该定时人物的权限,果然无法修改。

  • 尝试使用chomd修改权限

首先使用chattr -ia filename命令将文件的权限去掉;

直接使用chmod 777 filename,修改完毕后已经得到了权限,但是删除仍然报错。

  • 需要对/var/spool/下的文件修改权限
# 清除crontab
cd /var/spool/
chattr -i cron/
crontab -r

6.修改/root/.ssh/authorized_keys文件

攻击者很聪明,修改了我的authorized_keys文件,可以直接ssh到我的主机,给自己留了后门。

cd /root/.ssh/
chattr -ia authorized_keys
rm -rf authorized_keys

7.修复SElinux和wget、curl指令

感觉真心无语了,把服务器的wget和curl指令给改了,改为了wge和cur。

  • 修改wget和curl
mv /bin/wge /bin/wget
mv /bin/cur /bin/curl
mv /usr/bin/wge /usr/bin/wget
mv /usr/bin/cur /usr/bin/curl
  • 修复SELinux

病毒脚本首先就会尝试关闭SELinux子系统,我们可以使用getenforce命令查看SELinux状态。

如果你想要重新打开,可以修改/etc/selinux/config文件将SELINUX=disabled改为SELINUX=enforcing,然后重新启动服务器。

8.被攻击的原因

病毒的问题是得到了解决,但是具体是啥东西造成的呢?

居然是Redis!!!

在昨天安装了redis服务后,忘记开启登录密码,唉。

大概原理分析:

1.redis没有做任何安全措施,直接暴露在公网,任何redis客户端都可以直接连接。

2.被恶意的连接连接上后,在他的机器上生成ssh秘钥,然后set到redis中,最后使用redis的config命令,将默认RDB方式出来的dump.rdb文件修改为authorized_keys,然后把文件的目录设置到/root/.ssh下。

3.这样一来,就非常危险了,攻击者可以直接ssh到你的linux主机,接下来,root账户,为所欲为。被挖矿也就不稀奇了。

  • 设置redis的登录密码
vi /usr/local/redis/bin/redis.conf

将requirepass yourpassword前的注释去掉,其中yourpassword是你所设置的密码。

posted @ 2021-03-11 17:20  coderxz  阅读(2017)  评论(1编辑  收藏  举报