Detectando rootkits e malwares em sistemas Linux

Este artigo tem como objetivo apresentar a ferramenta Rootkit Hunter. Não apresentaremos aqui as definições de rootkit e malware.

Sobre o Rootkit Hunter

Rootkit Hunter (rkhunter) é um script que realiza várias checagens sobre o sistema local para tentar detectar conhecidos rootkits e malwares. Ele também realiza verificações para ver se os comandos foram modificados, se arquivos de inicialização do sistema foram modificados, e várias verificações sobre as interfaces de rede, incluindo checagens para aplicações de escuta (listening).

Detalhes sobre o rkhunter podem ser encontrados na página oficial do projeto.

Instalação

Podemos efetuar a instalação do rkhunter atráves do código-fonte, disponível em  http://sourceforge.net/projects/rkhunter/files/ ou através de pacotes pré-compilados disponíveis nas distribuições.

Para facilitar a apresentação da ferramenta, irei demonstrar a instalação no Debian 8, cuja versão atual é a 1.4.2

Para quem preferir a instalação via código-fonte tem que observar as dependências necessárias. No README da ferramente tem tudo bem explicado.

Para instalar o rkhunter, execute o seguinte comando:

# apt-get install rkhunter -y

 Executando o Rootkit Hunter

Após a instalação, podemos executar o rkhunter em sua maneira mais simples como o seguinte comando:

# rkhunter -c

Esse comando irá executar a checagem do sistema de maneira interativa, solicitando que você pressione <ENTER> após cada checagem feita.

Vale ressaltar que na primeira execução, o rkhunter atualiza sua base de propriedades de arquivos que serão verificados. Caso você queira atualizar essa base manualmente, basta executar:

# rkhunter --propupd

Para atualizar a base do rkhunter, execute regularmente o comando:

# rkhunter --update

Após a execução da checagem, o rkhunter irá mostrar um sumário do resultado da execução.

Observe o resultado abaixo:

System checks summary
=====================

File properties checks...
    Files checked: 147
    Suspect files: 0

Rootkit checks...
    Rootkits checked : 379
    Possible rootkits: 0

Applications checks...
    All checks skipped

The system checks took: 4 minutes and 4 seconds

All results have been written to the log file: /var/log/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)

Apesar de não ter encontrado nenhum arquivo suspeito e nenhum rootkit, a execução mostrou 1 warning. Essa advertência pode ser vista durante a execução do rkhunter ou analisando o log que foi gravado após a checagem.

Vejamos na imagem abaixo o warning:

warning

A verificação do log é importante, pois o rkhunter te dá dicas do que pode ser feito para resolver o problema. Vejamos o trecho do warning no arquivo de log /var/log/rkhunter.log

[12:57:51]   Checking if SSH root access is allowed          [ Warning ]
[12:57:51] Warning: The SSH and rkhunter configuration options should be the same:
[12:57:51]          SSH configuration option 'PermitRootLogin': yes
[12:57:51]          Rkhunter configuration option 'ALLOW_SSH_ROOT_USER': no

Observe que o rkhunter verificou que o servidor SSH está permitindo o acesso com o usuário root e é indicado que desabilite essa opção.

Outras maneiras de execução

Se você explorar o manual do rkhunter (man rkhunter) verá que ele tem muitas possibilidade de execução. Uma das maneiras que eu gosto de utilizar é a execução silenciosa, muito utilizada quando automatizo para utilizar em processos de monitoramento:

# rkhunter -c -q

Com essa opção (-q) ele irá executar sem exibir as saídas das checagens. Detalhe que ele não mostra o sumário da execução, sendo possível apenas a verificação do arquivo de log.

Caso você queira a exibição do sumário, basta inserir a opção, conforme mostrado a seguir:

# rkhunter -c -q --summary

Dessa forma, o sumário será exibido normalmente.

Uma outra maneira de execução, que não é realizada por padrão, são os testes extras. Para verificarmos os testes possíveis, execute o seguinte comando:

#  rkhunter --list tests

Serão exibidos todos os testes disponíveis para execução:

