Resumo
Nesse artigo entenderemos uma das grandes dificuldades dos administradores de rede de computadores, que são as tentativas de acessos indevidos ou ataques investidos na rede. O interesse aqui é mostrar que a melhor defesa se faz quando se conhece a natureza do ataque.
Foi utilizada a distribuição
Linux Debian 4 com o kernel versão 2.6.2x para testes e exemplos usados para o desenvolvimento desse artigo.
Introdução
O
HPING é um software poderoso quando se fala de ataque de negação de serviço e para tanto é preciso conhecer a relação cliente/servidor, ou seja, three-way handshake. As mensagens servidor/cliente são trocadas em 3 vias.
O cliente envia uma requisição de conexão: pacote com flag syn com um determinado número de sequência x. O servidor recebe o pacote e responde com uma mensagem de reconhecimento: flag syn-ack com um número de sequência x+1 e y. O cliente reconhece o pacote syn-ack com y+1 e a conexão está estabelecida.
Para complementar, a conexão é fechada quando o cliente ou servidor envia um pacote com flag fin ou de forma abrupta com uma flag rst. Com base nestes conhecimentos, um ataque do tipo Syn-flood ou enxurrada de pacotes é utilizado para desestabilizar ou derrubar recursos computacionais e podem acontecer em vários níveis do protocolo TCP.
O ataque consiste no envio de uma grande quantidade de pacotes com flags setadas SYN para a vítima, de tal maneira que a mesma não consiga responder a todos as requisições. Com um grande número de pacotes SYN apilha de memória sofre um estouro e todas as requisições são desprezadas.
Exemplos de ataque
Exemplo 1:
A sintaxe do comando é a seguinte:
$ hping2 <host da vítima> <parâmetros>
# hping2 23.23.23.2 -p 80 -S -c 3
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=32792 rtt=0.1 ms
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=2 win=32792 rtt=0.1 ms
Nesta linha disparamos: -p 80 -c 3 (-p aponta a porta de envio dos pacotes e -c --count count seta a quantidade de pacotes). Desta maneira podemos avaliar as respostas do alvo.
Exemplo 2:
# hping2 23.23.23.2 -p 80 -S --faster --rand-source
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes
Nesta linha disparamos: -p 80 -S --fast --rand-source (-S setamos a flag como syn, --fast Alias for -i u10000. O Hping irá enviar 10 pacotes por segundos; --rand-source habilita o modo radom e troca o ip de origem dinamicamente). Desta forma enviaremos a cada segundo 10 tentativas de conexão sem esperar a resposta do host-alvo com ips diferentes a cada pacote enviado. Até o momento em que este alvo não poderá responder todas as requisições e o kernel negará o serviço.
Obs.: CUIDADO com o teste utilizando esta linha, pois o host de destino não irá responder caso a segurança necessária não esteja implementada.
Etherape no momento da simulação do Ataque
Exemplo 3:
# hping2 23.23.23.2 -p 80 -S --faster --rand-dest
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes
Nesta linha disparamos: -p 80 -S --fast --rand-dest (-S setamos a flag como syn, --fast Alias for -i u10000. O Hping irá enviar 10 pacotes por segundos; --rand-dest habilita o modo radom e troca o ip de destino dinamicamente). Desta forma enviaremos a cada segundo 10 tentativas de conexão sem esperar a resposta do host-alvo com ips alvos diferentes a cada pacote enviado.
As flags podem ser setadas das seguintes formas:
- -F --fin - Seta FIN tcp flag.
- -S --syn -Seta SYN tcp flag.
- -R --rst - Seta RST tcp flag.
- -P --push - Seta PUSH tcp flag.
- -A --ack - Seta ACK tcp flag.
- -U --urg - Set URG tcp flag.
- -X --xmas - Set Xmas tcp flag.
Modo de escuta:
HPING2 em modo de escuta. Utilizando esta opção o hping aguarda pelo pacote que contém esta assinatura e finaliza o pacote que contém a assinatura.
Exemplo.:
# hping2 -9 --listen 234-09sdflkjs45 -TESThello_word