Ataque de inundação SYN

A inundação SYN explora uma vulnerabilidade do handshake TCP/IP na tentativa de interromper um serviço da Web.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Definir ataque de DDoS de inundação SYN
  • Explicar como funciona o ataque de inundação SYN
  • Diferenciar os diversos tipos de ataques de SYN
  • Entender algumas técnicas de mitigação de inundações SNY

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

O que é um ataque de inundação SYN?

A inundação SYN (ataque de porta entreaberta) é um tipo de ataque de negação de serviço (DDoS) com a intenção de deixar um servidor indisponível para o tráfego legítimo ao consumir todos os seus recursos disponíveis. Ao enviar pacotes de solicitação de conexão inicial (SYN) repetidamente, o invasor consegue sobrecarregar todas as portas disponíveis na máquina do servidor visado, fazendo com que o dispositivo atingido responda lentamente ou pare totalmente de responder ao tráfego legítimo.

Como funciona o ataque de inundação SYN?

Os ataques de inundação SYN funcionam explorando o processo de handshake de uma conexão TCP. Em condições normais, uma conexão TCP utiliza três processos distintos para estabelecer uma conexão.

  1. Primeiro, o cliente envia um pacote SYN ao servidor para iniciar a conexão.
  2. Em seguida, o servidor responde ao pacote inicial com um pacote SYN/ACK para confirmar a comunicação.
  3. Finalmente, o cliente devolve um pacote ACK para confirmar o recebimento do pacote do servidor. Após concluir essa sequência de envios e recebimentos de pacotes, a conexão TCP é aberta e consegue enviar e receber dados.
Diagrama do handshake de três vias do TCP

Para criar uma negação de serviço, o invasor se aproveita do fato de que, após ter recebido o pacote inicial SYN, o servidor irá responder com um ou mais pacotes SYN/ACK e esperar a etapa final do handshake. Veja como isso funciona:

  1. O invasor envia um grande volume de pacotes SYN para o servidor visado, muitas vezes com endereços IP falsificados.
  2. O servidor responde a cada uma das solicitações de conexão e deixa uma porta aberta pronta para receber a resposta.
  3. Enquanto o servidor espera o pacote ACK final, que não chega nunca, o invasor continua a enviar mais pacotes SYN. A chegada de cada novo pacote SYN faz com que o servidor mantenha uma nova conexão de porta aberta temporariamente por determinado tempo; após todas as portas disponíveis terem sido usadas, o servidor se torna incapaz de operar normalmente.
Animação de um ataque de DDoS de inundação SYN

Em termos de rede, quando um servidor deixa uma conexão aberta mas a máquina do outro lado não, a conexão é considerada entreaberta. Nesse tipo de ataque de DDoS, o servidor visado fica continuamente deixando conexões abertas e esperando que cada conexão chegue ao tempo limite antes que as portas fiquem disponíveis novamente. O resultado, então, é que esse tipo de ataque pode ser considerado um “ataque de porta entreaberta”.

A inundação SYN pode ocorrer de três maneiras diferentes:

  1. Ataque direto: uma inundação SYN na qual o endereço IP não é falsificado é conhecida como um ataque direto. Nesse ataque, o invasor não mascara o seu endereço IP. Como resultado do uso de um único dispositivo de origem com endereço IP real para criar o ataque, o invasor fica altamente vulnerável à descoberta e mitigação. Para criar o estado de porta entreaberta na máquina visada, o hacker impede que sua máquina responda aos pacotes SYN-ACK do servidor. Geralmente isso é conseguido por meio de regras de firewall, que detêm os pacotes de saída que não sejam pacotes SYN, ou por meio da filtragem de todos os pacotes de entrada SYN-ACK antes de chegarem à máquina do usuário mal-intencionado. Na prática, esse método é usado raramente (se é que é usado), pois a mitigação é bastante direta: basta bloquear o endereço IP de cada sistema mal-intencionado. Se usar uma botnet como a Mirai, o invasor não irá se preocupar em mascarar o IP do dispositivo infectado.
  2. Ataque falsificado: um usuário mal-intencionado também pode falsificar o endereço IP em cada pacote SYN que enviar para inibir os esforços de mitigação e tornar sua identidade mais difícil de ser descoberta. Porém, embora possam ser falsificados, os pacotes podem possivelmente ser rastreados até sua origem. Fazer esse tipo de trabalho de detetive é difícil, mas não é impossível, especialmente se os provedores de serviços de internet (ISPs) estiverem dispostos a ajudar.
  3. Ataque distribuído de negação de serviço (DDoS): se um ataque for criado com o uso de uma botnet, a probabilidade de rastrear o ataque até sua origem é pequena. Para obter um nível extra de dissimulação, o invasor também pode fazer com que cada dispositivo distribuído falsifique os endereços IP dos quais envia pacotes. Se usar uma botnet como a Mirai, geralmente o invasor não irá se preocupar em mascarar o IP do dispositivo infectado.

