Python黑帽编程 3.5 DTP攻击

摘要

在上一节,《 Python 黑帽编程 3.4 跨越 VLAN 》中,我们讨论了一般的 VLAN 中实施攻击的方法,这一节属于扩展内容,简单演示下 Cisco 特有的 DTP 协议的攻击方法。

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 所示。

Python黑帽编程 3.5 DTP攻击

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 数据包的生成和发送工作。如下代码所示:

Python黑帽编程 3.5 DTP攻击

3

数据包发送之后,会有一些延迟才会生效。

3.5.3 小结

本节主要讲了如何利用 DTP 协议攻击 Cisco 设备,本节的方法需要和 3.4 节的方法结合使用。

下一节,我们进入第四章《网络层攻击》。

4.0 节《网络层攻击概述》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单 专栏 ”—>”Python 黑帽编程 进入即可。

查看完整系列教程,请关注我的微信订阅号( xuanhun521 ,下方二维码),回复“ python ”。问题讨论请加 qq 群: Hacking 1 群): 303242737   Hacking 2 群): 147098303

Python黑帽编程 3.5 DTP攻击

玄魂工作室 - 精彩不断

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: