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)