Ao usar um ataque de inundação SYN, um agente mal-intencionado pode tentar criar uma negação de serviço nos dispositivos ou serviços visados com um tráfego substancialmente menor que o de outros ataques de DDoS. Ao invés de ataques volumétricos, que visam a saturar a infraestrutura de rede ao redor do alvo, os ataques SYN precisam apenas ser maiores do que os registros acumulados disponíveis no sistema operacional do alvo. Se conseguir determinar o tamanho do registro acumulado e quanto tempo cada conexão ficará aberta antes de atingir o tempo limite, o invasor conseguirá atingir com exatidão os parâmetros necessários para desabilitar o sistema e, assim, reduzir o tráfego total ao volume mínimo necessário para criar a negação de serviço.

Como um ataque de inundação SYN é mitigado?

A vulnerabilidade da inundação SYN já é conhecida há algum tempo e diversas estratégias de mitigação têm sido utilizadas. Seguem algumas abordagens:

Aumentar a fila de registros acumulados

Cada sistema operacional no dispositivo visado tem um número determinado de conexões entreabertas permitidas. Uma possível resposta a altos volumes de pacotes SYN é aumentar o número máximo de conexões entreabertas que o sistema operacional irá permitir. Para aumentar com sucesso o máximo de registros acumulados, o sistema precisa reservar recursos de memória para lidar com todas as novas solicitações. Se o sistema não tiver memória suficiente para lidar com o aumento de tamanho da fila de registros acumulados, seu desempenho será afetado negativamente, mas isso ainda pode ser menos pior do que uma negação de serviço.

Reciclar a conexão TCP entreaberta mais antiga

Outra estratégia de mitigação envolve substituir a conexão entreaberta mais antiga assim que o registro acumulado estiver cheio. Essa estratégia requer que as conexões legítimas possam ser totalmente estabelecidas em menos tempo do que o necessário para atingir o máximo de registros acumulados com pacotes SYN mal-intencionados. Essa defesa em particular não funciona quando o volume do ataque é maior ou se a fila de registros acumulados for pequena demais para ser funcional.

Cookies SYN

Essa estratégia envolve a criação de um cookie pelo servidor. Para evitar o risco de interromper as conexões quando o máximo de registros acumulados for atingido, o servidor responde a cada solicitação de conexão com um pacote SYN-ACK, mas elimina as solicitações SYN dos registros acumulados e remove as solicitações da memória, deixando a porta aberta e pronta para estabelecer uma nova conexão. Se a conexão for uma solicitação legítima e o pacote ACK final for enviado da máquina cliente para o servidor, o servidor irá reconstruir (com limitações) a entrada SYN na fila de registros acumulados. Embora esse esforço de mitigação faça com que algumas informações sobre a conexão TCP sejam perdidas, isso ainda é preferível a permitir que a negação de serviço ocorra para usuários legítimos como resultado de um ataque.

Como a Cloudflare mitiga os ataques de inundação SYN?

A Cloudflare mitiga esse tipo de ataque, em parte, se posicionando entre o servidor visado e a inundação SYN. Quando a solicitação SYN inicial é realizada, a Cloudflare lida com o processo de handshake na nuvem e retém a conexão com o servidor visado até que o handshake do TCP seja concluído. Essa estratégia elimina o custo em recursos do servidor visado necessário para manter as conexões com os pacotes SYN falsos e o transfere para a rede Anycast da Cloudflare. Saiba mais sobre como funciona a proteção contra DDoS da Cloudflare.

Diagrama: Cloudflare interrompe os ataques de inundação SYN