Desbordamiento de la tabla CAM para Sniffing de datos

En los Switchs existe una relación directa entre el puerto y las direcciones MAC de los dispositivos conectados directamente, por ejemplo: cuando se conecta un dispositivo a un puerto ‘X’ de un switch y este envía una trama, la MAC origen queda registra en dicho puerto, lo siguiente que realiza el switch es visualizar la dirección MAC destino y buscar en la tabla CAM (Content-addressable memory) esa dirección MAC y que puerto tiene asociado para reenviar la trama a dicho puerto, si no encuentra una asociación envía la trama por todos los puertos ( también denominado: por saturación ), excepto por el puerto de entrada de la trama. Cuando el dispositivo al que iba dirigido la trama responde, el Switch coge la dirección MAC origen y la asocia al puerto por donde se recibió la trama.

Pero esta tabla de manera determinada no asocia las direcciones a dichos puertos para siempre, existe un temporizador, normalmente de 5 minutos, después de estos 5 minutos la asociación desaparece si no se ha recibido una trama con la dirección MAC origen.

cam
Imagen 1. Ejemplo de tabla CAM.

El método por saturación que ejecuta el switch cuando no tiene una MAC registrada en su tabla CAM, se puede forzar, una forma de hacerlo es haciendo que el Switch entre en modo: “fail-open”, en el modo fail-open el switch entra en un estado de espera y todas las tramas que le llegan las reenvía por todos los puertos ( por saturación ) sin importar si ya tiene una dirección MAC en concreto asociada a un puerto. Es decir, con ello lo que conseguiríamos es que lleguen hasta nosotros todas las tramas que estén circulando a través del switch.

red
Imagen 2. Red para la PoC.

Siguiendo la imagen superior, intentamos realizar un desbordamiento de la tabla CAM del switch, enviando  tramas con MAC aleatorias desde “DebianHack”. Una herramienta  a utilizar para este fin sería “macof” que esta dentro del paquete de herramientas de DSNIFF, para instalarla ejecutaremos:

apt-get install dsniff

Para utilizarla no hay más que escribir: “macof” entonces se empezaran a enviar tramas con direcciones MAC generadas aleatoriamente a través de la interfaz de red.

macofflood.PNG
Imagen 3. Macof en funcionamiento.

Este ataque es útil cuando tenemos un Switch con máximo de direcciones MAC bajo, en este ejemplo yo estoy virtualizando un binario de un switch Cisco que tiene la posibilidad de tener en la tabla hasta una máximo de 183046404 de direcciones.

mac
Imagen 4. Tabla CAM.

Lanzar un ataque de desbordamiento de la tabla CAM sobre este Switch se convierte en algo baladí, lo único que provocaríamos seria un  DoS; la tabla CAM nunca llegará a llenarse completamente antes de que se empezaran a eliminar las primeras direcciones MAC registradas en el ataque, por que, recordemos que el tiempo predeterminado para la persistencia de las MACs en la tabla suele ser por defecto 5 minutos e inundar el switch con más de 180 millones de MACs llevaría muchísimo más que 5 minutos.

unparsegundos
Imagen 5. 4491 direcciones MACs registradas en un par de segundos después del inicio del ataque.

Hay otros Switchs en el mercado que tienen tablas  muchísimo más pequeñas y que hacen que en cuestión de 5 o 10 segundos la tabla este completamente llena y entonces entre en modo “fail-open”, por ejemplo este switch de 8 puertos con 1k, este con 2k, pero son Switch para redes pequeñas,si nos vamos a algo más grande, tendríamos este Juniper con casi 290k direcciones MAC.

Una forma de prevenir este tipo de ataques en Switchs Cisco y evitar un ataque de DoS es restringir el numero de MACs por puerto, como ya hable en su momento en está entrada.

9 comentarios sobre “Desbordamiento de la tabla CAM para Sniffing de datos

  1. hola amigo tenia que hacer eso .. colocar el numero de la interfaz.. ahora te pregunto algo amigo yo le agregue la ip fue directamente a la interface de la vlan 1 aunque me funciono no del todo correcto la ip no se agrega a esa interface cierto? a cual es la que debo de agregar disculpa

    1. Tienes que comprobar, como lo digo en la entrada, si el Switch alcanzó el número de MACs permitidas o simplemente le hiciste un DDoS, es decir un ataque de denegación de servicio. Recuerdo que el punto de hacer entrar el Switch en modo fail-open es hacer que el Switch reenvie todas las tramas por todos los puertos y hacer que desde cualquier puerto puedas escuchar toda la comunicación que circula por él. Si el Switch simplemente se cuelga, no has conseguido el ataque.

      Para que compruebes abre la terminal del Switch, escribe enable, si tienes contraseña ponla y si no directamente escribe show mac address-table count, en la última linea verás el espacio de MACs que te quedan.

      1. hola deivid gracias mira , cuando comence a enviar las tramas lo que me di cuenta que se lleno fue lo siguiente te escribiré textualmente lo que me sale a escribir show mac address-table count
        MAC entries for vlan 1
        Dynamic address Count : 292
        Static Adress Count 0
        Total Mac address 292
        total mac address space available 673511
        el espacio disponible nunca lo toco pero si se lleno? otro tipo de memoria?? donde esta el error gracias amigp

      2. Si llegaste a ver en total Mac address la misma cantidad que tienes en total Mac address space available, entonces lo mas seguro es que si que entraste en modo fail-open. Para estar aún más seguro podrías hacer alguna comunicación de un punto A a un punto B, y desde un punto C con Wireshark activo, y escaneando la interfaz principal deberías recibir datos de esa comunicación.

        Un saludo!

    1. Hola Maximuzve, te diría que no, recuerda que primero tendrias que inundar la tabla CAM con MACs aleatorias por lo cual tendrias que tener un SO detrás con una herramienta para provocar el modo fail-open. Recuerda que Packet Tracer es un simulador y está muy limitado. De todas formas te invito a que pruebes GNS3 y VirtualBox para que puedas montarte un laboratorio como este, yo tengo una entrada que ayudara a ello:

      https://deividsdocs.wordpress.com/2016/10/30/gns3-iou-virtualbox-y-wireshark/

      Espero haberte ayudado.

      1. hola muchas gracias ya lo comprobe amigo , usando kali y le monte una imagen a un switch en gns3 pero sucede un problema amigo cuando uso el en la terminal del kali comienza a enviar mac aleatorias pero en ningún momento se inunda que podría estar hacia mal creo que el comando era macof o algo asi puedes guiarme después de colocar ese comando que mas añadir? después de dicho comando tengo que agregar alguna interfaz? gracias

      2. Buenas Alberto, con el comando Macof sin ninguna opción debería funcionar, pero si quieres con la opción -i puedes especificar la interfaz por donde se enviaran las tramas. De todas formas comprueba la cantidad de MACS que acepta la tabla CAM del Switch, y verás si es posible inundarla o no, por qué como bien comenté a veces es demasiado alta la cantidad de MACs que acepta antes de entrar en modo fail-open. Tambien podrías intentar con dos Máquinas distintas con MACOF, asi la velocidad del proceso de duplicaría.

        Saludos Alberto.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s