Double Dragon: chkrootkit e portsentry, agora vai rolar pancadaria nos intrusos!

Este artigo descreve como instalar o chkrootkit e portsentry. Ele deve funcionar (talvez com pequenas alterações relativas caminhos etc) em todos os sistemas operacionais *nix. Chkrootkit é uma ferramenta para verificar e detectar sinais de um rootkit. Portsentry fornece serviços de vigilância a nível de segurança para a plataforma Unix.

[ Hits: 17.446 ]

Por: Mauro Risonho de Paula Assumpção A.K.A firebits em 11/02/2010


PortSentry e Logcheck



Instalando o Portsentry

# cd /tmp
# tar xvfz portsentry-1.2.tar.gz
# cd portsentry_beta/
# make linux
# make install


Portsentry será instalado em /usr/local/psionic/portsentry/.

Editar /usr/local/psionic/portsentry/portsentry.conf e especificar as portas que você quer que o portsentry proteja:

# Un-comment these if you are really anal:
#TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,[...]"
#UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,[...]"
#
# Use these if you just want to be aware:
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,[...]"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,[...]"
#
# Use these for just bare-bones
#TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,[...]"
#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321"

Deve-se bloquear portas que não estão em uso no sistema. Por exemplo, se você usar o IMAP (porta 143 TCP) no servidor, deve remover 143 da lista acima. O resto do portsentry.conf é bem comentado, mas normalmente os valores padrão devem funcionar.

Agora precisamos criar um script para portsentry (/etc/init.d/portsentry). Vamos executar o portsentry modalidade avançada chamada stealth, que é o meio mais poderoso para detectar portscans:

#!/bin/bash

case "$1" in
    start)
        echo "Starting Portsentry..."
        ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -atcp' | grep -iv 'grep' > /dev/null
        if [ $? != 0 ]; then
          /usr/local/psionic/portsentry/portsentry -atcp
        fi

        ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -audp' | grep -iv 'grep' > /dev/null
        if [ $? != 0 ]; then
          /usr/local/psionic/portsentry/portsentry -audp
        fi
        echo "Portsentry is now up and running!"
    ;;
    stop)
        echo "Shutting down Portsentry..."
        array=(`ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry' | grep -iv 'grep'
                       | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`)
        element_count=${#array[@]}
        index=0
        while [ "$index" -lt "$element_count" ]
        do
          kill -9 ${array[$index]}
          let "index = $index + 1"
        done
        echo "Portsentry stopped!"
    ;;
    restart)
        $0 stop  && sleep 3
        $0 start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
exit 0

Depois execute o comando:

# chmod 755 /etc/init.d/portsentry

A fim de iniciar o portsentry em no boot faça o seguinte:

# ln -s /etc/init.d/portsentry /etc/rc2.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc3.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc4.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc5.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc0.d/K20portsentry
# ln -s /etc/init.d/portsentry /etc/rc1.d/K20portsentry
# ln -s /etc/init.d/portsentry /etc/rc6.d/K20portsentry


Agora nós iremos iniciar o portsentry:

# /etc/init.d/portsentry start

Atenção: se você executar o chkrootkit e o portsentry pode reportar um bindshell infectado:

Checking `bindshell'... INFECTED (PORTS: 31337)

Isso é normal e não temos nada para se preocupar.

Instalando o Logcheck

# cd / tmp
# logcheck tar xvfz-1.1.1.tar.gz
# cd logcheck-1.1.1/systems/<seu tipo de sistema, por exemplo, Linux>


Agora mude a variável SYSADMIN em logcheck.sh. SYSADMIN é a pessoa que receberá a saída do logcheck por e-mail (isso pode ser um endereço de e-mail ou um usuário no sistema onde você instalar o logcheck):

[...]
# CONFIGURATION SECTION

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin

# Logcheck is pre-configured to work on most BSD like systems, however it
# is a rather dumb program and may need some help to work on other
# systems. Please check the following command paths to ensure they are
# correct.

# Person to send log activity to.
[email protected]

# Full path to logtail program.
# This program is required to run this script and comes with the package.

LOGTAIL=/usr/local/bin/logtail
[...]

Depois digite estes comandos:

# cd ../../
# mkdir -p /usr/local/etc/tmp
# make <seu tipo de sistema, por exemplo, Linux>


Isto irá instalar o logcheck em /usr/local/etc.

Agora temos que criar um job no cron para executar periodicamente logcheck. Edite o arquivo de cron do root (por exemplo /var/spool/cron/crontabs/root, ver tópico 2 "Instalando o Chkrootkit") e digite a seguinte linha:

0 3 * * * /usr/local/etc/logcheck.sh

Em seguida, execute:

# chmod 600 /var/spool/cron/crontabs/root
# /etc/init.d/cron restart


Isso irá chamar logcheck uma vez por dia às 3 da manhã. Ele irá informá-lo sobre eventos estranhos, as violações de segurança, os ataques do sistema etc. Se o seu sistema está exposto diretamente à internet, você notará que existem muitas atividades maliciosas na Internet e vai sentir uma sensação de segurança que é muito importante.

Links:
Mauro Risonho de Paula Assumpção
Fundador do BackTrack Brasil (BTB)
Pentester, Analista em Segurança
Desenvolvedor de Software
[email protected]
http://www.backtrack.com.br
última palestra ministrada: 05-fev-2009 Intel Moblin Day 2008-2009
http://www.intel.com/portugues/pressroom/releases/2009/0205.htm

Página anterior    

Páginas do artigo
   1. Double Dragon: chkrootkit e portsentry, agora vai rolar pancadaria nos intrusos!
   2. PortSentry e Logcheck
Outros artigos deste autor

Teste de vulnerabilidades com OpenVAS 3.0

PHPIDS - PHP Intrusion Detection System, deixe seu site livre de intrusos!

Traduzindo plugins do OpenVAS/Nessus para português

Os 5 princípios básicos de segurança para empresas

Wow! O que esta câmera de segurança está fazendo aí?

Leitura recomendada

PuTTY - Estabelecendo Chave Secreta com OpenSSH

Rootkit: Uma nova ameaça?

Carnivore e Altivore: Os predadores do FBI

Iptraf Sniffer - noções básicas

OpenBSD IDS - Solução Snort e BASE

  
Comentários
[1] Comentário enviado por removido em 12/02/2010 - 20:04h

Excelente artigo,o rootkit é um vírus que se camufla e altera os binários do sistema fazendo com que o invasor possa ter acesso de Root.Parabéns...

[2] Comentário enviado por luizvieira em 15/02/2010 - 06:56h

Ótimo artigo, sempre utilizei soluções conjugadas desse tipo. Acrescentar um snort + guardian nessa brincadeira faria o negócio ficar mais sério ainda, e aí sairíamos de double dragon para ninja gaiden hehehe

[3] Comentário enviado por #essence. em 08/04/2010 - 02:39h

Checking `wted'... 3 deletion(s) between Sat Apr 3 17:59:37 2010 and Sun Apr 4 00:05:20 2010

eu executei o chkrootkit e apareceu essa mensagem no log, isso é uma coisa ruim?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts