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

Ataques ao STP. 1

Обновлено 06.09.2025 04:45

 

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 protocolo STP (Spanning Tree Protocol) foi projetado para impedir que os pacotes façam looping na rede quando houver rotas duplicadas. Funciona da seguinte forma. Primeiramente, são detectados os switches que estão interligados. Então o Bridge-raiz, o principal, switch-raiz, é selecionado. Então, de acordo com um algoritmo especial, as portas do switch serão bloqueadas, o que cria loops na topologia resultante.

Para construir uma estrutura de árvore de rede sem loops, um switch raiz deve ser definido na rede, a partir da qual essa árvore é construída. O interruptor com o mais baixo valor do identificador é selecionado como o switch-raiz. O identificador do interruptor é um número do Oito–byte, os seis bytes mais baixos de que seja o MAC address de sua unidade de controle, e os dois bytes superiores são configurados manualmente. Isto permite que o administrador de rede influencie o processo de seleção do switch raiz. Se o administrador não interferir nesse processo, o switch raiz será selecionado aleatoriamente - será um dispositivo com o endereço MAC mínimo da unidade de controle. Essa escolha pode estar longe de ser racional. Consequentemente, você deve selecionar o switch raiz baseado na topologia de rede disponível e manualmente atribuir-lhe o identificador o menor. Quando selecionado automaticamente, o switch com um valor de endereço MAC mais baixo de sua unidade de controle se torna o switch raiz. Em seguida, a porta raiz é definida para cada switch. Esta é a porta que tem a distância de rede a mais curto ao switch raiz. Para cada segmento de rede lógica, é selecionada uma chamada ponte designada, uma das portas da qual receberá pacotes do segmento e os transmitirá para a ponte raiz através da porta raiz desta ponte.

O que um atacante pode fazer? Assim como no exemplo anterior, ele pode fingir ser um switch, enviar um pacote BPDU para o switch atacado, no qual ele pode falsificar a prioridade, o endereço MAC, para se tornar o próprio switch raiz e usá-lo para interceptar o tráfego de rede. O switch raiz transforma-se esse com a prioridade mais alta. Se diversos switches têm a mesma prioridade, o MAC address está usado para selecionar o switch raiz, e esse com a prioridade mais baixa transforma-se o endereço raiz.

Vamos fazer um pequeno trabalho prático para detectar os endereços MAC de outras máquinas e substituir o MAC por conta própria. Para isso, precisaremos do sniffer Wireshark novamente. É necessário, como no exemplo com hubs, habilitar a escuta da interface de rede. Só que agora estaremos interessados não no tráfego HTTP, mas no STP. Precisamos identificar o endereço MAC do switch raiz. A fim obter esta informação, você precisa de conhecer a topologia de rede. Você pode obter o valor do MAC address da porta raiz usando Wireshark.

A fim obter a informação sobre endereços MAC, você precisa de ver o valor dos campos de origem e de destino no encabeçamento do quadro interceptado. Estamos interessados na fonte. Para o endereço falso de nossa central telefônica, especificamos um endereço menor, por exemplo, reduzido em um, como no exemplo abaixo.

root@kali:~# macchanger –mac=xx:xx:xx:xx:xx:xx-1 eth0

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

Faked MAC: xx:xx:xx:xx:xx:xx (unknown)

Redesenhando a interface de rede.

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

 

À revelia, as prioridades devem ser as mesmas, respectivamente, o protocolo STP selecionará as portas com o mais baixo MAC para a rota.

Agora o atacante precisa de enviar um pacote de BPDU em que para especificar seu interruptor ID. Outros switches também enviam seus IDs em resposta e, se o identificador enviado pelo invasor contiver o menor MAC, com prioridades iguais, ele será selecionado como o root.

Você pode criar um pacote BPDU falso da seguinte maneira.

Na janela PackEth package constructor, você deve especificar os endereços MAC da origem e do destinatário do pacote. O endereço de origem deve ser falso.

Os seguintes valores são especificados no campo User defi ned network payload:

o identificador de versão do protocolo STA é de 2 bytes. O Switches deve apoiar a mesma versão do protocolo STA, se não uma configuração de loop ativo pode ser estabelecida.;

