En una red, los switches gestionan tablas de direcciones MAC para dirigir el tráfico entre sus diferentes puertos de manera más eficiente. A través del ataque de Mac Flooding un atacante podría colapsar esa tabla provocando que el switch pase a enviar los paquetes que le lleguen a través de todos sus puertos y de esa manera poder interceptar ese tráfico.

 

Los switches emplean una las tablas de direcciones MAC para dirigir los paquetes a destino de manera eficiente, los datos contenidos en estas tablas se aprenden dinámicamente a medida que el switch va gestionando tráfico, asignando las diferentes MAC a sus diferentes puertos dependiendo de a través de cual de ellos se llegue al destino. De esta manera el switch consigue una mayor eficiencia, reduciendo a la vez la carga en la red al solo tener que enviar las tramas a través del puerto adecuado.

Estas tablas tienen un tamaño máximo que depende del modelo de switch, en algunos casos se puede configurar pero siempre existe un tamaño máximo a partir del cual esta tabla ya no aceptará nuevas entradas. En un funcionamiento normal, existe un timeout que suele ser de pocos minutos (también suele ser configurable) lo cual asegura que solo permanezcan en esta tabla aquellas mac contra las que se haya (o recibido) tráfico recientemente lo cual asegura que nuevos destinos dentro de un tráfico legítimo sean tratados con normalidad.

En el caso que esta tabla se sature, el switch ya no sabrá a través de qué puerto debe enviar las tramas por lo que volverá a enviarlas a través de todos sus puertos, permitiendo a un atacante capturar el tráfico local en lan o vlan entre cualquier máquina, este es el ataque de Mac Flooding.

Mac Flooding

Como decíamos un atacante podría bombardear al switch con un flujo continuo de tramas cada una con una MAC falsa para saturar esa tabla rápidamente. Por ejemplo con la herramienta macof, un atacante podría generar hasta 8000 frames por segundo lo que le permitiría inundar la tabla MAC de un switch en pocos segundos. A partir de ese momento como decíamos, el switch comienza a redireccionar a todo el tráfico a través de todos los puertos y permitiría al atacante capturarlo con un sniffer.

Además de esto, no solo se colapsaría la tabla MAC del switch en cuestión sino de cualquier otro de capa 2 al que estuviera conectado ya que le llegarían de la misma manera todos los paquetes, lo cual provocaría a su vez el mismo efecto.

Mitigación

Para evitar este ataque, los principales fabricantes de switches incorporan en sus modelos funciones llamadas de Port Security. Estas funcionalidades no las encontraremos en switches básicos de bajo coste, pero se entiende que estos no se van a utilizar en la empresa o en entornos proclives a sufrir este tipo de ataques. Como decíamos las función de Port Security está implementada bajo switches Cisco, Juniper, Avaya, TP-Link... con diferencias en denominación y obviamente en comandos para activarla pero a grandes rasgos podríamos definir las siguientes funcionalidades:

  • Limitación en cada puerto de la cantidad de direcciones MAC que se pueden aprender para que en el momento que se alcance el máximo se descarten los paquetes de direcciones no conocidas.
  • Asignación estática de direcciones MAC en los puertos para que solo paquetes de ciertas MAC sean procesados.
  • Deshabilitación de puertos que no estén en uso.
  • Aprendizaje de direcciones MAC persistentes, que al conectar un dispositivo a un puerto, este aprenda la MAC del mismo y no acepte la conexión de ningún otro dispositivo.
  • Detección de violaciones de seguridad, que en el caso que se produzcan se apague el puerto.
  • Comprobación de direcciones MAC contra un servidor de AAA.