一、背景
2025年3月12日下午15点47分收到阿里云的告警,说服务器发现可疑的编码命令(如下图)
二、排查
我的第一反应就是服务器被植入恶意程序了。将命令复制到AI中解码,得到脚本内容(如下图)
发现脚本将文件下载到 /tmp文件下,并伪装命名成mysql。尝试直接删除该文件,不久后发现文件再次出现,由此推测恶意程序有自动修复的机制。
三、处理
将解析出的域名地址进行解析,发现该域名指向IP:58.229.206.107,遂在服务器安全组入方向和出方向中将该IP的所有端口全部封禁,阻止服务器再向远程地址发出文件下载请求。然后再次尝试删除恶意文件,不久后文件再次出现,但是大小为0字节。由此判断安全组策略起效了,但是恶意脚本没有找到。
仔细看阿里云的告警信息,发现脚本由定时任务执行。
使用 journalctl>/usr/log.txt 命令查询并定向到指定位置,将日志文件下载到本地电脑后进行排查。日志再次印证之前的推测,脚本由定时任务1分钟启动一次(执行文件为:/etc/cron.d/apache)。使用cat命令打开该文件,发现恶意脚本就在这里。
使用 rm -rf /etc/cron.d/apache 命令将定时任务脚本删除,并用 systemctl restart crond 命令重启定时任务,最后使用 rm -rf /tmp/mysql 命令将恶意文件删除。
四、总结
在打开定时任务脚本时,发现脚本中出现redis字样,想到之前阿里云提示redis版本过低,存在漏洞。平时我都是把服务器的端口全部关闭的,3月12日下午为了调试代码打开了redis的端口,综上判断本次恶意脚本是通过redis漏洞注入的。
以上是本次问题排查解决的全过程,提供给大家借鉴。在此还要感谢一位同事一起帮忙排查。