Há um processo que ocupa 100% da CPU em um servidor baseado em KVM que estou executando.
Esta é a saída do 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
O nome do processo é apache
e o usuário é adminx
. Não deve haver nenhum apache executável no sistema e o usuário adminx
não deve executá-lo em nenhum caso.
A saída dos strace
dois pids é mostrada abaixo.
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
......
Não sei como o processo se originou e o servidor pode ter sido hackeado. Eu matei o processo e pretendo reinstalar o servidor.
Dado algo dessa natureza, como você rastreia como o processo foi iniciado, se não houver um executável com esse nome? Como a imagem da memória do executável pode ser capturada para análise e como suas alocações de memória podem ser analisadas?
PS. Eu encontrei o nome do executável. Parece que foi copiado para a memória compartilhada e excluído.
adminx@gw06 ~ ls -l /proc/10160/exe
lrwxrwxrwx 1 adminx adminx 0 Jun 3 09:22 /proc/10160/exe -> /dev/shm/apache (deleted)
Isso pode ser malware de mineração de bitcoin.
Você pode verificar o executável com
O nome desse arquivo pode ser diferente. O processo pode definir o
$0
que é mostrado em, por exemplotop
.