Python黑帽編程 3.5 DTP攻擊

Python黑帽編程 3.5 DTP攻擊

在上一節,《Python黑帽編程 3.4 跨越VLANPython黑帽編程 3.4 跨越VLAN - 玄魂工作室--Coding - 知乎專欄》中,我們討論了一般的VLAN中實施攻擊的方法,這一節屬於擴展內容,簡單演示下Cisco特有的DTP協議的攻擊方法。

由於條件限制,本節的代碼我沒有在實際環境下測試,不保證有效,歡迎討論。

3.5.1 DTP協議

動態中繼協議 DTP(Dynamic Trunking Protocol)是一種 Cisco 私有協議。DTP 用於兩台交換機的直連二層埠探測對端的配置,自動協商出二層埠的鏈路類型和以太協議封裝進而與對端自適應。這樣當對端設備修改時,就不用手工修改本端配置,通過協議自適應更改即可。DTP 的重要作用是,在組網不確定的情況下,可以實現即插即用;修改網路拓撲時,也不用手工修改二層埠的配置。

DTP 利用第二層中繼幀,在兩台交換機的直連埠之間進行通信。DTP 報文僅限於兩個 直連埠之間的通信,維護兩個直連埠的鏈路類型和以太封裝類型。工作原理如圖2所示。

圖2

如果交換機開啟了DTP協議,攻擊者假冒交換機向目標交換機發送Dynamic desirable數據包,那麼會把目標埠變成Trunking埠,這意味著我們可以通過修改本機的配置進入任何一個VLAN,同時可以利用3.4節的方法進行VLAN跳躍攻擊,監聽所有數據了。

3.5.2 發送DYNAMIC DESIRABLE數據包

在Scapy的scapy.contrib.dtp包中有一個negotiate_trunk方法,原型如下:

def negotiate_trunk(iface=conf.iface, mymac=str(RandMAC())):n print "Trying to negotiate a trunk on interface %s" % ifacen p = Dot3(src=mymac, dst="01:00:0c:cc:cc:cc")/LLC()/SNAP()/DTP(tlvlist=[DTPDomain(),DTPStatus(),DTPType(),DTPNeighbor(neighbor=mymac)])n sendp(p)n

該方法第一個參數需要我們傳入發送數據包的網卡,第二個是可選參數,可以用來傳入要假冒的交換機的Mac地址,如果不傳入,會隨機產生一個。

調用該方法,就可以完成Dynamic desirable數據包的生成和發送工作。如下代碼所示:

圖3

數據包發送之後,會有一些延遲才會生效。

3.5.3 小結

本節主要講了如何利用DTP協議攻擊Cisco設備,本節的方法需要和3.4節的方法結合使用。

下一節,我們進入第四章《網路層攻擊》。

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

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

點擊打開二維碼

玄魂工作室-精彩不斷


推薦閱讀:

學習數據分析的8個 pandas資源
使用Python爬取網頁圖片
python內建函數的概略學習?
Python從零開始系列連載(6)——Python的基本數據類型(中)
python與numpy使用的一些小tips(5)

TAG:Python | 黑客Hacker | 玄魂工作室 |