No código acima, atualizei o endereço IP de destino para "10.9.0.5", que corresponde ao endereço IP da vítima conforme mencionado na criação dos contêineres. Também defini a porta de destino como 80, que é comumente usada para serviços HTTP. Esse código permite que eu envie pacotes TCP SYN para a vítima e inicie uma conexão TCP com ela.
Ao tentar fazer a conexão telnet múltiplas vezes, o ataque não pareceu ter sido bem-sucedido, como mencionado no guia:
Ao mudar para o código em C, devido à alta velocidade, o ataque funciona corretamente e o destino não é mais atingível:
A explicação para esse sucesso é que, como Python é mais lento que C, o código consegue enviar muitos pacotes e inibir a conexão. Isso significa que o servidor não consegue responder a todas as requisições que recebe, causando uma sobrecarga. Esse tipo de ataque é chamado de denial of service (DoS) e pode afetar a disponibilidade de um serviço online.
A SYN Cookie Countermeasure é uma técnica usada para resistir a ataques de SYN flood. A técnica consiste em escolher números de sequência TCP iniciais de forma especial pelos servidores TCP. Dessa forma, o servidor pode evitar perder conexões quando a fila de SYN fica cheia. Em vez de armazenar conexões adicionais, uma entrada da fila de 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 é capaz de reconstruir a entrada da fila de SYN usando as informações codificadas no número de sequência TCP e prosseguir normalmente com a conexão.
Ao habilitar a SYN Cookie Countermeasure, mesmo utilizando o código muito mais rápido em C, consegui me conectar via telnet com a vítima, indicando que a proteção foi bem sucedida. Isso significa que o servidor foi capaz de distinguir entre pacotes SYN legítimos e falsos, e não criou entradas desnecessárias na fila de SYN.
Após ter feito o dump do pacote TCP, verificamos que o código estava aparentemente correto. No entanto, foi encontrado um problema ao tentar encerrar a conexão forçadamente no host. O host não respondia aos comandos de fechamento e mantinha a conexão aberta. Tentei várias soluções alternativas, mas nenhuma delas funcionou.