发现问题

早上到工位还没喝水呢, 同事就说服务器挂了, 我输入top 一看

image-20250122095117389

我的乖乖 196% , cpu在飘香味

吓的我有点神志不清了看到 findshell的左边

image-20250122095337494

对同事说, 不得了了 磁盘都满了

输入 df -h

image-20250122095451543

看清除 可用后才明白是自己 看错了 , 把 可用 看成 已用 了

确认问题

根据上面 top 的输出

可以看到一个名为 ubizC98 的进程占用了极高的CPU 资源(195.7%),并且属于 postgres 用户。

这可能是挖矿程序或其他恶意软件的迹象。

使用 ps 命令查看该进程的详细信息:

ps -p 3923183 -o pid,ppid,cmd,%mem,%cpu

image-20250122100354306


检查该进程的启动命令行参数:

cat /proc/3923183/cmdline

image-20250122100607523


可以发现这个确认 ubizC98进程确实非常可疑,因为它占用了极高的 CPU 资源,并且其命令行参数和启动方式不常见

尝试解决

安装lsof工具

lsof 是一个非常有用的工具,可以列出进程打开的文件和网络连接。首先需要安装它:

yum install lsof -y

image-20250122100908486

查找与该进程相关的文件和目录

安装完 lsof 后,使用它来查看该进程打开的文件和网络连接:

lsof -p 3923183

image-20250122100948325

根据lsof 的输出,

  1. 可执行文件已被删除:/var/tmp/.5da3f56ffe94f55c8eee (deleted) 表明该进程的可执行文件已经被删除,这通常是恶意软件为了隐藏自身而采取的措施。
  2. 与外部服务器建立连接:TCP iZ2zed9dcw589aurnexkp7Z:54040->m1563.contaboserver.net:websm (ESTABLISHED) 表明该进程正在与外部服务器通信,可能是为了挖矿或传输数据。

立刻行动杀死可疑进程

kill -9 3923183

image-20250122101027081

查找并删除相关文件

查找 /var/tmp 和 /tmp 目录中的可疑文件:

find /var/tmp /tmp -type f -mtime -1 -exec ls -l {} \; 2>/dev/null

image-20250122101335168

删除相关文件

  • 从 lsof 输出中可以看到,ubizC98 的可执行文件已经被删除,但仍然有一些临时文件可能与该进程有关。你可以考虑删除这些文件,特别是那些看起来不正常的文件。
  • 特别注意 /var/tmp 和 /tmp 目录中的文件:

rm -f /var/tmp/.5da3f56ffe94f55c8eee

查找隐藏文件

find /var/tmp /tmp -type f -name ".*" -exec ls -l {} \; 2>/dev/null

image-20250122101731390

  • .gpgkeyschecked.yum 文件与 DNF 包管理器相关,通常用于检查 GPG 密钥。
  • .s.PGSQL.5432.lock 是 PostgreSQL 的锁文件,确保只有一个 PostgreSQL 实例在运行。

检查启动项和服务

systemctl list-unit-files --type=service | grep enabled

image-20250122102140440

根据上图:

  • aegis.service 和 aliyun.service:这些是阿里云的安全和监控服务。如果你不使用阿里云的安全服务,可以考虑禁用它们以减少潜在的风险。

  • ecs_mq.service:这是阿里云 ECS 的消息队列服务。如果你不需要该服务,也可以考虑禁用。

    禁用不必要的服务:

     systemctl disable aegis.service
     systemctl disable aliyun.service
     systemctl disable ecs_mq.service
    

image-20250122102316102

成功禁用了 aliyun.service 和 ecs_mq.service,但禁用 aegis.service 时遇到权限问题。这可能是由于阿里云的安全策略限制。

检查定时任务

for user in $(cut -f1 -d: /etc/passwd); do echo "Checking crontab for $user"; crontab -u $user -l; done

image-20250122102452155

哈哈 被我找到了, , postgres用户有一个定时任务

检查该脚本内容

cat /home/postgres/.config/systemd/user/systemd-tmpfiles-cleanup/systemd-tmpfiles-cleanup-szCEGz.sh

image-20250122102618153

竟然使用了base64编码命令 还通过bash解码执行,

这种行为通常是恶意软件或攻击者用来隐藏其真实意图的一种手段。

可恶啊

停止并删除脚本

rm -f /home/postgres/.config/systemd/user/systemd-tmpfiles-cleanup/systemd-tmpfiles-cleanup-szCEGz.sh

image-20250122102813924

删除对应的定时任务

crontab -u postgres -e

找到并删除以下行

 30 * * * * /home/postgres/.config/systemd/user/systemd-tmpfiles-cleanup/systemd-tmpfiles-cleanup-szCEGz.sh > /dev/null 2>&1 &

i 编辑

:wq 保存并退出

检查网络连接

查看所有当前的网络连接,确认是否有其他异常连接:

ss -tnp | grep ESTABLISHED

image-20250122103030324