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; Ambients
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/
|