原本有一台服务器安全组是暴露在公网上的。。。但是很多次出现了挖矿程序,干又干不掉,每次都是等阿里云提醒,然后删目录干进程,但是一直没有彻底的解决。半年前把安全组重新设置,只开放了需要用的端口之后,最近又挖矿又频繁起来了。

以前找的很多方法,定时任务都被禁了也不管用,今天看到一篇文章发现有可能是在Redis里面,然后排查该服务器上果然有一个没设置密码的Redis,进去一看,果然有几个很诡异的值。

又见挖矿程序_挖矿程序

值对应的网页是打不开的,但是地址肯定不是业务在用的。

又见挖矿程序_挖矿程序_02

于是把Redis里面的值刷掉,Redis端口没有暴露在公网上的,所以这次再继续观察是不是成功把挖矿程序的后门给清除了。。。


附原来定位步骤:

基线测试环境CPU激增,收到了告警邮件存在挖矿程序,之前的处理方式都是以干掉进程为主,但是进程被干掉后立马就重新启了一个新的进程,于是记录一下这次的处理操作便于后续跟踪。


1、定位异常进程 top -m

云监控里显示的异常进程所在路径 /home/qprise/.arthas/lib/3.1.1/arthas/tfh0q5/kthreaddk (deleted)

这里进入.arthas 删除了里面的文件

2、根据进程 ID 确认控制端 IP 地址的具体位置,可以定位到 xxx.145.227.21 显示是个乌克兰的地址

netstat -antlp |grep 17696

3、查找进程目录

linux 中有个进程目录,proc目录 ll /proc/pid(参数)/exe

又见挖矿程序_挖矿程序_03

根据对应的exe地址可以找到连接到的路径,这边测试环境显示异常进程的exe文件是链接到了/home/arm_enterprise/.cache/xxxx路径下,于是进入/home/arm_enterprise/.cache/查看,文件已经不存在,删除了.cache 目录下的内容。


4、查看异常进程的启动用户的 .ssh 认证文件 cat ~/.ssh/authorized_keys 

查看有一条免密登录的数据,源端主机名称类似一个容器的名称,而测试环境不应该存在,遂进行了删除。

5、到这里回到原来的异常进程 ID,kill -9 (kthreaddk 以及一个数字和字母命名的进程ID)

在等待一两分钟后,没有异常进程再次启动,CPU负载也降下来了,继续观察。