Analise Do Sistema de Deteccao de Intrus
Analise Do Sistema de Deteccao de Intrus
Analise Do Sistema de Deteccao de Intrus
Resumo
Este trabalho faz um breve resumo de ameaças que podem causar problemas a uma
rede de computadores, e apresenta o programa Snort, que é um programa de detecção de
intrusos que auxilia os administradores de redes na busca por problemas na rede ou na
detecção de ataques que seus servidores podem estar sofrendo. Para uma melhor
compreensão do Snort, tem um tutorial passo-a-passo da instação e duas simulações de
ataques.
1 Ameaças Digitais
A internet e os computadores estão pode toda parte, dentro das empresas, nas escolas,
nas casas, sendo parte do dia-a-dia da maioria das pessoas, que utilizam para diversão,
estudos, compras, trabalho, comunicação e outros fins. E dentro da maioria das empresas de
médio e grande porte existem hoje, servidores onde estão instalados sistemas que contém
informações sigilosas e necessárias para seu funcionamento, sendo que a falta ou perda de
acesso a esses sistemas ou dados pode parar com seu funcionamento e assim gerar perdas
financeiras..
Com a utilização destes sistemas informatizados dentro das empresas surge a
necessidade de criar mecanismos de segurança, visando manter a integridade e
disponibilidade.. Um servidor que esteja ligado a internet está sujeito a ameaças que podem
vir de qualquer parte do mundo, podendo citar como algumas ameaças vírus, worms, fraudes,
roubos de informação, espionagem ou o simples uso inadequado da rede.
Segundo estudo realizado pela IBM (1), revelou-se que o volume de ataques pela
Internet aumentou em 36% no primeiro semestre de 2010, em relação ao mesmo período do
ano anterior. Este foi o ano no qual a pesquisa registrou o maior índice de vulnerabilidades na
Web. De todas as brechas descobertas, 55% estavam relacionadas a aplicativos Web. Além
disso, mais da metade de todas as vulnerabilidades de segurança descobertas ainda não tinha
recebido correções até a conclusão do estudo.
Este problema faz com que a segurança da informação seja uma área da empresa de
grande importância, pois tem como desafio detectar e impedir as ameaças antes que elas
causem algum dano a rede, computadores ou servidores.
1.1 Engenharia Social
De acordo com Kevin Mitinick (2), a engenharia social usa a influência e a persuasão
para enganar as pessoas e convencê-las de que o engenheiro social é alguém que na verdade
ele não é. Como resultado, o engenheiro social pode aproveitar-se das pessoas para obter as
informações com ou sem o uso da tecnologia.
Por mais que a empresa tenha as melhores tecnologias de segurança, que seus
servidores estejam guardados em salas bem trancadas, pois os indivíduos são o elo mais fraco,
e são estes que podem trazer a insegurança para dentro da rede.
1.2 Phishing
Phishing ou Phishing Scams, são ataques de engenharia social que visam obter
informações sigilosas de suas vítimas, acessar sites falsos para obter acesso a credênciais de
acesso de bancos ou sites que possam conter alguma informação relevante, e uma das formas
de deste ataque que vem crescendo é feito por e-mail e mensageiros instantâneos (msn,
google talk, yahoo e outros) onde computadores infectados ou servidores de spam enviam
mensagens que visam persuadir a vítima a executar arquivos que vão em anexo ou em links
que são camuflados. Este tipo de ameaça merece destaque, pois é um meio muito utilizado
para o envio de virús, trojans e outros, para dentro das redes, pois o seu alvo é o elo mais
fraco da rede, o usuário.
Para instigar a vitima a executar arquivos anexos de e-mail ou abrir links do e-mail o
atacante envia e-mail criativos que tenta fazer com que o alvo caia na trapaça, abaixo segue
um exemplo de um e-mail enviado a partir de um computador já infectado, o remetente no
caso é uma pessoa conhecida do destinatário, o assunto desperta a curiosidade do usuario para
ver fotos de uma mulher supostamente violentada.
1.3 Botnet
Ataques de Força Bruta, do inglês “Brute Force”, são ataques utilizados para quebrar
senhas ou códigos de acesso onde são feitos inúmeras tentativas de descobrir a senha,
normalmente utiliza-se de programas que montam combinações de senhas até que uma seja
aceita.
3 Snort
A instalação do Snort será feita na distribuição Debian Linux, na versão 5.0 (Lenny).
Antes de iniciar a instalação do Snort, instale primeiro os programas que são
necessários para sua instalação, através dos comandos abaixo (esses comandos devem ser
executados com o usuário root):
aptitude update
aptitude install libpcap-dev libpcre++-dev
Crie uma pasta onde você irá colocar os arquivos para a instalação depois faça o
download do arquivo de instalação do snort:
mkdir /opt/snort
cd /opt/snort
wget -O snort.tar.gz --no-check-certificate http://www.snort.org/downloads/116
Agora tem que ser feito o download das regras do snort, mas para isso deve ser feito
primeir um cadastro no site (https://www.snort.org/signup), depois de se cadastrar, copie o
arquivo para a pasta “/opt/snort/”, depois descompacte o arquivo e faça a cópia dos arquivos:
cd /opt/snort
tar -zxf snortrules-snapshot-2860.tar.gz
cp -r rules /etc/snort/
cp -r so_rules /etc/snort/
Agora o snort está rodando em background, e está fazendo uma varredura nas
comunicações de dados e enviando estas informações para o arquivo “/var/log/snort/alert”, se
quiser visualizar essas informações em tempo real, utilize o comando abaixo:
tail -f /var/log/snort/alert
4 Testes de Uso
Neste capitulo serão feitas simulações de ataque para testar o snort, essas simulações
são exemplos simples para visualizar o funcionamento do snort, sendo que os ataques usados
por crackers são mais sofisticados.
Para a executar estes teste é necessário dois computadores ou duas maquinas virtuais,
na simulação a maquina que está com o snort instalado será o servidor e a outra será o cliente,
para realizar o primeiro teste, crie na maquina cliente os scripts “ssh_login.exp” e
“ssh_loop.bash” que estão no capítulo 5, anexo 1. No computador computador que representa
o servidor, instale o snort, conforme foi passado no capítulo 3.1 . Instale também o programa
servidor de acesso remoto ssh, através do comando (com o usuario root):
aptitude install openssh-server
Após fazer a instalação do SSH, inicie o snort no modo de analise de trafego e deixe o
comando tail executando para que seja exibido o log na tela, para isso, execute os comandos
abaixo:
snort -c /etc/snort/snort.conf -K ascii -i eth0 -D
tail -f /var/log/snort/alert
No computador que representa o o cliente, de onde vai ser iniciado o programa que vai
fazer as tentativas de descobrir a senha, crie um arquivo com o nome “dicionario_senhas.txt”
dentro da pasta onde foram criados os scripts “ssh_login.exp” e script “ssh_loop.bash”, nesse
arquivo escreva varias palavras, que serão utilizadas na tentativa de descobrir a senha, e
depois salve, feito isso entre na pasta onde está o script “ssh_loop.bash”, dê a permissão de
execução para os scripts e execute, com os comandos:
chmod +x ssh_loop.bash ssh_login.exp
./ssh_loop.bash
Após iniciar a execução observe que no computador que representa o servidor vão
aparecer mensagens indicando falha de autenticação no servidor ssh.
Nesse teste vai ser simulado um ataque de connection flood, onde um computador
cliente irá abrir inúmeras conexões com um servidor ftp, tentando gerar uma negação de
serviço. Para esse teste, compile o programa “ftp_flood” que está no capítulo 5, anexo2,
dentro do computador que representa o cliente de onde vão partir os ataques.
No computador que representa o servidor instale o programa proftpd que vai ser o
programa alvo do ataque de connection flood, para isso execute o comando abaixo:
aptitude install proftpd
Agora inicie o snort no modo de analise de trafego e deixe o comando tail executando
para que seja exibido o log na tela, para isso, execute os comandos abaixo:
snort -c /etc/snort/snort.conf -K ascii -i eth0 -D
tail -f /var/log/snort/alert
Após iniciar a execução observe que no computador que representa o servidor vão
aparecer mensagens indicando falha de autenticação no servidor ssh.
5 Anexos
Para utilizar esse script precisa ter instalado no linux o programa “expect”, se o linux
utilizado for o Debian, use o comando:
aptitude install expect
Após a instalação crie um arquivo com o nome “ssh_login.exp”, coloque dentro dele o
conteúdo que segue abaixo retirando as linhas tracejadas de INICIO e FIM.
# Definindo Variaveis
set user [lrange $argv 0 0 ]
set password [lrange $argv 1 1 ]
set ipaddr [lrange $argv 2 2 ]
set timeout -1
set ssh_cmd "$user@$ipaddr"
expect {
"(yes/no)?" {
send "yes\r"
exp_continue
} "*assword:*" {
send "$password\r"
exp_continue
} "*@*" {
send "echo Sucesso\r exit"
send_user "Sucesso\r\r"
exit 0
} "*denied*" {
send_user "Conexao nao permitida\n"
exit 1
} eof {
send_user "*** Conexao com o host perdida ***\n$expect_out(buffer)"
exit 1
}
}
send_user "\nFalha na Conexao.\n"
exit 1
------------ FIM ------------
Feito isso, deve-se dar a permissão de escrita para esse arquivo com o comando
abaixo:
chmod +x ssh_login.exp
if (argc<=2)
{
printf("Erro, voce nao digitou todos argumentos\n\n");
printf("Modo de uso: ftp_flood IP PORTA");
exit(0);
}
printf("Abrindo 500 conexoes com o host: %s \n",HOST);
printf("Executando... \n");
Bibliografia