SNMP
1.概述
SNMP
SNMP叫做简单网络管理协议,他的通信走的是UDP的161、162。SNMP的服务端,也就是信息被查询的被管理端使用的是UDP的161端口,客户端使用的是162端口。
和DHCP协议有点像,DHCP也是基于UDP之上的应用层的协议,DHCP使用的是67、68,服务端使用的是67,客户端使用的是68。
SNMP是网络管理员配置起来最最容易疏漏的一项服务。
当你的网络稍微有点规模的时候,通过人工去进行网络设备运行情况的监控的话,效率会低,所以需要引入基于SNMP协议的一些监控机制,通过SNMP,我们可以监控你的网络交换机、服务器、防火墙,比如他们的CPU运行情况、内存、并发连接数、带宽使用情况等系统内部信息,都可以通过SNMP进行监控。
smap可以说是信息的金矿,他里面可以查看到设备的详细内容,但他也是一个网络管理员配置最经常出现问题的服务。public/private/manager
MIB tree
国际上有一些通用的标准化组织发布了一些SNMP的通用标准,也就是说我发什么样的指令是查CPU的,发什么样的指令是查内存队列的,发什么样的指令是查内存大小的,发什么样的指令是查空闲内存大小的,每一个要查的参数点都有一个对应的编号,通过这个编号,我们发送指令的时候,我要查询这个编号的内容,那么这个编号被SNMP的服务端收到之后,就会把相应的数据返回出来。
基于这个MIB库,我们可以查常用的操作系统、网络设备里的信息。所以客户端必须先导入标准MIB库,然后根据MIB库来进行发送。不同的设备厂商也会开发自己的MIB库,比如思科有自己的MIB库,如果你有一个SNMP客户端的程序,要查这些专有的参数信息,需要再客户端先导入他专有的MIB库,用专有的MIB库中特有的一串编号数值发给服务器,才能查到厂家专有的参数最终结果值。
MIB库是一个树形结构。
Community strings
信息查询或重新配置
识别和绕过防火墙筛选
2.onesixtyone
在我们做渗透测试的过程中,查一下目标系统是不是使用的通用的community,是否启用了SNMP这个服务,是否使用的是这个通用的community字符串,这是比如做的一部分工作。如果说目标系统使用的是public,我们可以通过一些工具,发送SNMP的查询指令,对目标ip地址进行查询。
onesixtyone:是kail中基于SNMP的扫描工具。
SNMP是明文传输的,即使我们不能扫描到,但是我们可以做网络嗅探的方式把community的方式抓包抓出来。
onesixtyone 1.1.1.1 public
#该条命令主要用来实现发现目标主机是否使用的是比较脆弱的community
onesxtyone -c dict.txt -i hosts -o my.log -w 100
#-c:结合一个字典 -i:后面跟多个主机列表
dpkg -L onesixtyone #查看onesixtyone安装的文件中是否有自带的字典
实例
实验准备windows7x64主机,ip为10.0.0.132,安装snmp
通过public扫,若是目标主机没有返回查询的结果,那么就有可能目标已经改变了他默认的community,没有用public作为community。这时候我们可以使用字典。
3. snmpwalk和snmpcheck
snmpwalk 10.0.0.132 -c public -v 2c #对10.0.0.132进行snmp的信息的查询
#-v:指定要使用的snmp的版本。现在有v1/v2c/v3版本
snmpwalk -c public -v 2c 1.1.1.1 1.3.6.1.4.1.77.1.2.25
#1.3.6.1.4.1.77.1.2.25:特定库的OID,只查询该OID的具体内容
snmpcheck -t 10.0.0.132
snmpcheck -t 10.0.0.132 -c private -v 2
snmpcheck -t 10.0.0.132 -w