![如何诊断没有关联的可执行文件名的进程?](https://linux22.com/image/134492/%E5%A6%82%E4%BD%95%E8%AF%8A%E6%96%AD%E6%B2%A1%E6%9C%89%E5%85%B3%E8%81%94%E7%9A%84%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我正在运行的基于 KVM 的服务器上有一个进程占用了 100% CPU。
这是 htop 的输出。
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
22230 adminx 20 0 185M 3468 1600 S 100. 0.5 72h45:33 apache
22232 adminx 20 0 185M 3468 1600 R 100. 0.5 72h45:12 apache
10660 root 20 0 26880 4680 3176 R 0.0 0.6 0:00.11 htop
1061 root 20 0 276M 5796 0 S 0.0 0.8 0:05.59 /usr/lib/snapd/snapd
9529 root 20 0 92796 6916 5992 S 0.7 0.9 0:00.11 sshd: root@pts/3
进程名称为apache
,用户为adminx
。系统上不应该有任何可执行的 apache,并且用户adminx
在任何情况下都不应该运行它。
strace
两个 pid的输出如下所示。
strace -p 22230
epoll_wait(7, [], 1024, 204) = 0
epoll_wait(7, [], 1024, 34) = 0
epoll_wait(7, [], 1024, 500) = 0
epoll_wait(7, [], 1024, 465) = 0
epoll_wait(7, [], 1024, 34) = 0
......
strace -p 22232
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
......
我不知道该进程是如何发起的,服务器可能已被黑客入侵。我已经终止了该进程,并计划重新安装服务器。
考虑到这种性质,如果没有该名称的可执行文件,如何跟踪进程是如何启动的?如何捕获可执行文件的内存映像进行分析,以及如何分析其内存分配?
附言。我找到了可执行文件的名称。它似乎被复制到共享内存并被删除。
adminx@gw06 ~ ls -l /proc/10160/exe
lrwxrwxrwx 1 adminx adminx 0 Jun 3 09:22 /proc/10160/exe -> /dev/shm/apache (deleted)
答案1
这可能是比特币挖矿恶意软件。
您可以使用以下命令检查可执行文件
ls -l /proc/22230/exe
该文件的名称可能不同。该过程可以设置其$0
如例如所示top
。