quarta-feira, 16 de setembro de 2009

Rootkit Hunter - Uma ferramenta para a sua segurança


O Rootkit Hunter (rkhunter) procura no seu sistema por rootkits,
backdoors, sniffers e exploits (conhecidos e desconhecidos)

Pesquisa por:
 - mudanças no hash MD5 de ficheiros;
 - ficheiros que normalmente são criados pelos rootkits;
 - ficheiros executáveis com permissões anómalas;
 - strings suspeitas nos módulos do kernel;
 - ficheiros ocultos em directórios do sistema;
e opcionalmente pode pesquisar entre ficheiros.



Usar apenas rkhunter por si só não garante que um sistema não seja comprometido. É recomendado executar testes adicionais, tais como chkrootkit e unhide, por exemplo.

rkhunter pode ser instalado através dos repositórios oficiais. Pode instalá-lo com synaptic ou através do terminal com o comando (executado como root):
# aptitude install rkhunter

Ao instalar rkhunter, serão feitas 2 perguntas:
Choose this option if you want rkhunter to be run automatically via cron.daily.
Activate daily run?
(escolha esta opção se quer que o rkhunter seja executado automaticamente todos os dias) 
Choose this option if you want rkhunter databases to be updated automatically via cron.weekly.
Activate weekly database update?
(escolha esta opção se quer actualizar automaticamente a base de dados do rkhunter semanalmente)

Em ambas responderemos Sim/Não (Yes/No) conforme o que quisermos.

Depois de responder, o processo de instalação finalizará.

Se o instalar com synaptic, estas perguntas não serão feitas.

Eis as opções disponíveis para executar o rkhunter

Parametros válidos:
--checkall (-c) : Check system
--createlogfile* : Create logfile
--cronjob : Run as cronjob (removes colored layout)
--display-logfile : Show logfile at end of the output
--help (-h) : Show this help
--nocolors* : Don't use colors for output
--report-mode* : Don't show uninteresting information for reports
--report-warnings-only* : Show only warnings (lesser output than --report-mode,more than --quiet)
--skip-application-check* : Don't run application version checks
--skip-keypress (-sk)* : Don't wait after every test (non-interactive)
--quick* : Perform quick scan (instead of full scan)
--quiet* : Be quiet (only show warnings)
--update : Run update tool and check for database updates
--version : Show version and quit
--versioncheck : Check for latest version
--bindir * : Use instead of using default binaries
--configfile * : Use different configuration file
--dbdir


* : Use as database directory
--rootdir * : Use instead of / (slash at end)
--tmpdir * : Use as temporary directory
Explicit scan options:
--allow-ssh-root-user* : Allow usage of SSH root user login
--disable-md5-check* : Disable MD5 checks
--disable-passwd-check* : Disable passwd/group checks
--scan-knownbad-files* : Perform besides 'known good' check a 'known bad' check

Parâmetros múltiplos são permitidos:
*) Parâmetro apenas pode ser usado com outros parâmetros

Eis um exemplo de execução:
 # rkhunter -c
[ Rootkit Hunter version 1.3.2 ]
Checking system commands...
Performing 'strings' command checks
Checking 'strings' command [ OK ]
Performing 'shared libraries' checks
Checking for preloading variables [ None found ]
Checking for preload file [ Not found ]
Checking LD_LIBRARY_PATH variable [ Not found ]
Performing file properties checks
Checking for prerequisites [ OK ]
/bin/bash [ OK ]
/bin/cat [ OK ]
/bin/chmod [ OK ]
/bin/chown [ OK ]
...

 Checking for rootkits...
Performing check of known rootkit files and directories
55808 Trojan - Variant A [ Not found ]
ADM Worm [ Not found ]
AjaKit Rootkit [ Not found ]
aPa Kit [ Not found ]
Apache Worm [ Not found ]
Ambient (ark) Rootkit [ Not found ]
...

Performing additional rootkit checks
Suckit Rookit additional checks [ OK ]
Checking for possible rootkit files and directories [ None found ]
Checking for possible rootkit strings [ None found ]
Performing malware checks
Checking running processes for suspicious files [ None found ]
Checking for login backdoors [ None found ]
Checking for suspicious directories [ None found ]
Checking for sniffer log files [ None found ]
Performing trojan specific checks
Checking for enabled inetd services [ Warning ]
Performing Linux specific checks
Checking kernel module commands [ OK ]
Checking kernel module names [ OK ]
 Checking the network...
