服务器有一个正在运行的bash
进程,CPU 使用率为 2200%:
$ ps aux | grep 10986
root 10986 2198 1.8 2483184 2437820 ? Ssl 13:23 962:25 -bash
该进程有 22 个-bash
线程,如图所示htop
。
使用strace
时,父进程保持epoll_pwait()
,子线程保持sched_yield()
。
我尝试过kill -9 10986
,但几分钟后 bash 进程以同样高的 CPU 使用率重新启动。
有人告诉我,几个小时前他曾经screen
运行过一个如下所示的 bash 脚本:
./prog <arg1>
./prog <arg2>
./prog <arg3>
...
但是当他再次登录时,整个目录消失了,并且该过程保持无法杀死。
您需要终止所有用户的 bash 会话,而不是一个一个地杀死自我重新生成的进程:
pkill -9 bash
来自启动所有这些会话的用户。要跟踪启动新 bash 进程的原因,请运行终端。然后
journalctl -f | grep bash
在其中运行,看看在某些 bash 进程被杀死后有什么变化。您现在无法终止所有 bash 进程,因为这将终止与 journalctl 的会话。您也可以尝试
ps f -g PID
查看一些 bash 进程树。这些 bash 进程是您需要命名的某些父进程的子进程。如果被杀死的进程再次被重新生成,那么它们会被安排在 crontab 中或由 systemd 服务启动。
我遇到过同样的病毒
您可以检查
/etc/cron*/sync
. 用于chattr -i
使其可删除。然后删除它。病毒exe是/bin/sysdrr
我找到它
jounalctl | grep cron
并且这一行May 13 09:17:01 micagent-S2600CW CRON[31589]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
与病毒进程的开始时间相匹配。所以我调查了一下,发现-bash
正在执行和删除。sudo crontab -e
没有显示这个地方。我不熟悉它。对于像我这样的菜鸟,请转到 /etc/cron*/sync。