*本文作者:ipenox;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
SNMP协议简介
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议,它通过UDP协议来操作,端口号是161/162。目前SNMP协议已经发展到第三版了,但很多设备还是运行在第一版或者第二版上。很多企业都会部署有某种基于SNMP协议的网管系统,用来监控设备的运行状态,或者管理设备的配置参数。
*图1:snmp协议示意图
SNMP协议风险
尽管功能强大,但是如果SNMP配置不当,又会带来很大的安全风险,特别是运行在互联网中的网络设备。例如,在SNMP配置中使用默认的团体名(community string)–最常见的默认团体名是public(只读)和private(读/写):仅使用只读的团体名就可以收集目标网络中的大量信息(例如接口地址、主机名、路由表等),给攻击者指明方向;而使用可写的团体名,则可能导致该网络设备配置被下载或者被改写,从而被攻击者控制,进而成为入侵企业网络的桥头堡。而由于SNMP是基于UDP协议的,某些SNMP报文(如GETBULK)又有较大的放大倍率,因而使用默认团体名的设备就可以被利用来做放射放大型的DDOS攻击。
互联网中使用默认可写团体名的设备
使用类似于zmap或者masscan这样的高速扫描器,可以很容易就发现整个Internet上使用private做默认读写团体名的大量IP地址,数量达到百万个以上。你可以在扫描时,用private团体名同时获取system.sysName.0(系统名字)和system.sysDescr.0(系统描述)这两个变量的值,然后将结果存在数据库中,便可以挖掘出大量有趣的目标来。我这里便有一个这样的经过精简的数据库,扫描时间大约2年前,约有96万的独立IP:
*图2:全球互联网使用private做团体名的设备库
其中有数以万计的的Cisco、华为、华三、Juniper网络设备:
*图3:在数据库中发现的网络设备
使用默认SNMP读写团体名–不要以为只有人手不足的小公司才会犯如此低级的错误,电信运营商、商业银行、大型科技公司有时候也会犯浑,将公司的内网或者机房置于极大的风险之中。尝试着以你熟悉的关键字在数据库里面搜索,也许会有意想不到的发现。
如何用可读写团体名渗透网络设备
一旦你知道网络设备的一个可读写(RW)的团体字符串,便很可能利用它来控制这个设备。Cisco、H3C、华为等厂商生产的网络设备大多支持SNMP网管协议,可以通过SNMP设置设备的某个参数,或者对设备配置进行备份或者更新。大家可以搜索一下产商的知识库,都有详细的例子,仅用snmpset等简单的命令行工具便可以完成。
而这个功能同样可以被别有用心的人滥用。例如,设备配置文件中包含用户名和密码,有时候密码用的是可逆的加密方式,这样我们就可以用telnet或ssh登录设备的控制台。我们也可以通过更新配置文件的方式,给目标设备添加一个后门用户。这便是利用可读写团体名进行网络设备渗透的原理。
下图展示了利用tftp收集到的一部分网络设备的运行配置文件:
*图4:收集到的一些运行配置文件列表
一个例子
我们来看一个具体的例子,也是在这个数据库里面查找出来的:
*图5:某公司的网络设备,使用private团体名
sysDescr.0描述中我们知道它是一个Cisco路由器,sysName.0系统名是Router0000.ji***n.com(抱歉这里我必须打码)。利用称为Cisco-CopyConfig的perl脚本,可以将其运行配置保存到你的tftp服务器上。我们来看看配置文件的一些片段:
*图6:配置文件片段1
*图7:配置文件片段2
从以上两个片段可以看到登陆密码是enable密码都是使用password 7类型保存的,而这种方式很容易就反查得到明文密码,大家可以在网上搜“password 7 decrypt”找个网站在线破解:
*图8:反查password 7类型的密码
反查网站URL:http://www.ifm.net.nz/cookbooks/passwordcracker.html
我们用admin用户登陆ssh,并使用enable密码进入特权模式:
*图9:ssh尝试登录目标
成功!
接着就可以看看arp表、路由等信息,能发现目标网络中的很多信息:
*图10:查看arp表
它还和多个地点的路由器建立了VPN Tunnel,看起来是一个比较大的内网。
即使没有enable权限,Cisco的命令行也提供了诸如ping、traceroute、telnet、ssh等工具,意味着你可以通过它作为一个跳板,对内网的其它主机进行探测,或者弱密码尝试,也许能碰上某个弱密码的服务器:
*图11:尝试连接内网其它机器
由于仅仅是做个演示,我没有再做其它的尝试了。从技术上来说,你可以在配置中创建一个新的VPN接入点,然后通过Cisco AnyConnect客户端将你的PC连入它的内网,这样便可以方便地使用你那些渗透神器了。
另一个例子
互联网SNMP扫描数据库一旦建立,我就尝试搜索熟悉的巨头的名字:Google、Facebook、Tencent、Baidu、Uber、Amazone、Apple、Yahoo、Microsoft等等,很惊奇地还真发现了其中一位的身影。这个例子大家可能会感兴趣。由于目前他们已经将SNMP默认团体名的问题修复了,所以拿出来简单说下,纯做技术的交流探讨。大家看图:
*图12:A公司居然也会犯如此低级的错误
姑且用A公司来指代吧。A公司在某国的一些网络设备(事后来看,似乎是A公司在各地的Store以及各地办公地点的,因为有很多Cisco wifi设备),用的都是Cisco设备,所以也可以用Cisco-CopyConfig备份配置。从配置中可以看到它们使用的用户名,以及密码的模式。其中某台Cisco开有VPN,使用Cisco AnyConnect客户端,用配置中的用户和密码就可以登录;他们还将Cisco Prime Infrastructure的管理界面NAT到互联网了,这个设备管理着所有其它的网络设备,用户和密码都不难猜到,登录后你可以将它上面管理的设备(有上百台)的详细配置导出下载,里面IP地址、root或admin的密码、snmp团体名等等–也就是说,手握这份超级地图,你可以在这个内网中畅游无阻了!虽然不是关键的数据中心,但也不禁替他们捏了一把汗!
后话
从上面的案例中可以看到,一旦掌握了某个网络边界设备的SNMP可读写团体名,就相当于打开了企业内网的一道门,攻击者随时可能长驱直入,企业内网将陷入极大的威胁之中。
虽然很多年前就有安全专家提醒公众注意SNMP默认团体名的安全风险,但时至今日,在互联网中仍然存在着大量的使用默认团体名的设备,可见安全意识的普及之路真是任重而道远啊。
*本文作者:ipenox;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
来源:freebuf.com 2018-03-28 08:00:01 by: ipenox
请登录后发表评论
注册