Isso é algo para se preocupar?
Não, é um erro falso positivo e de longa duração no chrootkit. Você verá a mensagem sempre que a verificação de lkm relatar processos ocultos inacessíveis pelo comando readdir. Se você tem algo como o ClamAV, MySQL, Exim ou MailScanner em execução, você verá este aviso.
Verificação mais fácil: execute o chrootkit algumas vezes com tantos serviços parados (por exemplo, mysql, clamav etc). Se os resultados variam, é um indicador claro, é um falso positivo.
A propósito: rkhunter tem uma melhor checagem para lkm.
Alguns tópicos aleatórios sobre esta mensagem: stackexchange , cpanel.net , Linuxquestions.org e todos afirmam que isso é falso e um bug.
Algo a mais: o comando ./chkproc -v
mostrará os IDs do processo (PIDs) para a mensagem que você recebe e você pode usar isso para encontrar o programa que está conectado a este processo com cd /proc/{PID}/ && cat cmdline
Caso isso seja convincente o suficiente, você pode parar de ler. Se você quiser saber sobre sua máquina e como as coisas funcionam, continue lendo.
Então, o que você precisa saber sobre o seu sistema para lidar com esse problema?
Primeiramente: O melhor detector de rootkit é você. Sabendo quais serviços estão ativos em sua máquina, saber quais scripts estão sendo executados em sua máquina é o que mantém seu sistema limpo e seguro. E sim, vai demorar um pouco para entender completamente um sistema Linux.
Em segundo lugar: Há um pouco de malware direcionado ao Linux , mas é raro. Pela simples razão de que, embora o Linux seja muito portátil, não é tão portátil. As diferenças entre distribuições (pequenas), bibliotecas, kernels e compiladores tornam a execução de código aleatório em máquinas aleatórias extremamente difícil. E as pessoas que estão em malware estão nele para obter ganhos financeiros. Então, eles se concentram no Windows pelas razões muito simples que é de código fechado, tem um monte de buracos que dependem da Microsoft para tomar medidas para corrigi-los. (simplificado :))
Agora, para o aviso que você vê sobre um possível cavalo de Tróia LKM instalado. LKM significa Linux Kernel Module e é um dos principais módulos do Linux. Os módulos do kernel são carregados nos kernels correspondentes e, se os dois não pertencerem juntos, os módulos não serão carregados. Este é um dos recursos básicos de segurança de um sistema Linux que você pode usar para rastrear códigos maliciosos (1).
Algumas coisas básicas sobre os kernels (2):
-
uname -r
mostra seu kernel. -
os kernels instalados podem ser visualizados em
/boot
.rinzwind@schijfwereld:/boot$ ls abi-3.16.0-22-generic initrd.img-3.16.0-29-generic abi-3.16.0-23-generic initrd.img-3.16.0-30-generic abi-3.16.0-24-generic memtest86+.bin abi-3.16.0-25-generic memtest86+.elf abi-3.16.0-28-generic memtest86+_multiboot.bin abi-3.16.0-29-generic System.map-3.16.0-22-generic abi-3.16.0-30-generic System.map-3.16.0-23-generic config-3.16.0-22-generic System.map-3.16.0-24-generic config-3.16.0-23-generic System.map-3.16.0-25-generic config-3.16.0-24-generic System.map-3.16.0-28-generic config-3.16.0-25-generic System.map-3.16.0-29-generic config-3.16.0-28-generic System.map-3.16.0-30-generic config-3.16.0-29-generic vmlinuz-3.16.0-22-generic config-3.16.0-30-generic vmlinuz-3.16.0-23-generic grub vmlinuz-3.16.0-24-generic initrd.img-3.16.0-22-generic vmlinuz-3.16.0-25-generic initrd.img-3.16.0-23-generic vmlinuz-3.16.0-28-generic initrd.img-3.16.0-24-generic vmlinuz-3.16.0-29-generic initrd.img-3.16.0-25-generic vmlinuz-3.16.0-30-generic initrd.img-3.16.0-28-generic
-
módulos do kernel são instalados em
/lib/modules
em um subdiretório que corresponde ao seu kernel.
Portanto, com base em (1) e (2), o próximo passo é reiniciar em outro kernel. O módulo ofensivo foi compilado contra um kernel específico e não será capaz de se compilar no outro kernel (simplesmente porque os cabeçalhos não combinam).
A quantidade de diretórios e arquivos que podem ser afetados quando você tem um rootkit é limitada (um rootkit precisa ser iniciado de algum lugar). Existem dois diretórios e um grupo de arquivos que serão direcionados ...
-
/etc/init.d/
Faça um
ls -ltr /etc/init.d
(ele será listado na ordem em que foram alterados pela última vez) e verifique se há serviços desconhecidos. Serviços normais terão nomes sensatos. Esses serviços podem ser iniciados pelo sistema ou manualmente.rinzwind@schijfwereld:/etc/init.d$ ls acpid hwclock.sh reboot alsa-utils irqbalance resolvconf anacron kerneloops rsync apparmor killprocs rsyslog apport kmod saned atieventsd lightdm sendsigs avahi-daemon lvm2 single bluetooth mountall-bootclean.sh skeleton bootmisc.sh mountall.sh smartmontools brltty mountdevsubfs.sh speech-dispatcher cgmanager mountkernfs.sh sslh cgproxy mountnfs-bootclean.sh sudo checkfs.sh mountnfs.sh thermald checkroot-bootclean.sh networking udev checkroot.sh network-manager udev-finish console-setup ondemand ufw cron php5-fpm umountfs cups pppd-dns umountnfs.sh cups-browsed procps umountroot dbus pulseaudio unattended-upgrades dns-clean rc urandom grub-common rc.local uuidd halt rcS x11-common hostname.sh README
-
/etc/rc*/
Os scripts de inicialização e eliminação estão localizados em
/etc/rc[0-5,S].d
. Em geral, os arquivos aqui têm números e uma descrição sã (esses arquivos são executados em ordem alfabética quando iniciados e em ordem inversa durante um kill. Fique atento para scripts que consistem em números aleatórios e letras. Aqui está uma lista (são scripts válidos) .rinzwind@schijfwereld:/etc$ ls rc*/ rc0.d/: K01alsa-utils K01lightdm K01unattended-upgrades K05umountnfs.sh K01atieventsd K01php5-fpm K01urandom K06networking K01bluetooth K01pulseaudio K01uuidd K07umountfs K01cgmanager K01resolvconf K02avahi-daemon K08umountroot K01cgproxy K01speech-dispatcher K03sendsigs K09halt K01cups-browsed K01sslh K04rsyslog README K01irqbalance K01thermald K05hwclock.sh
rc1.d/: K01alsa-utils K01irqbalance K01speech-dispatcher README K01atieventsd K01kerneloops K01sslh S01dns-clean K01bluetooth K01lightdm K01thermald S01killprocs K01cgmanager K01php5-fpm K01ufw S01pppd-dns K01cgproxy K01pulseaudio K01uuidd S02single K01cups K01saned K02avahi-daemon K01cups-browsed K01smartmontools K04rsyslog
rc2.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm
rc3.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm
rc4.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm
rc5.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm
rc6.d/: K01alsa-utils K01lightdm K01unattended-upgrades K05umountnfs.sh K01atieventsd K01php5-fpm K01urandom K06networking K01bluetooth K01pulseaudio K01uuidd K07umountfs K01cgmanager K01resolvconf K02avahi-daemon K08umountroot K01cgproxy K01speech-dispatcher K03sendsigs K09reboot K01cups-browsed K01sslh K04rsyslog README K01irqbalance K01thermald K05hwclock.sh
rcS.d/: README S03udev S08checkroot-bootclean.sh S01console-setup S04brltty S08kmod S02alsa-utils S04mountdevsubfs.sh S08urandom S02apparmor S04procps S09mountall.sh S02hostname.sh S04udev-finish S09networking S02mountkernfs.sh S05hwclock.sh S10mountall-bootclean.sh S02resolvconf S05lvm2 S10mountnfs.sh S02ufw S06checkroot.sh S11mountnfs-bootclean.sh S02x11-common S07checkfs.sh S12bootmisc.sh
-
um script de inicialização.
Em geral, o Ubuntu usa o bash em um terminal e traço ao inicializar.
echo $SHELL
mostrará qual shell está sendo usado. Para bash, os arquivos ocultos para verificar scripts estranhos ou linhas estranhas de código são .../etc/profile /etc/bashrc /etc/bash.bashrc ~/.profile ~/.bash_profile
Estes são os 5 mais comuns. Qualquer máquina pode ter mais. Além disso, você também pode incluir
/etc/crontab crontab
O último para o seu usuário e fazendo
sudo su
. "crontab" você pode listar comcrontab -l
. Preste atenção para scripts que não são Linux gerais ou criados por você.
Se acontecer de você ter uma segunda vida útil do sistema torna-se muito mais fácil: você pode simplesmente comparar todos os arquivos acima com a segunda máquina.