Uma inundação SYN é uma forma de ataque DoS em que um invasor envia uma sucessão de solicitações SYN
ao servidor de um alvo na tentativa de consumir recursos suficientes do servidor para fazer com que o sistema não responda ao tráfego legítimo [1] .
Uma solicitação
SYN
e um pacoteSYN
são a mesma coisa
Os ataques de inundação SYN funcionam explorando o processo de handshake de uma conexão TCP. Em condições normais, o TCP apresenta três processos distintos para estabelecer uma conexão (Figura 1a).
SYN
( sincronizar ) ao servidor.SYN-ACK
, para ACK
( reconhecer ) a comunicação.ACK
para confirmar o recebimento do pacote do servidor e a conexão é estabelecida.Após completar esta sequência de envio e recebimento de pacotes, a conexão TCP está aberta e capaz de enviar e receber dados. Isso é chamado de handshake triplo TCP. Esta técnica é a base para toda conexão estabelecida usando TCP.
Para criar um DoS, um invasor explora o fato de que, após o recebimento de um pacote SYN
inicial, o servidor responderá com um ou mais pacotes SYN-ACK
e aguardará a etapa final do handshake. Cloudflare [2] descreve como funciona (Figura 1b):
SYN
ao servidor alvo, geralmente com endereços IP falsificados.ACK
final, que nunca chega, o invasor continua a enviar mais pacotes SYN
. A chegada de cada novo pacote SYN
faz com que o servidor mantenha temporariamente uma nova conexão de porta aberta por um determinado período de tempo e, uma vez utilizadas todas as portas disponíveis, o servidor não poderá funcionar normalmente. O ataque neste repositório foi conduzido em uma VM. São necessárias três máquinas para realizar o ataque. Uma máquina é usada como atacante , outra máquina é usada como vítima (ou seja, o servidor) e a terceira máquina é usada como observadora (ou seja, o cliente).
Para configurar o ataque, três VMs podem ser configuradas no mesmo computador host. Alternativamente, duas VMs podem ser configuradas em um computador host com a própria máquina host atuando como o terceiro computador.
Este ataque foi implementado sob a suposição de que os invasores estão na mesma rede física que as vítimas – simplificando assim a tarefa de determinar os números de sequência TCP e os números das portas de origem. Ferramentas sniffer podem ser usadas para coletar as informações necessárias.
O ataque neste repositório foi conduzido usando a ferramenta netwox
. Em seguida, uma ferramenta sniffer como o Wireshark [3] foi usada para capturar os pacotes atacantes. Enquanto o ataque estava em andamento, netstat -na
foi executado na máquina da vítima para comparar o resultado com o resultado anterior ao ataque.
# check the size of the queue for holding half-open connections
sudo sysctl -q net.ipv4.tcp_max_syn_backlog
# check the current usage of the queue;
# i.e., the number of half-open connections associated with some listening port
netstat -na
# one netwox tool that may be useful is tool number 76: synflood
netwox 76 --help
Biscoito SYN:
O ataque neste repositório foi conduzido através da manipulação de cookies SYN.
O uso de cookies SYN permite que um servidor evite a queda de conexões quando a fila SYN fica cheia. Em vez de armazenar conexões adicionais, a entrada da fila SYN é codificada no número de sequência enviado na resposta SYN-ACK. Se o servidor receber uma resposta ACK subsequente do cliente com o número de sequência incrementado, o servidor poderá reconstruir a entrada da fila SYN usando informações codificadas no número de sequência TCP e prosseguir normalmente com a conexão.
Embora esse esforço de mitigação perca algumas informações sobre a conexão TCP, é melhor do que permitir que o DoS atinja usuários legítimos como resultado de um ataque.
Os cookies SYN foram criados por DJ Bernstein [4] em resposta direta à inundação de SYN.
Use o comando sysctl
para ativar/desativar o mecanismo de cookie SYN:
sudo sysctl -a | grep cookie # Display the SYN cookie flag
sudo sysctl -w net.ipv4.tcp_syncookies=0 # turn off SYN cookie
sudo sysctl -w net.ipv4.tcp_syncookies=1 # turn on SYN cookie
Os cookies SYN são uma das muitas contramedidas que podem ser implementadas para impedir a inundação de SYN. Outras mitigações incluem aumentar o tamanho máximo da fila, reduzir o temporizador SYN-RECEIVED
e reciclar a conexão TCP semiaberta mais antiga.
^ "CERT Advisory CA-1996-21 TCP SYN Flooding e ataques de falsificação de IP" Carnegie Mellon University
^ "Ataque de inundação SYN" Cloudflare
^ "Sobre o Wireshark" Fundação Wireshark
^ "Biscoitos SYN" DJ Bernstein
Obrigado pelo seu interesse, este projeto foi divertido e esclarecedor!