Detectando rootkits

Detectando rootkits
Os rootkits podem ser instalados tanto localmente (quando alguém tem acesso físico à sua máquina) quanto remotamente, caso o intruso tenha acesso via SSH, VNC, XDMCP ou qualquer outra forma de acesso remoto à sua máquina. Neste caso ele precisará primeiro descobrir a senha de algum dos usuários do sistema para poder fazer login.

A instalação do rootkit é em geral o último passo de uma série de ataques que visam obter acesso a uma conta de usuário do sistema. A partir do momento que é possível logar na máquina, o atacante executa o rootkit para tentar obter privilégios de root.

Uma vez instalado, o rootkit vai alterar binários do sistema, instalar novos módulos no kernel e alterar o comportamento do sistema de várias formas para que não seja facilmente detectável. O processo do rootkit não aparecerá ao rodar o “ps -aux”, o módulo que ele inseriu no Kernel para alterar o comportamento do sistema não vai aparecer ao rodar o “lsmod” e assim por diante.

Aparentemente vai estar tudo normal, você vai poder continuar usando a máquina normalmente, mas haverão outras pessoas com acesso irrestrito a ela, que poderá usá-la remotamente da forma que quiserem. Se num desktop isso já parece assustador, imagine num servidor importante.

Naturalmente também existem programas capazes de detectar rootkits. Um dos mais populares é o chkrootkit, que pode ser encontrado no: http://www.chkrootkit.org/

No site está disponível apenas o pacote com o código fonte, que você precisa compilar manualmente, mas ele é um programa bastante popular e vem incluso na maior parte das distribuições.

No Debian, Kurumin ou derivados, você pode instala-lo pelo apt-get:

# apt-get install chkrootkit

Ele pergunta se deve ser executado automaticamente todos os dias, através do cron. Isso garante uma proteção adicional, pois ele avisa caso futuramente a máquina seja comprometida.

xterm

Para executar o chkrootkit, basta chama-lo no terminal:

# chkrootkit

Ele exibe um longo relatório, mostrando um por um os arquivos checados. Numa máquina saudável, todos retornarão um “nothing found”:

Searching for Ramen Worm files and dirs… nothing found
Searching for Maniac files and dirs… nothing found
Searching for RK17 files and dirs… nothing found
Searching for Ducoci rootkit… nothing found
Searching for Adore Worm… nothing found
Searching for ShitC Worm… nothing found
Searching for Omega Worm… nothing found …

Uma parte importante é a checagem das interfaces de rede, que aparece no final do relatório:

Checking `sniffer’… lo: not promisc and no packet sniffer sockets
eth0: not promisc and no packet sniffer sockets

Os sniffers são usados para monitorar o tráfego da rede e assim obter senhas e outras informações não apenas do servidor infectado, mas também de outras máquinas da rede local. Um dos sintomas de que existe algum sniffer ativo é a placa da rede estar em modo promíscuo, onde são recebidos também pacotes destinados a outros micros da rede local.

Alguns programas, como por exemplo o Vmware, o Ethereal e o Nessus colocam a rede em modo promíscuo ao serem abertos, mas caso isso aconteça sem que você tenha instalado nenhum destes programas, é possível que outra pessoa o tenha feito.

Caso o teste do chkrootkit detecte algo, o melhor é desligar o micro da rede, reiniciar usando um CD do Kurumin, salvar arquivos importantes e depois reinstalar completamente o sistema. Da próxima vez mantenha o firewall ativo, mantenha o sistema atualizado e fique de olho no que outras pessoas com acesso ao sistema estão fazendo.

Se a intrusão for em um servidor importante e ele for ser enviado para análise então simplesmente desconecte-o da rede. Alguns indícios se perdem os desligar ou reiniciar a máquina.

Infelizmente o teste do chkrootkit não é confiável caso seja executado em uma máquina já infectada, pois muitos rootkits modificam os binários do sistema, de forma que ele não descubra as alterações feitas.

A única forma realmente confiável de fazer o teste é dar boot em algum liveCD e executar o teste a partir dele, um sistema limpo.

Neste caso, monte a partição onde o sistema principal está instalado e execute o chkrootkit usando o parâmetro “-r”, que permite especificar o diretório node será feito o teste:

# mount /dev/hda1 /mnt/hda1
# chkrootkit /mnt/hda1

O Knoppix inclui o chkroot instalado por padrão. Você pode também remasterizar o Kurumin para incluí-lo.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X