Performing check for backdoor ports
Checking for UDP port 2001 [ Not found ]
Checking for TCP port 2006 [ Not found ]
Checking for TCP port 2128 [ Not found ]
Checking for TCP port 14856 [ Not found ]
Checking for TCP port 47107 [ Not found ]
Checking for TCP port 60922 [ Not found ]
Performing checks on the network interfaces
Checking for promiscuous interfaces [ None found ]
Checking the local host...
Performing system boot checks
Checking for local host name [ Found ]
Checking for local startup files [ Found ]
Checking local startup files for malware [ None found ]
Checking system startup files for malware [ None found ]
Performing group and account checks
Checking for passwd file [ Found ]
Checking for root equivalent (UID 0) accounts [ None found ]
Checking for passwordless accounts [ None found ]
Checking for passwd file changes [ None found ]
Checking for group file changes [ None found ]
Checking root account shell history files [ OK ]
Performing system configuration file checks
Checking for SSH configuration file [ Not found ]
Checking for running syslog daemon [ Found ]
Checking for syslog configuration file [ Found ]
Checking if syslog remote logging is allowed [ Not allowed ]
Performing filesystem checks
Checking /dev for suspicious file types [ None found ]
Checking for hidden files and directories [ None found ]

Checking application versions...
Checking version of Exim MTA [ OK ]
Checking version of GnuPG [ OK ]
Checking version of OpenSSL [ OK ]
Checking version of Procmail MTA [ OK ]
System checks summary
=====================
File properties checks...
Files checked: 128
Suspect files: 2
Rootkit checks...
Rootkits checked : 107
Possible rootkits: 0
Applications checks...
Applications checked: 4
Suspect applications: 0
The system checks took: 5 minutes and 27 seconds
All results have been written to the logfile (/var/log/rkhunter.log)
One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)

Depois de tudo isto, e o exame é bastante profundo e abundante, vou verificar o ficheiro rkhunter.log situado em /var/log/

Para poder visualizar este ficheiro, tem de abri-lo como root.
Para tal, e para fazê-lo desde um terminal:


  • Se você usa Ubuntu pode fazer:

cd /var/log

seguido de:

sudo gedit rkhunter.log

Será pedida a sua palavra-passe de utilizador.


 Continuando em Debian...


Para poder visualizar este ficheiro, tem de abri-lo como root. (no meu caso não tenho o sudo configurado e gosto mais de usar root temporáriamente, fechando-o quando já não necessito)

Para tal, e para fazê-lo desde um terminal:


$ su
palavra-passe:************ (meta a sua palavra-passe de root)
# cd /var/log
/var/log# kate rkhunter.log

A indicação de /var/log antes de # indica o directório ou pasta onde nos encontramos.

Neste caso uso Kate (editor de texto do KDE). Podia usar Kedit (kedit) também... ou Kwrite (kwrite)... ou Nano (nano)... ou Pico (pico)... ou Vim (vim). Se você usa Gnome pode usar Gedit (gedit) por exemplo.

Entre parêntesis pus o nome que se usa no terminal para cada um deles.

É apenas uma questão de gostos, podendo usar aquele que mais gostar, se bem que tanto Kedit, Kwrite, Kate ou Gedit são bastante simples de usar e outros como vim por exemplo não são tão intuitivos na sua interface.

Depois de usar o terminal, feche a sessão de root com o comando:

exit

Depois de analisar o .log do rkhunter não encontrei nada fora do normal. Cabe a si interpretar a informação mediante os serviços que tem executando-se no sistema, entre outras coisas mais.

Tradução e adaptação da página de debianhelp.co sobre rkhunter

Sem comentários:

Enviar um comentário

É favor manter a boa educação nos comentários. Qualquer comentário ofensivo, racista, desprestigioso, apenas com objectivo de inundar o blogue ou comentários de publicidade não solicitada serão eliminados. Serão aceites comentários em Português, Espanhol e Inglês. Comentarios en Portugues, Español y Ingles seran aceptados. Comments in Portuguese, Spanish and English will be accepted.