Debian - Aviso: possível Trojan LKM instalado

3

Estou executando o chkrootkit todas as noites em 3:04. Mais de 1 ano não estava retornando nenhum problema, mas 1 mês atrás, este aviso começou a aparecer:

=======================
Checking 'lkm'...                                           You have     1 process hidden for readdir command
You have     1 process hidden for ps command
chkproc: Warning: Possible LKM Trojan installed
=======================

Agora eu corro o chkrootkit a cada hora e a

3:02
3:03
3:04
3:05

Não há avisos em outros momentos, mas de 2 a 3 vezes por semana. O chkrootkit retorna esse aviso às 3:02 ou às 3:04. A próxima varredura após 1 minuto não retorna novamente este aviso. Alguma ideia? Por que este aviso aparece às 3 da manhã? Existe alguma maneira de executar o chkrootkit para que ele mostre mais informações sobre o processo oculto?

Sim, sei que há muitos artigos dizendo que pode ser um falso positivo, mas por que esse aviso começou a aparecer com tanta frequência?

Rkhunter, Clamav, LFD / CSF não reportam problemas no servidor.

    
por tfstfs 29.06.2015 / 11:53

2 respostas

0

Eu não acho que seja possível para alguém aqui descobrir corretamente o que está errado com seu sistema, a menos que tenhamos acesso direto.

Você pode assumir que é um falso positivo e é isso que provavelmente é o caso. Na minha experiência, também tive o falso positivo, e depois de alguma investigação, confirmei para mim mesmo que, de fato, era um falso positivo. Alguns processos podem ser ocultados do comando ps por razões perfeitamente legítimas. E muitas vezes são de curta duração.

No entanto, se você quiser ter certeza de que poderia fazer algo como descrito abaixo. Eu entendo que é um pouco extremo e pode não se aplicar em sua situação, mas não posso ter certeza disso, essa é uma decisão que você precisa tomar.

Pessoalmente, tomo muita sabedoria sobre o que fazer em tal e em outras situações, a partir de Securing Debian Manual , especialmente no seu caso, verifique Capítulo 11 - Depois do compromisso

O conselho geral é desconectar o sistema comprometido da rede antes de mais nada, depois fazer o backup do sistema. Em seguida, execute mais investigações. Esta deve ser uma atividade separada e não precisa atrapalhar a restauração do sistema. Seria uma boa ideia tentar descobrir como foi comprometida.

Enquanto isso, limpe completamente o sistema, reinstale o sistema operacional de uma fonte de leitura não suspeita (por exemplo, um dvd) e restaure a partir do backup apenas os dados que você pode ter certeza de que não estão infectados. Se esses dados estiverem contidos nos repositórios, basta recuperá-los de lá, em vez do backup.

Suponha que quaisquer arquivos no sistema e seus backups sejam suspeitos e tente, tanto quanto possível, restaurá-lo sem copiar os arquivos do backup. Restaure os arquivos de configuração apenas repetindo o que você fez, copie e cole texto etc.

    
por 30.06.2015 / 04:14
0

Você precisa procurar o possível script oculto. O problema ainda existe e, na maioria das vezes, é um falso positivo.

Rastreando o alerta:

Eu acompanhei o comando ps antes e depois do script, em /etc/cron.daily/chkrootkit :

ls /proc/*/status -al > /tmp/lsproc.before.txt
ps axf > /tmp/psaxf.before.txt
ps auxwww > /tmp/psauxwww.before.txt
eval $CHKROOTKIT $RUN_DAILY_OPTS > $LOG_DIR/log.today.raw 2>&1
ls /proc/*/status -al > /tmp/lsproc.after.txt
ps axf > /tmp/psaxf.after.txt
ps auxwww > /tmp/psauxwww.after.txt

E o resultado é:

$ wc -l /tmp/*.txt
  218 lsproc.before.txt
  219 psauxwww.before.txt
  217 psaxf.before.txt

  218 lsproc.after.txt
  216 psauxwww.after.txt
  219 psaxf.after.txt

Como você pode ver: o antes é o mesmo ( ps aux tem uma primeira linha para colunas que ls /proc/* não possui). Então, antes, temos 218 processos. Depois, ainda temos 218 mas apenas 215 (216 - 1) processos em ps . E eu recebo o alerta: You have 3 process hidden for ps command , então exatamente a diferença entre /proc/ e ps .

Quais foram esses processos? Eu só diff os dois psauxwww *:

my_user     16674  0.0  0.0  13976  1456 ?        S    05:25   0:00 sh /one/dedicated/script.sh
my_user     16690  0.0  0.0  13980  1392 ?        S    05:25   0:00 sh /one/dedicated/script.sh
my_user     16691  0.0  0.0  44284  2824 ?        S    05:25   0:00 ssh [...]

Não oculto, apenas ausente!

Então, esse é apenas um script, rodando a cada minuto com o meu crontab, que é "oculto". Mas não está escondido (como eu achei que você pode esconder alguns processos): ele simplesmente desaparece durante o teste chkproc!

Soluções?

Até agora, não vejo nenhuma solução fácil. chkrootkit é escrito no bash, mas chkproc é compilado ...

Se você acompanhar os processos ausentes (provavelmente um cron, como no meu caso), você pode:

  • pare de executar o cron ao mesmo tempo que o chkrootkit faz (nem sempre é possível, pois às vezes você precisa executar seu cron a cada minuto, não importa o que)

  • saia do seu script no exato minuto que o chkrootkit é executado, esperando que o chkrootkit não seja executado em mais de um minuto, por exemplo, no bash, você adicionará o chkrootkit sendo executado em 6:25 :

    if ["'date +% H% M'"="0625"]; então saia 0; fi

  • adie a execução do chkrootkit um pouco, adicionando um sono no início do script /etc/cron.daily/chkrootkit , por exemplo, se o seu outro script demorar menos de 15 segundos:

    dormir 15

Não é o ideal, mas se você precisar que ambos os crons sejam executados ao mesmo tempo, você sabe o que fazer.

    
por 10.11.2016 / 08:48