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

2

Há um processo ocupando 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 de strace nos 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
......

Eu não sei como o processo se originou e o servidor pode ter sido invadido. Eu matei o processo e planejo reinstalar o servidor.

Dado algo dessa natureza, como você rastreia como o processo começou, se não há 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. Eu encontrei o nome do executável. Parece que é 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)
    
por vfclists 02.06.2018 / 17:49

1 resposta

4

Isso pode ser um 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 seu $0 que é mostrado em, e. top .

    
por 02.06.2018 / 17:58