Snmputil知识.docx
《Snmputil知识.docx》由会员分享,可在线阅读,更多相关《Snmputil知识.docx(24页珍藏版)》请在冰豆网上搜索。
![Snmputil知识.docx](https://file1.bdocx.com/fileroot1/2023-1/1/4b2ed644-b831-4e02-b1ca-5d187cd3c868/4b2ed644-b831-4e02-b1ca-5d187cd3c8681.gif)
Snmputil知识
Snmputil知识
Snmputil是一个命令行下的软件,使用语法如下:
usage:
snmputilget|getnext|walk]agentcommunityoid[oid...]snmputiltrap
其中agent表示代理进程的IP地址,community表示团体名,oid表示MIB对象ID。
举例说明:
1)查看本地计算机(IP地址为192.168.0.3)的系统信息
通过对系统组的MIB对象的查阅,我们知道系统信息所对应的MIB对象为.1.3.6.1.2.1.1.1(参看系统组对象),我们使用get参数来查询:
C:
>snmputilget192.168.0.3public.1.3.6.1.2.1.1.1.0
Variable=system.sysDescr.0
Value=StringHardware:
x86Family15Model2Stepping7AT/ATCOMPATIBLE-
Software:
Windows2000Version5.1(Build2600UniprocessorFree)
其中public是192.168.0.3计算机上的团体名,.1.3.6.1.2.1.1.1.0是对象实例,注意对象ID前面要加一个点".",后面还要加一个"0"。
如果不在对象ID末尾加上一个0,那么用get参数查询就会出错。
从查询结果中我们能够看出操作系统版本和CPU类型。
2)查询计算机连续开机多长时间
C:
>snmputilget192.168.0.3public.1.3.6.1.2.1.1.3.0
Variable=system.sysUpTime.0
Value=TimeTicks447614
如果我们在对象ID后面不加0,使用getnext参数能得到同样的效果:
C:
>snmputilgetnext192.168.0.3public.1.3.6.1.2.1.1.3
Variable=system.sysUpTime.0
Value=TimeTicks476123
3)查询计算机的联系人
C:
>snmputilget192.168.0.3public.1.3.6.1.2.1.1.4.0
Variable=system.sysContact.0
Value=Stringadministrator
以上简单介绍了用snmputil查询代理进程的方法,由于在命令行下使用,可能大家感到颇为不方便,但命令行的一个好处就是可以促进大家主动查阅MIB对象,加深对SNMP网络管理的认识。
4)使用walk查询设备上所有正在运行的进程:
C:
>snmputilwalk192.168.0.3public.1.3.6.1.2.1.25.4.2.1.2
Variable=host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName.1
Value=StringSystemIdleProcess
Variable=host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName.4
Value=StringSystem
Variable=host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName.292
Value=Stringsnmputil.exe
Variable=host.hr
SWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName.308
Value=StringRavTimer.exe
Variable=host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName.336
Value=StringRavMon.exe
限于篇幅笔者就不把所有进程列出来,大家可以在自己的计算机上面实验,以加强感性认识。
5)查询计算机上面的用户列表
C:
>snmputilwalk192.168.0.3public.1.3.6.1.4.1.77.1.2.25.1.1
Variable=.iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.4.117.115.101.114
Value=Stringuser
Variable=.iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.5.71.117.101.115.116
Value=StringGuest
Variable=.iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2.server.svUserTable.svUserEntry.svUserName.13.65.100.109.105.110.105.115.116.114.97.116.111.114
Value=StringAdministrator
从中我们可以得知该计算机共有三个用户,它们分别为user、guest和administrator。
Snmputil还有一个trap的参数,主要用来陷阱捕捉,它可以接受代理进程上主动发来的信息。
如果我们在命令行下面输入snmputiltrap后回车,然后用错误的团体名来访问代理进程,这时候就能收到代理进程主动发回的报告。
在MIBII中总共有175个对象,每个对象均有其不同的含义,我们只有通过查阅MIB才能知道它们各自的作用。
MIB对象是SNMP网络管理中的核心内容,只有深入了解MIB对象的含义我们才有可能知道如何去驾驭SNMP网络管理。
SNMP探测工具snmputil.exe命令记录
列出系统进程
snmputilwalk75.126.184.77public.1.3.6.1.2.1.25.4.2.1.2
列系统用户列表
snmputilwalk75.126.184.75public.1.3.6.1.4.1.77.1.2.25.1.1
列出域名
snmputilget75.126.184.75public.1.3.6.1.4.1.77.1.4.1.0
列出安装的软件
snmputilwalk75.126.184.75public.1.3.6.1.2.1.25.6.3.1.2
列出系统信息
snmputilwalk75.126.184.75public.1.3.6.1.2.1.1
解释:
snmputil,就是程序名;
get,就理解成获取一个信息;
getnext,就理解成获取下一个信息;
walk,就理解成获取一堆信息(应该说所有数据库子树/子目录的信息)
agent,具体某台机器拉。
community,就是那个“communitystrings”“查询密码”;
oid,就是物件识别代码(ObjectIdentifier)。
可以把oid理解成MIB管理信息库中各种信息分类存放树资源的一个数字标识。
一、SNMP的概念,功能
SNMP(SimpleNetworkManagementProtocol)是被广泛接受并投入使用的工业标准,
它的目标是保证管理信息在任意两点中传送,便于网络管理员在网络上的任何节点检索
信息,进行修改,寻找故障;完成故障诊断,容量规划和报告生成。
它采用轮询机制,
提供最基本的功能集。
最适合小型、快速、低价格的环境使用。
它只要求无证实的传输层
协议UDP,受到许多产品的广泛支持。
本文将讨论如何在Win2K安装使支持SNMP功能,SNMP技术对于提升整体安全水准是有益的,
但也可能存在风险,本文将同时检验这两个方面。
另外,除了介绍一些开发工具外,
还将图解通过SNMP收集信息的可能用法,以及如何提高安全性。
二、在Win2K中安装SNMP
提供一个支持SNMP的Win2K设备与增加一个额外的Windows组件同样简单,只需要进入"开始/设置/控制面板/",
选择"添加/删除程序",然后选择"添加/删除Windows组件",随之出现一个对话框,在其中选择"管理和监视工具",
最后点击"下一步",依照提示安装:
OK,现在Win2K就可以通过SNMP来访问了.
三、对snmp信息的刺探方法
1、Snmputilget
下面我们在命令行状态下使用Win2K资源工具箱中的程序snmputil.exe
(
来获取安装了SNMP的Win2K机器的网络接口数目,命令参数是get:
前提是对方snmp口令是public
snmputil.exe提供基本的、低级的SNMP功能,通过使用不同的参数和变量,可以显示设备情况以及管理设备。
下面来看看这个例子都包含了哪些参数和变量:
●最后一个参数是SNMP变量,值为1.3.6.1.2.1.2.1.0,被称为物件识别代码OID(objectidentifier)。
OID有对应的字符串表达式,也就是在SNMPUTIL输出内容的第一行,在这个例子中,即是interfaces.ifNumber.0。
这个字符串对于用户来说,就要易记易读多了。
你可以发现,这种对应关系与DNS类似。
●第二个参数指定将SNMP请求发送给哪个设备,在这里是localhost,即本地主机。
●第三个参数指定使用哪个共同体(即验证字符串或口令),在这里是public。
在每个发送到被管理设备的SNMPUDP信息包中,这个口令是以纯文本形式传输的。
当一个Win2K设备安装上SNMP支持后,缺省的SNMP共同体名称为public,这表明允许用户读取现有的所有变量。
因为即便是设备中的网络接口数目也是一个敏感数据,所以这就成为第一个安全问题。
2、Snmputilgetnext
接着,我们试一试snmputil的另一个命令参数getnext:
getnext的功能是获取指定SNMP变量的下一个变量的值及其OID。
因为一个设备的所有SNMP变量都是规则排列的,
所以使用getnext命令参数就可以获取一个设备中的所有变量值及OID,而不需要事先知道它们的准确OID值。
另外Snmputilgetnext可以用来测试Windows2KSNMP内存消耗拒绝服务攻击缺陷
受影响的系统有:
-Microsoftlmmib2.dll5.00.2134.1
-MicrosoftWindows2000ServerSP2
-MicrosoftWindows2000ServerSP1
-MicrosoftWindows2000Server
具体方法:
snmputilgetnextlocalhostpublic.1.3.6.1.4.1.77.1.2.28.0
请谨慎使用。
。
。
。
。
。
当心被警察叔叔K哦
3、snmputilwalk
知道了next指令的用途,我们可以编写一个程序自动获取一个设备的所有OID及其数值,而不用一行行地敲入那么长的命令。
但幸运的是,snmputil的walk指令帮助我们实现了这个想法。
在命令行状态下敲入下面的命令,将显示出本地机器几乎所有的变量:
C:
\>snmputilwalklocalhostpublic.1.3
你会看到一行行的文字在黑白窗口中不停地滚动......直到最后出现"EndofMIBsubtree"的信息:
其他指令含义:
1.snmputilwalk对方ippublic.1.3.6.1.2.1.25.4.2.1.2列出系统进程
这样就可以使入侵者在入侵之前就知道你系统运行的软件,有没有装杀毒软件,
从而知己知彼,百战不殆!
2.snmputilwalk对方ippublic.1.3.6.1.4.1.77.1.2.25.1.1列系统用户列表
有了这个更好了,入侵者可以根据你的用户表编一个密码表进行探测,
减少了入侵的盲目性。
3.snmputilget对方ippublic.1.3.6.1.4.1.77.1.4.1.0列出域名
这个可以列出系统的域名,是入侵者得到了主机名,可以根据此设置探测的密码字典,增加了成功率。
4.snmputilwalk对方ippublic.1.3.6.1.2.1.25.6.3.1.2列出安装的软件
用这个入侵者可以看你装的sp是什么,有没有装防火墙等信息,可以据此判断应该有的系统漏洞,增加了入侵的成功率。
5.snmputilwalk对方ippublic.1.3.6.1.2.1.1列出系统信息
这个可以使入侵者了解系统状况以及主机的稳定性,可以从主机的uptime里得知你系统开机了多长时间,从而确定是否入侵。
其他的工具:
1:
SolarWinds2002的IPNetworkBrowser
_id=82">
_id=83">
2:
LANguardNetworkScanner3.
_id=103">
3:
X-scan2.3cn
以上用x-scan就得到了系统信息
_id=13">
四、如何提高Win2KSNMP的安全性
1:
首先需要注意的是,snmp服务的通讯端口是UDP端口,这也就是大部分网络管理人员很容易忽略的地方。
往往某些网管配置服务器阻断了NetBIOS空会话的建立,就认为系统安全有了相当的保障,可由于安装
了SNMP服务,不知不觉中,就给系统带去了极大的隐患。
最方便和容易的解决方法,就是关闭SNMP服务,或者卸载掉该服务。
如果关掉SNMP服务不方便的话,那么可以通过修改注册表或者直接修改图形界面的SNMP服务属性
进行安全配置。
开始——程序——管理工具——服务——SNMPService——属性——安全
在这个配置界面中,可以修改communitystrings,也就是微软所说的"团体名称",呵呵,也就是
我所说的"查询密码"。
或者可以配置是否从某些安全主机上才允许SNMP查询。
不过NT4环境下的朋友就必须修改注册表了。
修改communitystrings,在
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities]
下,将public的名称修改成其它的名称就可以了。
如果要限定允许的ip才可以进行SNMP查询,可以进入
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\PermittedManagers]
添加字符串,名称为"1",内容为要允许的主机IP。
当然,如果允许多台机器的话,就要名称沿用"2、3、4"等名称了
2:
在Win2K中,事件日志中的任何事件都可用来创建包含这一事件的SNMP陷阱,Microsoft将这称为SNMP事件转换器。
可以对一些Win2K设备进行配置,使得当有人试图登录它或者对其共享而未成功时,让这些设备能够发送一个SNMP陷阱信息。
把这些陷阱引导到我们自己的工作站,并设置当收到陷阱信息,用应用程序播放一个报警音调,这样就可以初步建立一个多
媒体安全管理工作站。
配置这些陷阱信息所需要的工具有evntwin.exe和evntcmd.exe,二者都是Win2K标准安装后的一部分:
用evntwin.exe对一些重要事件建立陷阱,然后在管理工作站上启动snmputil.exe:
C:
\>snmputiltrap
snmputil:
listeningfortraps...
IncomingTrap:
generic=6
specific=529
enterprise=.iso.org.8.83.101.99.117.114.105.116.121
agent=127.0.0.1
sourceIP=127.0.0.1
community=public
variable=.iso.org.1.0
value=String
variable=.iso.org.2.0
value=StringSYSTEM
variable=.iso.org.3.0
value=StringJVO
variable=.iso.org.4.0
value=String16
variable=.iso.org.5.0
value=String2
variable=.iso.org.dod.0
value=Stringnonexistinguser
variable=.iso.org.7.0
value=StringADS
variable=.iso.org.8.0
value=String3
variable=.iso.org.9.0
value=StringNtLmSsp
variable=.iso.org.10.0
value=StringMICROSOFT_AUTHENTICATION_PACKAGE_V1_0
variable=.iso.org.11.0
value=StringJVO
要记住,SNMP陷阱只产生于出现在Win2K事件日志中的事件。
如果是一个单独的工作站,需要在"本地安全策略"中配置。
如果是一个域中的设备,要使用AD(活动目录)来设置。
另一个使用SNMP并得到附加安全的方法是主动监控某些SNMP变量,这些变量有:
●IpForwarding(1.3.6.1.2.1.4.1.0):
就是IP转发,这个特性对大多少工作站而言不是个好功能。
●IcmpInRedirects(1.3.6.1.2.1.5.7):
是否有人正在向设备发送icmp重定向信息。
●TcpOutRsts(1.3.6.1.2.1.6.15):
一个记数器,表示设备所发送的RST数。
当受到端口扫描时,这个记数器会急剧增加。
●UdpNoPorts(1.3.6.1.2.1.7.2):
一个记数器,表示不提供服务的端口的通信量。
同样是一个可能受到端口扫描的信号。
对于一个SNMP管理工作站来说,为这些变量设置阀值就能提供很好的报警信息。
snmputil的作用是探测远程主机的相关信息,为入侵做辅助.当然你得有snmp口令.一般默认为"public"(不带引号)._cVA)I*)(此帖转载自_cVA)I*)[url=]『黑吧安全网』[/url]_cVA)I*)黑客动画吧论坛网址→[url=][/url])_cVA)I*)
elliott
SNMP工具命令
SNMP,SimpleNetworkManagementProtocol,简单网络管理协议。
用于管理IP网络上结点的协议。
几乎所有的网络设备和网络操作系统都支持SNMP。
接下来要介绍的是:
communitystrings,
也不知道中文翻译是什么意思,呵呵,不过如果理解成为基于SNMP协议信息通信时使用的一种“查询密码”应该不为过吧。
当使用特殊的客户端应用程序,通过该“查询密码”communitystrings的验证,将获得对应的权限(只读或者读写)对SNMP中管理信息库(MIB)进行访问。
而管理信息库(MIB)中则保存了系统所有的重要信息。
也就是说,如果可以知道communitystrings这个“查询密码”,我们就可以刺探系统的信息了。
比较遗憾的是,很多网络设备厂商以及操作系统厂商,在初始状态下,都使用比较统一的“查询密码”呵呵,这也就给我们提供了足够的方便。
二、对WIN2K进行刺探扫描
以WIN2K来说,一旦安装并启动了简单网络管理协议,系统将打开
UDP161snmp
UDP162snmptrap
两个端口。
具体做什么我们不去细究。
需要注意的是,这里使用的是UDP端口,而不是TCP端口。
同时,WIN2K系统支持初始的“查询密码”communitystrings为:
public
我们只要通过一款ResourceKit里面的工具snmputil,就可以方便的获得非常多的信息。
在这里可以下载:
呵呵,简单介绍一下用法
snmputil,就是程序名拉,呵呵。
get,就理解成获取一个信息。
getnext,就理解成获取下一个信息。
walk,就理解成获取一堆信息(嗯,应该说所有数据库子树/子目录的信息)
agent,具体某台机器拉。
community,嗯就是那个“communitystrings”“查询密码”拉。
oid,这个要多说一下,这个呢,就是物件识别代码(ObjectIdentifier)。
可以把oid理解成MIB管理信息