网络通信 频道

基于SNMP的信息扫描与网络安全

SNMP(Simple Network Management Protocol——简单网络管理协议)用于在网络中管理一些配置,如防火墙、计算机系统,以及路由器等,并提供了一种从网络上的设备中收集网络管理信息的方法。从路由器到计算机、打印机,所有连入网络中的设备都可以通过SNMP来监控和管理,因此被网络管理员所广泛使用。笔者在此不介绍SNMP协议的体系结构和在网络中的用途,而是讨论SNMP给网络带来的安全隐患问题。

SNMP存在的安全问题

几乎所有的网络设备和操作系统都支持SNMP,也就是说只要启用了SNMP服务的系统和网络设备都存在或多或少的安全问题——因为一个漏洞已由位于匹兹堡的卡内基梅隆大学的CERT协作中心于2002年2月中旬发现和公布。此漏洞主要位于大多数公司实施的标准协议中。笔者在此只讨论微软的Windows系统的安全问题。

除了Windows ME外,微软为所有版本的Windows系统都提供了SNMP协议。但微软称该协议并不会默认安装在操作系统中,需要用户手动启动SNMP服务。SNMP使用未加密的口令(Community Strings)作为认证的惟一机制。Community Strings是基于SNMP协议信息通信时使用的一种“查询密码”。当使用特殊的客户端应用程序时,通过该Community Strings的验证,将获得对应的权限(只读或者读写),对SNMP中的管理信息库(Management Information Base,MIB)进行访问;而管理信息库中则保存了系统所有的重要信息。也就是说,如果可以知道Community Strings 这个“查询密码”,我们就可以扫描出系统的信息了。遗憾的是,很多网络设备厂商以及操作系统厂商,在初始状态下,都使用比较统一的“查询密码”。大多数SNMP设备的默认口令为“public”,也有少数第三方软件供应商把口令改为“private”,但还是逃脱不了黑客字典的猜解。攻击者可利用SNMP存在的漏洞远程重新配置或关掉设备,通过SNMP扫描可得到远程主机大量的信息,攻击者会通过分析这些扫描的信息制定攻击计划。

另一方面,因系统的其它漏洞也逐渐被发现,网络服务太多,所以SNMP协议引起的网络安全问题很容易被网络管理员所忽视,因此我们建议要从多方面考虑网络安全问题,要经常去浏览安全公告,及时发现新的漏洞,打好官方公布的补丁程序。

对Windows 2000进行SNMP扫描信息的分析
在Windows 2000系统成功安装并启用了SNMP协议后,系统将打开UDP 161和162这两个端口(基于SNMP协议服务),Windows 2000系统支持的初始Community Strings为public。下面笔者将分别介绍使用3个不同的工具软件扫描SNMP的系统信息,并对各扫描信息给出分析。

1.snmputil工具扫描信息分析
snmputil是Microsoft Windows 2000 Resource Kit中的一个工具,可到http://www.microsoft.com/Windows2000/techinfo/reskit/default.asp站点上下载。该工具文件大小只有9kB,小巧实用,是一个DOS命令行工具。我们首先了解一下snmputil的命令行格式及各参数的用法。
Snmputil命令格式:
Snmputil {{get|getnext|walk}agent community oid[oid…]trap}
◆get:获取指定oid当前值的信息。
◆getnext:获取被oid指定项目后在MIB项目中的当前值信息,即下一个信息。
◆walk:分步通过检索在管理信息库中指定的oid所有数据项的值,获取系统信息。
◆agent:查询指定的计算机,如果计算机在主机文件中被指定,该值可以是一个IP地址或主机名。
◆community:指定的一个公用名,通常与管理团体一起使用团体计算机。可以通过选择“控制面版”中的“网络”图标,在“SNMP Service的属性”对话框中看到一个公用名列表,或在注册表中查找SNMPParameters子键的ValidCommunities的键值。默认时,在Windows NT中安装SNMP的时候就创建了一个称为public的Community。通常将Community Strings称为“查询密码”。
◆oid: oid(Object identifier——对象标识符)是管理信息库中各种信息存放树资源的数字标识,是ASN.1名的查询变量,格式为.N.N.N.N,不同的数值对应于不同的信息。
如何通过SNMP得到远程主机的信息呢?有了通用的Community Strings值,当然获取远程主机的信息是相当简单的事情,因为不同的信息对应着不同的oid(oid的数值可以查阅相关的资料),在此列出扫描工具常用的几组oid值。

