Para entender un poco mejor este ataque primero tenemos que saber lo que es la tabla CAM (Content Addressable Memory)o memoria de contenido direccionable, en esta tabla el switch anota, entre otras cosas, el puerto y la dirección MAC a medida que va recibiendo paquetes.
¿Qué es?
Lo que hace MACOF es inunda la tabla CAM del switch de direcciones MAC aleatorias, por lo que las nuevas direcciones MAC no se pueden guardar y el switch empieza a enviar los paquetes a todos los puertos (como un hub) y, por lo tanto, podemos monitorear el tráfico que pasa a través de él.
Opciones de sintaxis:
- i:interfaz Especifique la interfaz a enviar. Ejemplo: -i eth0
- s:src Especifique la dirección IP de origen.Ejemplo: -s 192.168.41.11
- d:dst Especifique la dirección IP de destino. Ejemplo: -d 192.168.1.1
- e:Especifique la dirección de hardware de destino. Ejemplo: -e AA:BB:CC:00:11:22
- x:deporte Especificar puerto de origen TCP.
- y:dport Especifique el puerto de destino TCP.
- n:veces Especifique el número de paquetes a enviar. Ejemplo: -n 25
Inundación simple o dirigida:
La inuncadión simple consiste en lo que hemos visto anteriormente, MACOF envía tramas aleatorias llenando la tabla CAM del switch, éste se comporta como un hub enviando todos los paquetes que le llegan por todos sus puertos y pudiendo monitorear el tráfico de la red.
ejemplo: macof -i eth0 -d 192.168.1.1
Contramedidas:
- Podemos limitar el número de direcciones MAC que se conectan a un solo puerto en el Switch.
- Implementación de 802.1X: ofrece un mecanismo de autenticación para dispositivos que deseen unirse a uno de los puertos de acceso.
- Filtrado de MAC: limita el número de direcciones MAC
Ataque con MACOF:
Para empezar con el ataque, lo primero que tendremos que hacer es conectarnos a un switch y estar en su mismo segmento de red. A continuación, tenemos que tener Kali Linux en una máquina virtual, ya sea VMWare, virtual box, etc.
El esquema de red sería algo así:

Primero de todo vamos a cerciorarnos de que nuestras máquinas estén conectadas al switch, para esto vamos a nuestro navegador y escribimos la siguiente dirección: 192.168.1.1. En la pestaña llamada “clientes” vemos cómo hay 4 máquinas conectadas (tres máquinas físicas y una máquina virtual con Kali Linux):

Una vez ya conectados nos vamos a la máquina con Kali, abrimos un terminal y escribimos el siguiente comando: “man macof”, lo que nos muestra el comando “man” es una ayuda sobre el programa que queramos ejecutar, como podemos observar, nos muestra parámetros que podemos utilizar junto al comando “macof”

En la imagen 8 vemos cómo nuestra máquina está configurada con una dirección IP estática, para aprenderá configurarla de esta manera seguimos los siguientes pasos:
1-. Volvemos al terminal y escribimos: nano /etc/network/interfaces

2-. Ahora introducimos los siguientes parámetros:

3-. Ejecutamos el comando “ifdown eth0“y después “ifconfig eth0”:

4-. Como podemos observar ahora no tenemos dirección IP, esto es porque hace falta “levantar” el adaptador, para ello ejecutamos el comando “ifup eth0”:

Después de este inciso abrimos un Wireshark para comprobar que el tráfico de red que generen las dos máquinas restantes podemos tener acceso a ellos. Lo podemos abrir buscándolo o desde el terminal:

De las interfaces de red que nos salen elegimos “eth0”

Volvemos al terminal y escribimos “macof –i eth0 –d 192.168.1.1”:


Ahora abrimos un Wireshark y vemos cómo nos llega todo el tráfico generado por la máquina1 a la máquina2 en forma de ping (paquetes de tipo ICMP)

Vemos cómo la máquina1 (1.0.0.70) envía pings a la máquina2 (1.0.0.2) y yo tengo la IP 1.0.0.69:

Conclusiones:
En el último ejercicio se encuentran direcciones IP de diferentes redes, como por ejemplo la 192.168.1.230 y la 1.0.0.70, esto se debe a que hemos intentado hacer el ejercicio varios días y cada día le asignábamos IP diferentes.
Nos costó mucho tumbar al switch y cuando por fin lo hacíamos, Wireshark no nos mostraba el tráfico de red así que decidimos hacer el ejercicio con un switch diferente, en este caso uno de Cisco SG300-28 de 28 puertos Gigabit.