Revista Do Linux
 
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Entrevista
 Corporativo
 Programação
 Segurança
 Ferramenta
 Produto
 Hardware
 

chkrootkit

Um conjunto de programas que substituem comandos importantes do sistema e podem omitir processos, conexões, arquivos e logs do invasor

Depois de achar uma máquina Unix vulnerável, explorá-la e ganhar acesso de superusuário (root), o invasor geralmente procura alguma maneira de não ser detectado na máquina comprometida. Um modo bastante utilizado é a instalação de rootkits.

O chkrootkit é uma ferramenta para ajudar o administrador no processo de detecção de rootkits.

O rootkit

O rootkit é um conjunto de programas que substituem comandos importantes do sistema, como ps, ifconfig, netstat, tcpd, ls, syslogd etc. Os comandos substituídos podem omitir processos, conexões, arquivos e logs do invasor de modo a ocultá-lo no sistema.

Opcionalmente ele pode conter algumas funcionalidades adicionais, com a instalação de:

  • backdoors que garantam o acesso futuro à máquina mesmo em caso de mudança de senhas ou correções de vulnerabilidades;
  • sniffers para a captura de senhas que trafeguem em clear text (telnet, ftp, pop3, etc);
  • programas para remoção de evidências em arquivos de log bem como nos arquivos utmp/wtmp/lastlog do sistema;
  • scanners, exploits e programas de Denial of Service (DoS);
  • programas relacionados a IRC, como bots e bouncers.

Como funciona o chkrootkit

O chkrootkit é uma ferramenta para a detecção local de rootkits e outros sinais de invasão em máquinas Unix. O programa testa diversos comandos do sistema procurando "assinaturas" conhecidas (strings, senhas etc.) que indiquem que esses comandos foram alterados por um rootkit.

O pacote é acompanhado de outros programas que realizam alguns testes adicionais: se há alguma interface de rede em modo promíscuo (para a detecção de sniffers); se há sinais de remoção de entradas nos arquivos utmp/wtmp/lastlog (sinais de ferramentas como z2 e wted) e pela presença de módulos de kernel (LKMs) maliciosos.

O chkrootkit foi testado em Linux, FreeBSD, OpenBSD e Solaris. Atualmente detecta com sucesso os seguintes rootkits: Linux rootkit (lrk) versões 3, 4, 5 e 6; Solaris rootkit; FreeBSD rootkit; t0rn; Ambient’s Rootkit (ARK); Ramen Worm; rh-shaper; RSHA e Romanian rootkit.

A lista de rootkits detectados é constantemente ampliada de acordo com o aparecimento de novas variantes. Procure sempre verificar no site do chkrootkit (www.chkrootkit.org) a última versão disponível.

Usando o chkrootkit

O chkrootkit deve ser executado como root. A maneira mais simples de executar todos os testes, após seguir as instruções de instalação do README, é simplesmente digitar:

# ./chkrootkit

É possível especificar apenas os testes de interesse na linha de comando. O seguinte comando, por exemplo, testa a presença de versões modificadas de ps e ls e se a interface de rede está em modo promíscuo:

# ./chkrootkit ps ls sniffer

O script chkrootkit usa vários comandos do sistema para realizar os seus testes, como egrep, strings, sed etc. Existe a possibilidade, numa máquina comprometida, de que esses comandos tenham sido adulterados e desse modo influenciem os resultados do teste. A opção -p permite especificar um path alternativo para binários confiáveis a ser usados pelo programa. Por exemplo, o próximo comando usa binários de um floppy:

# ./chkrootkit -p /floppy

Também é possível checar uma máquina provavelmente comprometida montando o disco dessa máquina (read-only e noexec) numa máquina de sua confiança. Esse método é mais seguro que a opção anterior, pois evita que bibliotecas dinâmicas e módulos de kernel (LKMs) maliciosos, entre outros, possam influenciar os resultados dos testes. Por exemplo, o comando a seguir verifica o disco de uma máquina montado abaixo de /mnt:

# ./chkrootkit -r /mnt

O chkrootkit aponta a existência de rootkits somente se encontrar "assinaturas" conhecidas nos arquivos testados. Entretanto, é possível invocar o programa em expert mode (opção -x) — nesse modo o conteúdo dos arquivos e resultados de comandos são mostrados e toda a análise é deixada a cargo do usuário. Por exemplo, caso o usuário esteja interessado em verificar se existem pathnames suspeitos dentro de comandos do sistema, ele pode procurá-los com:

# ./chkrootkit -x | egrep ‘^/’

Depois de achar um rootkit

Que fazer se houver um rootkit na sua máquina? O maior problema é que sua máquina foi comprometida e o invasor tem privilégios de superusuário nela. Se você possui outras máquinas semelhantes na sua rede é possível ainda que elas também tenham sido comprometidas usando a mesma vulnerabilidade.

É recomendável reinstalar todo o sistema operacional. Apenas restaurar os comandos modificados não é suficiente, pois você nunca vai ter certeza se o invasor não deixou algum backdoor que não foi descoberto. Recuperar o sistema a partir de um backup também é arriscado, em muitos casos o conteúdo do backup também está comprometido, porque nunca se sabe há quanto tempo o invasor estava em sua máquina. Também é interessante fazer um backup da máquina antes da reinstalação, isso pode ser útil caso você ou sua empresa tenham interesse numa investigação do ocorrido.

O mais seguro é reinstalar uma mídia de confiança (CD-ROM etc.), manter apenas os serviços necessários para o funcionamento da máquina e aplicar todos os patches sugeridos para o seu sistema. Em casos que envolvam sniffing, a mudança de todas as senhas também é necessária, bem como considerar o uso de conexões criptografadas.

Para saber mais

chkrootkit Homepage: www.chkrootkit.org/

Invisible Intruders — Rootkits in Practice: www.usenix.org/publications/login/1999-/features/rootkits.html

Know Your Enemy: project.honeynet.org/papers/enemy/


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux