# Syn Flood

![](https://www.gta.ufrj.br/grad/15_1/dos/images/syn_flood.png)

Quando sua máquina conversa com outra através da internet ela quase sempre usa o protocolo TCP. Esse protocolo permite que duas máquinas abram uma conexão, ou seja, um canal de comunicação preestabelecido.

Para que essa conexão seja feita é realizado um procedimento chamado [Three-way handshake](https://es7evam.gitbook.io/ganeshicmc/redes/three-way-handshake), ou, numa tradução livre, Aperto de mão em três vias. O ataque SYN Flood toma vantagem justamente de um comportamento inusitado desse procedimento.

Imagine que a máquina A manda o SYN, mas ela não recebe um SYN/ACK como resposta. Isso pode acontecer por diversos fatores: problemas na rede, firewals mal configurados, quedas de energia, etc.

É por isso que o protocolo TCP tem os pacotes ACK, trata-se de um mecanismo de confirmação de recebimento de mensagens. Nesse caso, a máquina A entenderia que algo de errado aconteceu e ela reenviaria o pacote SYN. Da mesma forma, se a máquina B envia o SYN/ACK mas recebe um SYN novamente de A, ela entende que A não recebeu o seu SYN/ACK e reenviou o SYN.

O ataque então faz o seguinte: nós enviamos pacotes SYN sem parar, não importando qual seja a resposta do alvo. Ele pensará que nós realmente não estamos recebendo suas respostas e manterá várias conexões abertas por um tempo considerável.

Isso faz com que a tabela de conexões do alvo fique lotada com as nossas conexões, impedindo-o de abrir conexões com outras máquinas.

Para isso, usaremos uma ferramenta chamada Hping3:

`sudo hping3 -c <quantidade de pacotes> -d <tamanho do pacote> -S -p <porta alvo> -i u<tempo> --flood <ip do alvo>`

-c : Quantidade de pacotes a serem enviados\
-d : Tamanho de cada pacote a ser enviado -S: Usar a flag SYN do TCP\
-p : Porta da máquina destino (em geral não importa, desde que seja uma porta onde há um socket em modo LISTEN)\
-i u : tempo entre envios (em milissegundos: u100 == 100 milissegundos entre pacotes)\
\--flood: Envia pacotes o mais rápido possível

## Referências:

[RFC sobre SYN flood](https://tools.ietf.org/html/rfc4987)\
[Artigo sobre SYN Flood da Phrack Magazine](http://phrack.org/issues/48/13.html#article)\
[Repositório do Hping3 no Github](https://github.com/antirez/hping)\
[Wiki do Hping3](http://wiki.hping.org/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.ganeshicmc.com/redes/ataques/syn-flood.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