(1)列出目标主机系统进程信息
snmputil walk [目标主机IP地址] public .1.3.6.1.2.1.25.4.2.1.2
在Windows 2000系统的命令行中输入此命令,执行后将列出远程目标主机的系统进程信息,从这些信息中,攻击者就能判断出目标主机所运行的服务。例如,目标主机是否安装了Web服务以及其他服务信息。
(2)列出目标主机系统用户账号列表
snmputil walk [目标主机IP地址] public .1.3.6.1.4.1.77.1.2.25.1.1
在Windows 2000 的命令行中输入此命令,则将列出远程目标主机的账号信息。
通过这些信息可以清楚地看出目标主机的账号信息,对于黑客来说,取得了系统账号就意味着已经离攻破主机不远了,而对于那些弱口令的账号,更是不堪一击了。
(3)列出目标主机域名信息
snmputil walk [目标主机IP地址] public .1.3.6.1.4.1.77.1.4.1.0
(4)列出目标主机系统安装的软件信息
snmputil walk [目标主机IP地址] public .1.3.6.1.2.1.25.6.3.1.2
在Windows 2000的命令行中输入此命令,则可以列出远程目标主机系统安装的软件列表。
作为攻击者完全可通过这些信息分析出系统的安全性来。如果攻击者分析出远程主机系统没有及时打安全补丁,而再通过(1)中的进程信息发现远程主机也打开了IIS服务,他会轻而易举地判断出IIS的服务漏洞或远程溢出漏洞,通过远程溢出,攻击者可轻易取得Administrator权限,最终控制远程主机。因此,网管员应时时关注系统的安全公告,及时打好系统安全补丁,这样才能防范好黑客入侵行为。
(5)列出目标主机的系统信息
snmputil walk [目标主机IP地址] public .1.3.6.1.2.1.1

上面介绍的是命令行工具,关键是要知道oid的值。然而一些黑客程序可以在用户不参与的情况下查出远程主机所有的服务信息,下面笔者将列举两个相当不错的安全检测工具,目的只是为了让网管能更好地维护自己的系统。
2. LANguard Network Security Scanner
 LANguard Network Security Scanner是一款相当不错的网络安全综合扫描工具,使用该工具可以方便快捷地查出目标主机的系统信息,这些信息包括:每台主机的NetBIOS主机名、网络共享信息、操作系统类型、Windows NT/2000的Null session的用户账号以及口令猜解,另外还包括端口信息和系统所存在的漏洞等,最新的3.0版本不仅可以查出系统的漏洞,还提出了安全维护的建设性建议,另外还给出安全补丁的下载网址,让有漏洞的系统直接去下载安全补丁,可见此工具的功能强大,其程序下载网址是:http://www.gfisoftware.com/,此安全工具更新也相当快。 

下面介绍LANguard Network Security Scanner对SNMP安全扫描的使用方法,使用此工具不需要用户输入oid信息,此工具能自动地做完全部扫描过程,只需要用户填入目标主机的IP地址就行了,其操作界面如图1所示。
图1
输入IP地址扫描完目标主机后,用鼠标右击目标主机IP地址,在弹出的右键快捷菜单中选择SNMPWalk选项,在Object ID栏中输入1.3.6.1.4.1. 77.1.2.25.1.1,即是oid数据值,即可得到如图2所示的目标主机的用户账号列表信息。

当然,LANguard Network Scanner还有其他更强大的功能,比如暴力猜解Community String,此工具配合黑客字典相当有效。

3. X-Scan v2.3 GUI
X-Scan v2.3 GUI是国产的相当有名的安全扫描工具,该版本运行于Windows 9x/NT/2000/XP。X-Scan v2.3 GUI软件可到安全焦点http://www.xfocus.net/网站上下载。
该工具也是一个综合的安全扫描工具,SNMP漏洞扫描只是其中的一部分,其强大的扫描功能读者朋友们可自行测试,在此只介绍其SNMP扫描的一部分内容。我们可以在图3中设置其SNMP漏洞的扫描参数。
扫描参数设置好后,不需要用户再输入其他信息就可完整地扫描出系统的相关信息来,其扫描过程如图4所示(图中IP地址做过技术处理,在此故意隐藏了IP),该工具还可以自动猜解Community String,对弱口令的用户一个都不放过。
图2

图3
图4
扫描完后的扫描结果如图5所示(此图只显示了部分信息),目标主机的系统信息一览无余。
图5

如何防范基于SNMP的远程扫描

首先需要注意的是SNMP服务的通讯端口是UDP端口,这也就是大部分网络管理员最容易忽略的地方。往往某些网络管理员配置服务器时阻断了NetBIOS空会话的建立,就认为系统安全有了相当的保障,可由于安装了SNMP服务,不知不觉中,就给系统带来了极大的安全隐患。如果不需要该服务可关闭或卸载掉SNMP服务;如果关掉SNMP服务不方便的话,那么可以通过修改注册表或者直接修改SNMP服务的属性进行安全配置。选择“开始”→“程序”→“管理工具”→“服务”→“SNMP Service”→“属性”→“安全”,如图6所示。
图6
在图6中,可以修改Community Strings,也就是微软所说的“团体名称”,即前面所讲的“查询密码”。修改Community Strings的值,或者可以配置是否接受来自某些安全主机的SNMP包查询。如果主机系统为Windows NT4就必须通过修改注册表,来修改Community Strings,在“程序”→“运行”框中输入Regedit进入注册表编辑器,然后进入HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesSNMPParametersValidCommunities子键分支,将public修改成其他的名称就可以了。如果要限定允许的IP才可以进行SNMP查询,可以进入HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesSNMPParametersPermittedManagers子键添加字符串,名称为“1”,键值为要允许的主机IP。当然,如果要允许多台机器查询SNMP信息的话,就要使用“2、3、4……”等名称了。
另外,微软针对SNMP漏洞开发了其补丁程序,该补丁程序只适用于Windows 2000/XP 操作系统,此补丁下载的地址为:http://www.microsoft.com/technet/security/bulletin/ms02-006.asp下载后安装并重新启动系统即可。

文章转载地址:http://www.365master.com/kt_article_show.php?article_id=1540&categ_code=10041003

0
相关文章