O tipo BPDU é 1 byte. Há dois tipos de BPDU-uma configuração BPDU – isto é, um aplicativo para que a oportunidade transforme - se um switch raiz, com base em que a configuração ativa é determinada, e uma notificação BPDU da reconfiguração, que seja enviada pelo interruptor que detecta um evento que exige a reconfiguração -

uma falha de linha de comunicação, uma falha de porta, uma mudança no switch ou nas prioridades de porta.;

bandeiras são 1 byte. Um bit contém o sinalizador de alteração de configuração, o segundo contém o sinalizador de confirmação de alteração de configuração.;

O ID do switch raiz é 8 bytes.;

a distância até a raiz é de 2 bytes.;

A identificação do interruptor é 8 bytes.;

O ID da porta é de 2 bytes.;

O tempo de vida da mensagem é de 2 bytes. Medido em unidades de 0,5 segundos, é usado para identificar mensagens desatualizadas. Quando um pacote de BPDU passa por um switch, ele adiciona ao tempo de vida do pacote o tempo de atraso do switch.;

O tempo de vida máximo da mensagem é de 2 bytes. Se o pacote de BPDU tem uma vida que excede o máximo, está ignorado pelo switches.;

intervalo de hello interval through which BPDU packets are sent;

O atraso da mudança de Estado é de 2 bytes. O atraso determina o tempo mínimo para que as portas do switch se tornem ativas. Tal atraso é necessário para eliminar a possibilidade de ocorrência temporária dos laços quando os estados de porta mudam ao mesmo tempo durante a reconfiguração. O pacote da notificação de reconfiguração BPDU falta todos os campos exceto os primeiros dois. Você pode enviar o pacote completo clicando em Enviar.

Se nas etapas precedentes nós calculamos corretamente o MAC dos outros participantes STP, a seguir na teoria o algoritmo deste protocolo deve voltar a calcular as rotas de modo que todo o tráfego seja enviado a nossa porta falsa. Para evitar ser detectado, o hacker precisará garantir que o tráfego seja entregue através de sua máquina mais para o destino. Caso contrário, todo o tráfego não irá a lugar nenhum e o fato da falsificação do MAC será rapidamente detectado. No entanto, não resolveremos esse problema no âmbito deste post.

Que medidas devem ser tomadas para se livrar dessa vulnerabilidade?

Antes de mais nada, é necessário proibir a circulação de pacotes BPDU das portas que não têm nenhum switches. E se esse pacote chegar, mude essa porta para o modo de desligamento. Em seguida, precisamos proteger nosso switch raiz para que, sob nenhuma circunstância, outro switch raiz possa ser selecionado, incluindo um atacante. Não será difícil para um atacante ajustar a prioridade mais altamente do que aquela do interruptor principal real, e o MAC address é menor assegurar-se de que o atacante pareça ser raiz.

Para resolver este problema, nós precisamos de comutar todas as portas do interruptor a um modo especial STP chamado portfast. Depois disso, o cliente conectado a tal porta não participará da resolução de rotas usando o algoritmo STP (isso pode levar bastante tempo, até 40 segundos para construir a topologia da rede), e somente depois disso eles começarão a transmitir dados do Usuário através da porta. Por padrão, o modo portfast está desabilitado nos switches Cisco, portanto, teremos que configurá-lo manualmente. Também configuraremos a desativação da porta no caso de receber um pacote BPDU.

Switch# conf t

Switch (config)# int range f0/1-24

Switch (config-if-range)# spanning-tree portfast

Switch(config)# spanning-tree portfast bpguard default

Switch(config)# int f0/1

Switch (config-if)# spanning-tree guard root

O conteúdo das duas primeiras linhas nos é familiar a partir dos exemplos anteriores. No terceiro, ativamos o modo portfast. Mais, nós indicamos que o uso dos pacotes de BPDU nestas portas contraindicated. E os dois últimos comandos são executados para proteger a ponte raiz. Ou seja, assumimos que o outro switch está conectado ao nosso Na porta f0/1 e, consequentemente, deve ser usado como root.

Agora, mesmo se um atacante envia um pacote de BPDU com a prioridade mais alta e um MAC address mais baixo ao interruptor, ainda não pode transformar-se o switch-raiz e reorientar todo o tráfego através dse.