Москва
+7-929-527-81-33
Вологда
+7-921-234-45-78
Вопрос юристу онлайн Юридическая компания ЛЕГАС Вконтакте

Estouro da mesa CAM.

Обновлено 04.09.2025 07:28

Oleg Petukhov, advogado na área de Direito Internacional e proteção de dados pessoais, especialista em segurança da informação segurança, proteção de informações e dados pessoais.

Canal Telegram: https://t.me/protecaodaInformacao

Grupo Telegram: https://t.me/protecaodaInformacao1

Site: https://legascom.ru

E-mail: online@legascom.ru

 

#proteçãodaInformação #Segurançadainformação

O switch possui uma tabela CAM (Content Address Memory), que contém a ligação de endereços MAC às portas do switch. Ou seja, essa tabela indica quais endereços MAC são aceitos em qual porta. A auto-tabela tem um tamanho limitado, por exemplo, para o Cisco Catalyst 2960 switch, a tabela pode armazenar até 8.192 endereços MAC, e o Catalyst 6000 series Pode armazenar até 128.000 endereços MAC.

Se a tabela é ocupada inteiramente, as entradas novas não poderão ser adicionadas, e todo o tráfego passará a todas as portas. Nesse caso, o switch começará a funcionar como um hub normal e todo o tráfego que passa por esse segmento de rede poderá ser ouvido da mesma forma que usamos na seção anterior, usando o utilitário Wireshark. Obviamente, um invasor não poderá ouvir todo o tráfego na rede local dessa maneira, mas um insider que trabalha no mesmo segmento de rede, por exemplo, com contabilidade, poderá interceptar o tráfego e receber informações confidenciais.

Você pode implementar esse ataque usando o utilitário macchanger, que permite alterar os endereços MAC.

Como exemplo, substituiremos o endereço MAC em uma máquina conectada ao switch.

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

Quando ativado, uma solicitação era enviada ao servidor DHCP para obter um endereço IP. Em seguida, veremos o status atual das interfaces de rede.

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)

O endereço MAC real da nossa interface de rede é 00:16:ec:f1: 45: E8. Atualmente, esse endereço está registrado na tabela CAM do switch. Agora vamos mudar esse endereço.

root@kali:~# macchanger –r eth0

Current MAC: 00:16:ec:f1:45:e8 (unknown)

Faked MAC: 04:2f:11:65:fc:0a (unknown)

Перестартуем сетевой интерфейс:

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

Vejamos novamente a configuração da interface de rede.

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 você pode ver, o endereço MAC da interface eth0 mudou. Usando um script simples, você pode forçar ações para mudar o MAC address em um laço, que seja executado até que os excessos da auto-tabela. Vou deixar a redação desse roteiro para os assinantes do canal como tarefa de casa. Observarei apenas que o utilitário macchanger será útil para nós mais de uma vez ao implementar ataques de rede.

Tendo identificado a ameaça, vamos passar para as formas de nos protegermos. Muitas diretrizes de segurança recomendam que você vincule o endereço MAC da estação de trabalho à porta do switch ou limite o número de endereços MAC conectados à porta a um endereço. Essas dicas são, obviamente, corretas, mas é preciso ter cuidado aqui, pois muitas vezes uma porta em um switch pode corresponder a vários endereços MAC. Por exemplo, o switch usa todas as portas, mas você precisa conectar várias outras estações de trabalho a ele (devido à expansão ou, inversamente, à redução). A melhor solução nessa situação seria conectar outro switch a este e reservar a porta de conexão do novo switch para o endereço MAC correspondente. No entanto, nas atuais condições econômicas, muitas empresas preferem economizar e usar os mesmos hubs para conexão.

Há também casos em que várias estações de trabalho podem ser conectadas à mesma porta do switch, por sua vez. Por exemplo, isso geralmente é feito em salas de reunião. Portanto, ao configurar restrições nas conexões de endereços MAC, aconselho a não se deixar levar pelo excessivo "aperto dos parafusos" para evitar dificuldades adicionais no futuro.

Agora vamos para a parte prática. Como exemplo, vejamos a configuração do switch Cisco Catalyst 2960 com o sistema operacional iOS. Este modelo possui 24 portas às quais os usuários estão conectados. É necessário garantir que não mais do que três máquinas possam se conectar a cada porta (em outras palavras, três endereços MAC). Para fazer isso, conecte-se ao switch remotamente ou usando o console e execute os seguintes 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

Agora vamos falar brevemente sobre o que cada uma das equipes está fazendo. Na primeira linha, nós comutamos ao modo de configuração global, e na segunda linha, nós comutamos ao modo de configuração de porta. No terceiro, afirmamos explicitamente que todos

as portas selecionadas funcionarão no modo de acesso. Em seguida, ative a proteção de segurança de porta. Nas três linhas seguintes, nós dizemos ao interruptor o que fazer se mais de três estações de trabalho tentam conectar à porta. Primeiramente, indicamos que é necessário desabilitar a porta e enviar a mensagem apropriada via snmp e syslog. A propósito, você não pode forçar essa opção a ser ativada, pois ela opera por padrão. Além do modo de desligamento que usamos, há também protect e restrict. O significado dos dois últimos modos é que a porta não será desligada (ou seja, mudará para o estado de desligamento), mas apenas os pacotes serão bloqueados se uma violação relacionada aos endereços MAC for detectada. A diferença entre estes dois modos é que quando uma situação de emergência ocorre, restrict pode enviar um mensagem snmp trap e syslog sobre uma violação da Política de segurança.

No próximo comando do switch, especificamos quantos endereços MAC estamos prontos para ver nesta porta. No nosso caso, são três. Por fim, o último comando alterna a porta do switch para o modo de aprendizagem, ou seja, os três primeiros endereços MAC que serão recebidos por essa porta serão salvos automaticamente no running-config.

Então, para resumir, direi que todos esses comandos são suficientes para evitar um ataque ao estouro da tabela CAM.