Recentemente, notei que meu servidor doméstico estava dolorosamente lento. Todos os recursos foram consumidos por dois processos: crond64
e tsm
. Mesmo que eu os tenha matado repetidamente, eles continuavam aparecendo várias vezes.
Ao mesmo tempo, meu ISP estava me notificando sobre um abuso originado no meu endereço IP:
==================== Excerpt from log for 178.22.105.xxx====================
Note: Local timezone is +0100 (CET)
Jan 28 20:55:44 shared06 sshd[26722]: Invalid user admin from 178.22.105.xxx
Jan 28 20:55:44 shared06 sshd[26722]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=178.22.105.xxx
Jan 28 20:55:45 shared06 sshd[26722]: Failed password for invalid user admin from 178.22.105.xxx port 33532 ssh2
Jan 28 20:55:46 shared06 sshd[26722]: Received disconnect from 178.22.105.xxx port 33532:11: Bye Bye [preauth]
Jan 28 20:55:46 shared06 sshd[26722]: Disconnected from 178.22.105.xxx port 33532 [preauth]
Jan 28 21:12:05 shared06 sshd[30920]: Invalid user odm from 178.22.105.xxx
Jan 28 21:12:05 shared06 sshd[30920]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=178.22.105.xxx
Jan 28 21:12:07 shared06 sshd[30920]: Failed password for invalid user odm from 178.22.105.xxx port 45114 ssh2
Jan 28 21:12:07 shared06 sshd[30920]: Received disconnect from 178.22.105.xxx port 45114:11: Bye Bye [preauth]
Jan 28 21:12:07 shared06 sshd[30920]: Disconnected from 178.22.105.xxx port 45114 [preauth]
Fui informado por este site que eu poderia ter um vírus. Eu corro o Sophos AV escaneando meu disco rígido inteiro e, de fato, ele encontrou algum vírus /tmp/.mountfs/.rsync
. Então eu apaguei a pasta inteira e pensei que era isso. Mas continuou voltando depois. Depois, verifiquei o arquivo cron do usuário /var/spool/cron/crontabs/kodi
(o vírus estava sendo executado usando o usuário do meu servidor de mídia kodi), com a seguinte aparência:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (cron.d installed on Sun Feb 3 21:52:03 2019)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
* */12 * * * /home/kodi/.ttp/a/upd>/dev/null 2>&1
@reboot /home/kodi/.ttp/a/upd>/dev/null 2>&1
5 8 * * 0 /home/kodi/.ttp/b/sync>/dev/null 2>&1
@reboot /home/kodi/.ttp/b/sync>/dev/null 2>&1
#5 1 * * * /tmp/.mountfs/.rsync/c/aptitude>/dev/null 2>&1
Parece que o vírus está se reativando de vez em quando em outro diretório. O conteúdo desse diretório é:
>>> ls /home/kodi/.ttp/*
/home/kodi/.ttp/cron.d /home/kodi/.ttp/dir2.dir
/home/kodi/.ttp/a:
a bash.pid config.txt crond32 crond64 cronda crondb dir.dir pools.txt run stop upd
/home/kodi/.ttp/b:
a dir.dir rsync run stop sync
/home/kodi/.ttp/c:
aptitude dir.dir go ip lib n p run slow start stop tsm tsm32 tsm64 v watchdog
Eu apaguei todos esses arquivos e as entradas no crontab e espero que com isso, o problema seja resolvido. No entanto, eu estaria interessado em saber o que era esse vírus, como eu o pego (pode estar conectado ao Kodi) e o que posso fazer para evitá-lo. Felizmente, ele estava sendo executado apenas por um usuário com direitos limitados, mas ainda era chato de lidar.
EDITAR
Embora eu aparentemente tenha removido todos os restos desse vírus (também removi toda a pasta tmp), o vírus continuava voltando. Percebi que havia uma entrada na ~/.ssh/authorized_hosts
qual eu definitivamente não me colocava. Isso explica como o vírus pode ser replantado repetidamente. Eu removi a entrada, desabilitei o login para esse usuário, desabilitei o login com senha (somente senha) e use agora uma porta não padrão.
Também notei tentativas repetidas de login no meu servidor com nomes de usuário aleatórios, provavelmente por algum tipo de bot (o log parecia surpreendentemente semelhante ao iniciado pelo meu IP, enviado pelo provedor de serviços de Internet). Eu acho que foi assim que meu computador foi infectado em primeiro lugar.
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB... ...VKPRK+oRw== mdrfckr">>.ssh/authorized_keys && chmod 700 .ssh && cd .ssh && chmod 600 authorized_keys && cd ~
. Eu apenas fiz um cp /etc/skel/.bashrc /home/mycompromiseduser/
para removê-lo.