警惕SNMP默认团体名导致的网络入侵

*本文作者: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(freebuf)

原文发表时间:2018-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

周末娱乐:讲真,这才是我所说黑客的定义!

看到一篇挺好玩的文章,哈哈,翻译过来你们感受一下这geekstyle的魔性。 我一基友,在俄罗斯bash.org上po了一个帖子,贼6!所以我决定转一下,po到...

20150
来自专栏后台系统海量服务

自适应柔性模型

“弃车保帅”, 是对柔性的一个最形象的描述。但是传统的柔性,一般存在各种缺陷。

19850
来自专栏Python中文社区

Github上影响力最大的十位Pythoner

10、Shipeng Feng [1] 来自:北京市 Fllowers:213 Stared:59 代表项目:plan [2] - 一个用Python...

25660
来自专栏张善友的专栏

IISWeb应用防火墙WAF

随着Web应用的爆炸式成长,传统的IDS设备对于应用层尤其是HTTP应用层就显得越来越力不从心了。2008年,大规模SQL自动注入让Web安全越来越被人们所关注...

40650
来自专栏PPV课数据科学社区

QQ空间(日志、说说、个人信息)python爬虫源码(一天可抓取 400 万条数据)

爬虫功能: QQSpider 使用广度优先策略爬取QQ空间中的个人信息、日志、说说、好友四个方面的信息。 判重使用“内存位”判重,理论上亿数量级的QQ可瞬间判...

57450
来自专栏玄魂工作室

CTF实战21 CTF题目练习和讲解三(讲解部分)

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

11820
来自专栏Golang语言社区

网络IO之阻塞、非阻塞、同步、异步总结

1、前言   在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看...

35350
来自专栏北京马哥教育

你所写过的最好的Python脚本是什么?

这是网友在 Quora 上提的同名问答帖,本文摘编了排名前两名的答案。得到最多赞的用户介绍了他写的在Facebook上面感谢好友的脚本。排名第二的答案介绍了他写...

41290
来自专栏Albert陈凯

网络IO(NIO)之阻塞、非阻塞、同步、异步总结

网络IO之阻塞、非阻塞、同步、异步总结 1、前言   在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型...

30940
来自专栏北京马哥教育

动画演示9个超有趣的Linux命令

19150

扫码关注云+社区

领取腾讯云代金券