Desbordamiento de la tabla CAM.
Oleg Petukhov, abogado en el campo del derecho internacional y la protección de datos personales, especialista en información seguridad, protección de la información y datos personales.
Canal de Telegram: https://t.me/protecciondelainformacion1
Grupo de Telegramas: https://t.me/protecciondelainformacion2
Sitio web: https://legascom.ru
Correo electrónico: online@legascom.ru
#proteccióndelainformación #seguridaddelainformación
El conmutador tiene una tabla CAM (Content Address Memory) que contiene el enlace de las direcciones MAC a los puertos del conmutador. Es decir, en esta tabla se indica qué direcciones MAC se aceptan en qué puerto. La tabla en SÍ tiene un Tamaño limitado, por ejemplo, para el conmutador Cisco Catalyst 2960, la tabla puede almacenar hasta 8192 direcciones MAC y la serie Catalyst 6000 puede almacenar hasta 128,000 direcciones MAC.
En el caso de que la tabla esté completamente ocupada, no se podrán agregar nuevos registros y todo el tráfico pasará a todos los puertos. En tal caso, el conmutador comenzará a funcionar como un concentrador normal, y todo el tráfico que pasa a través de este segmento de la red se puede escuchar de la misma manera que usamos en la sección anterior con la utilidad Wireshark. Por supuesto, un atacante no podrá escuchar todo el tráfico en la red local de esta manera, pero un interno que trabaje en un segmento de la red, por ejemplo, con la contabilidad, podrá interceptar el tráfico y obtener información confidencial.
Puede implementar este ataque utilizando la utilidad macchanger, que le permite cambiar las direcciones MAC.
Como ejemplo, realice la suplantación de la dirección MAC en una máquina conectada al conmutador.
root@kali:~# ifup eth0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/00:16:ec:f1:45:e8
Sending on LPF/eth0/00:16:ec:f1:45:e8
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 192.168.1.3 from 192.168.1.101
DHCPREQUEST of 192.168.1.3 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.3 from 192.168.1.101
bound to 192.168.1.3 -- renewal in 42928 seconds.
if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts
Cuando se habilitó, se envió una solicitud para obtener una dirección IP al servidor DHCP. A continuación, veamos el estado actual de las interfaces de red.
root@kali:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:16:ec:f1:45:e8
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:ecff:fef1:45e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3952 (3.9 KB) TX bytes:1780 (1.7 KB)
Interrupt:21 Base address:0xd800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
La dirección MAC real de nuestra interfaz de red es 00:16:ec:f1: 45: e8. Ahora esta dirección está registrada en la TABLA CAM del conmutador. Ahora cambiemos esa dirección.
root@kali:~# macchanger –r eth0
Current MAC: 00:16:ec:f1:45:e8 (unknown)
Faked MAC: 04:2f:11:65:fc:0a (unknown)
Reinicia la interfaz de red:
root@kali:~# ifdown eth0
root@kali:~# ifup eth0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/04:2f:11:65:fc:0a
Sending on LPF/eth0/04:2f:11:65:fc:0a
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 192.168.1.8 from 192.168.1.101
DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.8 from 192.168.1.101
bound to 192.168.1.8 -- renewal in 42928 seconds.
if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts
Veamos de nuevo la configuración de las interfaces de red.
root@kali:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr : 04:2f:11:65:fc:0a
inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:ecff:fef1:45e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5801 (5.9 KB) TX bytes:1100 (1.1 KB)
Interrupt:21 Base address:0xd800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Como puede ver, la dirección MAC de la interfaz eth0 ha cambiado. Con la ayuda de un script simple, puede hacer que se realicen acciones para cambiar la dirección MAC en un bucle que se ejecutará antes de que se desborde la tabla en SÍ. Escribir un guión de este tipo lo dejaré a los suscriptores del canal como tarea. Solo notaré que la utilidad macchanger aún nos será útil repetidamente cuando implementemos ataques de red.
Una vez señalada la amenaza, pasemos a las formas de protección. Muchas guías de seguridad recomiendan codificar la dirección MAC de la estación de trabajo en el puerto del conmutador o limitar el número de direcciones MAC que se conectan al puerto a una sola dirección. Estos consejos, por supuesto, son correctos, pero debe tener cuidado, ya que muy a menudo un puerto en el conmutador puede corresponder a varias direcciones MAC. Por ejemplo, el Switch usa todos los puertos, pero necesita conectar algunos puestos de trabajo más (debido a la expansión o, por el contrario, la contracción). La mejor solución en tal situación sería conectar otro conmutador a este y reservar el puerto de conexión del nuevo conmutador detrás de la dirección MAC correspondiente. Sin embargo, en el entorno económico actual, muchas empresas optan por ahorrar dinero y usan los mismos concentradores para conectarse.
También hay casos en que varias estaciones de trabajo se pueden conectar alternativamente al mismo puerto del conmutador. Por ejemplo, lo hacen a menudo en las Salas de reuniones. Por lo tanto, le aconsejo que al configurar las restricciones de conexión en las direcciones MAC no se deje llevar por el "giro de las tuercas" excesivo para evitar dificultades adicionales en el futuro.
Ahora pasemos a la parte práctica. Como ejemplo, considere la configuración del conmutador Cisco Catalyst 2960 con el sistema operativo IOS. Este modelo tiene 24 puertos a los que están conectados los usuarios. Debe asegurarse de que no más de tres máquinas se puedan conectar en cada puerto (en otras palabras, tres direcciones MAC). Para hacer esto, debe conectarse al conmutador de forma remota o mediante una consola y ejecutar los siguientes comandos:
Switch# conf t
Switch(config)# int range f0/1-24
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport port-security
Switch(config-if-range)# switchport port-security violation shutdown
Switch(config-if-range)# switchport port-security maximum 3
Switch(config-if-range)# switchport port-security mac-address sticky
Ahora, brevemente sobre lo que hace cada uno de los equipos. En la primera línea, pasamos al modo de configuración global, en la segunda, pasamos al modo de configuración de puertos. En el tercero, señalamos claramente que todo
los puertos seleccionados funcionarán en modo de acceso. A continuación, habilite la protección del puerto port-security. En las siguientes tres líneas, le indicamos al conmutador qué hacer en caso de que más de tres estaciones de trabajo intenten conectarse al puerto. Primero, especifique que debe deshabilitar el puerto y enviar el mensaje correspondiente a través de snmp y syslog. Por cierto, esta opción no se puede activar por la fuerza, ya que actúa de forma predeterminada. Además del modo shutdown que usamos, también hay protect y restrict. El significado de los dos últimos modos es que el puerto no se apagará (es decir, pasará al estado shutdown), sino que solo se bloquearán los paquetes cuando se detecte una violación relacionada con las direcciones MAC. La diferencia entre estos dos modos es que cuando se produce una situación de emergencia, restrict puede enviar un mensaje snmp - trap y syslog sobre una violación de la política de seguridad.
En el siguiente comando del conmutador, le indicamos cuántas direcciones MAC están listas para ver en ese puerto. En nuestro caso son tres. Finalmente, el último comando pone el puerto del conmutador en modo de entrenamiento, es decir, las tres primeras direcciones MAC que se recibirán a través de ese puerto y se almacenarán automáticamente en running-config.
Entonces, para resumir, diré que todos estos comandos son suficientes para evitar un ataque de desbordamiento de la tabla CAM.




