atacando com Atacando com syn flood e hping, derrubando sites com syn flood e hping, o que é o Syn Flood, o que é hping

Publicado: agosto 21, 2009 em ataques, linux, normal
Tags:, , , , ,

Para entender o Syn Flood é preciso, mesmo que rapidamente, falar um pouco do TCP.
O protocolo TCP é orientado a conexão: primeiro cliente e servidor se conectam e somente após esta etapa é que os dados podem ser trocados. Semelhante a um casal, “só podem ter filhos se fizerem sexo”.

A etapa de “discar” no TCP é chamada de handshake de três vias e os flags TCP são usados para sinalizar qual etapa se está realizando. Antes de qualquer bit de dados, a seguinte troca de pacotes acontece entre cliente e servidor:
1. O cliente envia uma solicitação de conexão, com um pacote TCP sem dados, possuindo o flag de SYN ligado e os demais desligados. Por causa da presença do flag de SYN, este pacote é conhecido como pacote SYN
2. Se o servidor quiser e puder atender, devolve um pacote ao cliente ainda sem dados, com os flags de SYN e de ACK ligados. Esta segunda etapa é conhecida como SYN/ACK.
3. Se o cliente ainda quiser manter a conexão, devolve ao servidor um terceiro pacote sem dados, apenas com o flag de ACK ligado (SYN desligado).
Somente após a terceira etapa é que os dados podem ser trocados.
O mais importante para entender a gravidade do ataque é saber que o servidor, ao receber o primeiro pacote (SYN), se ele quiser atender (exemplo: serviço HTTP, porta 80), precisa antes de responder com o SYN/ACK, alocar recursos de hardware para atender esta nova conexão.
Como o TCP é um protocolo confiável, que trata de desordenamento e perdas de pacotes, estes recursos não são poucos, pois envolvem buffers de envio e de recebimento, controle de números seqüenciais, relógios diversos, enfim, muitos recursos de memória, principalmente.
E o que acontece se uma máquina fizer o SYN (etapa 1), o servidor alocar recursos e responder com o SYN/ACK (etapa 2) mas o cliente não completa o handshake e não realiza a última etapa? Os recursos ficam alocados?
Ficam, mas não para sempre. O servidor fica esperando o ACK do cliente e se o mesmo não chegar depois de certo tempo, os recursos são desalocados. Mas o fato é que estes recursos realmente permanecem alocados por algum tempo, mesmo que curto.
Aí que entra o SYN Flood (tradução literal: inundação de SYN). Nele o atacante gera quantos SYN’s a máquina dele for capaz e não responde nenhum deles. Tem-se que o servidor vai alocar recursos para cada um, como se fossem requisições legítimas, só desalocando quando acabar o tempo. É perfeitamente compreensível que o atacante consegue gerar pacotes de SYN muito mais rapidamente e facilmente do que o servidor consegue tratá-los.
Claro, hoje temos hardware com capacidades de memória e recursos gigantescos, mas não existem recursos infinitos. “Nada que uma imensidão de bots não consiga fazer parar”. Mais cedo ou mais tarde os recursos se esgotarão e o servidor ficará incapaz de atender clientes legítimos.
Este é o SYN flood!
—————————————————————————————————
Vamos falar agora do famoso HPING

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 a pilha de memória sofre um estouro e todas as requisições são desprezadas. NO POST ANTERIOR EU NÃO EXPLIQUEI SOBRE OS PARAMETROS D HPING, AGORA EU VOU DAR UMA EXPLICADA RAPIDA.

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 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms
len=44 ip=23.23.23.2 ttl=64 DF sport=80 flags=SA seq=1 win=32792 rtt=0.1 ms
len=44 ip=23.23.23.2 ttl=64 DF 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

Fonte: vivaolinux

Méritos tem que ser dados aos autores: cristofe, elgio e eu que trouxe este post para o meu blog

comentários
  1. karen disse:

    então amigo o assunto é interessante mas neste caso o mais dificil é conseguir a base de dados para realizar o ataque não é?E outro coisa de qual pc isto seria feito da nossa propria máquina?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s