
我正在運行的基於 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
。