Dos hosts establecen una conexión TCP mediante la denominada negociación en tres pasos/Three-way handshake (SYN, SYN-ACK, ACK). El ataque se concreta inundando de segmentos SYN el objetivo spoofeando a nivel de capa 3 con direcciones IP inexistentes o no alcanzables que habitualmente se generan de manera aleatoria. Lo que se espera es que si se envía una cantidad considerable de segmentos el objetivo agotará sus recursos esperando que se terminen las negociaciones en tres pasos de las conexiones TCP iniciadas, las cuales nunca llegaran (los segmentos ACK) ya que dichos host no existen.

Este ataque no se debe confundir con el TCP Connection Flood, el cual consiste en realizar un número elevado de conexiones TCP completas que sea superior al soportado por el objetivo. En ambos casos se trata de una ataque tipo DoS. En este caso vamos a intentar realizar el ataque usando dos herramientas de generación de paquetes de red muy conocidas como los son Nping y Hping3 notando una pequeña pero importante diferencia en el comportamiento de ambas al realizar el ataque.

Hping3

# hping3 --syn --flood --rand-source --destport 443 192.168.1.254
  • --syn Activar la negociación en tres pasos.
  • --flood Indicamos que envíe paquetes lo más rápido posible sin tener en cuenta las respuestas del objetivo.
  • --rand-source Genere una dirección IP aleatoria para los paquete enviados.
  • --destport Puerto del objetivo.

Con lo anterior pude inhabilitar en menos de 10 segundos el servicio HTTPS.

Nping

Con Nping no he podido realizar este ataque de manera satisfactoria en todos los casos:

# nping --hide-sent --no-capture --tcp SYN --dest-port 443 --source-ip rand --rate 1000000 --count 900000 192.168.1.254

Aunque aquí estoy replicando el mismo comportamiento, no se lleva acabo el ataque en todas las ocasiones. En las pruebas realizadas estuve indagando las diferencias de Hping3 y Nping a la hora de generar el tráfico de red y he encontrado que el primero genera aleatoriamente una dirección IP por cada paquete enviado mientras que el segundo genera una única dirección IP para todos los paquetes. En mi opinión esta puede ser la causa de no poder inhabilitar el servicio HTTPS el 100% de las veces. Aunque sí se puede realizar con Nping un ataque TCP Connection Flood.