Current test names:
    additional_rkts all apps attributes avail_modules deleted_files
    filesystem group_accounts group_changes hashes hidden_ports hidden_procs
    immutable known_rkts loaded_modules local_host malware network
    none os_specific other_malware packet_cap_apps passwd_changes ports
    possible_rkt_files possible_rkt_strings promisc properties rootkits running_procs
    scripts shared_libs shared_libs_path startup_files startup_malware strings
    suspscan system_commands system_configs trojans

Grouped test names:
    additional_rkts => possible_rkt_files possible_rkt_strings
    group_accounts  => group_changes passwd_changes
    local_host      => filesystem group_changes passwd_changes startup_malware system_configs
    malware         => deleted_files hidden_procs other_malware running_procs suspscan
    network         => hidden_ports packet_cap_apps ports promisc
    os_specific     => avail_modules loaded_modules
    properties      => attributes hashes immutable scripts
    rootkits        => avail_modules deleted_files hidden_procs known_rkts loaded_modules other_malware possible_rkt_files possible_rkt_strings running_procs suspscan trojans
    shared_libs     => shared_libs_path
    startup_files   => startup_malware
    system_commands => attributes hashes immutable scripts shared_libs_path strings

Podemos executar os testes por nomes ou por grupos. Iremos demonstrar a execução do teste de aplicações em um sistema desatualizado (Debian 7.9). Executaremos o seguinte comando:

# rkhunter --enable apps

Observe o resultado da execução:

apps

Três problemas encontrados.

Vamos analisar o log:

[13:41:23] Info: Starting test name 'apps'
[13:41:23] Checking application versions...
[13:41:23]   Checking version of Exim MTA                    [ OK ]
[13:41:23] Info: Application 'exim' version '4.80' found.
[13:41:23]   Checking version of GnuPG                       [ Warning ]
[13:41:23] Warning: Application 'gpg', version '1.4.12', is out of date, and possibly a security risk.
[13:41:23] Info: Application 'httpd' not found.
[13:41:23] Info: Application 'named' not found.
[13:41:23]   Checking version of OpenSSL                     [ Warning ]
[13:41:24] Warning: Application 'openssl', version '1.0.1e', is out of date, and possibly a security risk.
[13:41:24]   Checking version of PHP                         [ OK ]
[13:41:24] Info: Application 'php' version '5.4.45' found.
[13:41:24]   Checking version of Procmail MTA                [ OK ]
[13:41:24] Info: Application 'procmail' version '3.22' found.
[13:41:24] Info: Application 'proftpd' not found.
[13:41:24]   Checking version of OpenSSH                     [ Warning ]
[13:41:24] Warning: Application 'sshd', version '6.0p1', is out of date, and possibly a security risk.
[13:41:24] Info: Applications checked: 6 out of 9

Podemos observar que ele encontrou versões desatualizadas de alguns softwares, e que os mesmos estão com possíveis riscos de segurança. Eu destaquei em negrito os três problemas encontrados para melhor visualização.

Dicas

  • Caso o rkhunter encontre arquivos com problemas ou mesmo um rootkit em seu sistema, verifique o log com as informações após o problema encontrado. Geralmente a dica te dá os passos a serem feitos para corrigir o problema. Caso não, procure na internet como resolver o problema encontrado. Na pior das hipóteses, você terá que reinstalar o sistema.
  • Mantenha sempre seu sistema atualizado. Isso evita que atacantes explorem vulnerabilidades aproveitando de pacotes desatualizados com problemas de segurança.
  • Você pode usar um NMS como o Zabbix para monitorar o rkhunter. Tanto monitoramento do log para verificar os warnings como também a quantidade de rootkits e problemas encontrados de acordo com o sumário após o final da execução.

Conclusão

Vimos como é importante utilizar uma ferramenta para detectar rootkits, malwares e outras pragas digitais que possam comprometer seu ambiente computacional, seja um simples desktop, ou um servidor físico, virtual ou na nuvem.

Manter um sistema sempre com as atualizações em dia evita correr riscos desnecessários.

Nada melhor também do que garantir a segurança do seu ambiente executando ferramentas como o Rootkit Hunter continuamente.

Comentário(s) (2)

Adicione seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.