Como posso diagnosticar um processo que não possui um nome de arquivo executável associado?

Como posso diagnosticar um processo que não possui um nome de arquivo executável associado?

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 é apachee o usuário é adminx. Não deve haver nenhum apache executável no sistema e o usuário adminxnão deve executá-lo em nenhum caso.

A saída stracedos 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 terminei o processo e pretendo reinstalar o servidor.

Dado algo dessa natureza, como rastrear como o processo foi iniciado, se não houver nenhum executável com esse nome? Como a imagem de memória do executável pode ser capturada para análise e como suas alocações de memória podem ser analisadas?

PS. 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)

Responder1

Isso pode ser malware de mineração de bitcoin.

Você pode verificar o executável com

ls -l /proc/22230/exe

O nome desse arquivo pode ser diferente. O processo pode definir o $0que é mostrado, por exemplo top.

informação relacionada