SNMP(Simple Network Management Protocol ):简单网络管理协议
SNMP主要工作原理:通过一台客户端机器向一个被管理的设备发出查询请求获取这台设备当前运行状态的检测等情况,网络监控一般是基于SNMP与Agent。
即:向管理的目标发送指令进行配置设置;网络监控:网络运行状态的监视
在SNMP的服务中,(被监控设备)端口UDP 161为主动查询请求;162端口为监控方在固定时间内受监控端向监控端自动发送查询请求。
同时管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类(类似树形图),包含分属不同组的多个数据对象(库的设置还需要按照相应格式来进行书写)
SNMP放大攻击
简单网络管理协议
- Simple Network Management Protocol
- 服务端口 UDP 161 / 162
- 管理站(manager/客户端)、被管理设备(agent/服务端)
- 管理信息数据库(MIB)是一个信息存储库吗,包含管理代理中的有关配置和
性能的数据,按照不同分类,包含分属不同组的多个数据对象
- 每一个节点都有一个对象标识符(OID)来唯一的标识
- IETF定义便准的MIB库/厂家自定义MIB库
攻击原理
- 请求流量小,查询结果返回流量大
- 结合伪造源地址实现攻击
应用模型:
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
SNMP管理的网络主要由三部分组成:
-
被管理的设备
-
SNMP代理
-
网络管理系统(NMS)
它们之间的关系如下:
网络中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
利用SNMP协议中的默认通信字符串和GetBulk请求,攻击者能够开展有效的SNMP放大攻击。
许多厂商安装的SNMP都采用了默认的通信字符串(Community String),这些通信字符串是程序获取设备信息和修改配置必不可少的,最常见的默认通信字符串是public和private,除此之外还有许多厂商私有的默认通信字符串,几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。
攻击者向广泛存在并开启了SNMP服务的网络设备发送Getbulk请求,使用默认通信字符串作为认证凭据,并将源IP地址伪造成攻击目标的IP地址,设备收到Getbulk请求后,会将响应结果发送给攻击目标,当大量的响应结果涌向攻击目标时,就会导致攻击目标网络拥堵和缓慢,造成拒绝服务攻击。
攻击者发送的Getbulk请求数据包约为60字节,而请求的响应数据能够达到1500字节以上,因此,使用该方式进行放大攻击能够达到25倍以上的放大效果,这也是一种放大效应明显且有效的放大攻击方式。
下面介绍利用SNMP实现放大攻击实战:
工具:2003服务器(192.168.1.106)、kali。
首先配置2003服务器的SNMP服务
#这里团体可以添加公有的与私有的,但是出于安全起见,并不希望添加这么一个团体,因为设置为公有的在公网上可以对其扫描到,然后成为别人放大攻击的帮凶,对于私有的,一旦别人探测并使用了SNMP服务,那么相当于取得了管理员权限可以执行可读可写能力是很恐怖的。
#下面是2003和kali的IP地址
#在kali中进行包的配置,配置选项大概可以如此书写:
i=IP()
“1.1.1.1" =
i.display()
u=UDP()
161 =
161 =
s=SNMP()
'public' =
s.display()
b=SNMPbulk()
100 =
[SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.1')),SNMPvarbind(oid=ASN1_OID(' 1.3.6.1.2.1.19.1.3'))] =
b =
r= (i/u/s)
r.display()
Sr1(r)
————————————————
4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
//blog.csdn.net/Jack0610/article/details/88690365 :
#打开wireshark可以观察返回数据包的大小,明明发送的是很小的流量请求,返回的确是很多倍的增长
#可以看到SNMP包的请求大小是95字节,当返回的确是1514*6+216的大小,无疑放大已经生效
#从下面的图中可以看出来,在流量中的数据包是可以看到些许明文的,如果在对信息进行解密处理,那么是能看到明文信息的,这也就彰显了服务器配置团体的作用。
以上就是对于SNMP放大攻击的实战演示,当然这里仅仅是一个数据包,需要发起大量的攻击只需要将包的配置写成脚本即可。
####如果网络上存在SNMP服务的服务端,利用namp是可以扫描出来的。
如:
nmap -sU -p161 200.20.10.0/16
随便指定一个地址段。
防御办法:
开snmp的主机尽量不要暴露在外网,还可以用改 默认密码来限制访问,或者改默认161端口。或者禁止响应bulkget的这种包,仅仅响应get方式获取
具体防御措施:
防范SNMP攻击的最好方法是关闭所有设备的SNMP。在许多公司和网络安装中这并非可选项,所以安全管理员可以用下面的步骤来减轻威胁。
(1)团体字符串当成口令相同的安全策略。
a. 设置字符的最少数,最少为8,越大越好。
b. 强令每60或90天更换一次口令。
c. 包含文字、数字及特殊字符。
d. 使用snmputil或其他类似程序验证团体名和策略
(2)团体设为只读访问。
(3)不要再所有的设备上使用相同的团队。
(4)在所有准许进入的路由器上过滤SNMP端口。
(5)限制对SNMP设备的访问,路由器上的访问控制列表和在尽可能的设备上进行过滤。只允许授权的管理站IP地址。
a. 边界访问过滤。在网路边界禁止不良信息流进入内部网络或者发往外部网络,比较有力的措施是通过防火墙等过滤设备控制对SNMP服务的请求。比如,除指定的服务器外,缺省情况下通常禁止对SNMP服务的请求,以下端口的过滤有利于外部攻击者对内部网的SNMP攻击:
snmp 161/udp# Simple Network Management Protocol
snmp 162/udp# SNMP system management messages
以下这些服务并不常用,但有些产品可能运行这些服务:
snmp 161/udp# Simple Network Management Protocol
snmp 162/udp# SNMP system management messages
smux199/tcp # SNMP Unix Multiplexer
smux199/udp # SNMP Unix Multiplexer
synoptics-relay391/tcp # SyOptics SNMP Relay Port
synoptics-relay391/udp # SyOptics SNMP Relay Port
agentx705/tcp # AgentX
snmp-tcp-port1993/tcp # cisco SNMP TCP port
snmp-tcp-port1993/udp # cisco SNMP TCP port
过滤对这些服务的请求,必须信息慎重,以免影响正常的网络运行,值得注意的是,SNMP守护进程可能在该设备上绑定所有的IP地址,因此,要合理考虑过滤策略。比如,即使禁止了SNMP包直接发送给普通的网络地址,还是有可能受到攻击,因为攻击者可以利用SNMP缺陷攻击一些特殊的网络地址。如:网络广播地址,子网广播地址和所有的loopback地址。Loopback地址常被路由器用户管理用途。管理员可以考虑是否过滤这些数据包。最后,对以下的RPC服务的访问也可以考虑禁止:
snmp 100122na. snmp snmp-cmc snmp-synoptics snmp-unisys snmp-utk
snmpv2100138 na. snmpv2 # SNM Version 2.2.2
snmpXdmid100249
注意,这些措施对内部攻击无效。
b. 在内部网路欧中过滤不正常的SNMP访问。在很多网络系统中,只有有限的网络管理系统需要发生SNMP请求。基于这种情形,对于大多数的SNMP代理,可以设置仅接受有限几台主机的SNMP请求,这样可以降低内部攻击风险。同样必须慎重使用这些安全措施,以免不当的设置
(6)检查网络接口卡运行在全接受模式下(嗅探器);尽快给系统安装补丁,定期浏览厂商的站点查找补丁及公告;监视系统和其他日志,观察SNMP监视器防止受害。
(7)改变默认公用字符串,修改缺省的“Community string”。很多支持SNMP服务的产品的出厂设置中,默认的Community-string是“public”(只读访问)和“private”(读写访问),CNNS强烈建议用户修改这两个缺省字符串。修改了这两个缺省“口令”后,还要防备监听攻击以免攻击者获得新的设置“口令”。SNMPv3对着点做了改进。
(8)隔离SNMP包,用隔离措施可以降低SNMP攻击的风险。包括物理隔离,VLAN逻辑隔离和VPN方式的隔离,注意通过交换机做VLAN隔离将加大攻击者攻击难度,但理论上并不能完全杜绝这类攻击。过滤来自内部主机的SNMP通讯流量,只有很少的网络管理系统需要发出SNMP请求消息。系统管理员可以配置SNMP代理系统以组织来自未授权系统的请求消息。
(9)了解自己的网路设备以及SNMP是怎样实现的。
其他:
(1)提高网络管理人员的素质,防止错误的配置和工作疏忽;配置SNMP的时候,不允许管理员使用缺省的口令配置。
(2)要经常查阅网络设备主机的安全性漏洞情况的发布并及时进行修补;多留意国内外各大安全站点的最新发布。
(3)要大力发展安全产品的网络设备。
(4)要全面综合地涉及网络的安全体系,包括缜密的网络安全拓扑设计->应用平台的选型->安全防护产品的选型->强有力的入侵检测(IDS)和漏洞扫描器->应急措施的制定->完善的人员管理制度->最坏情况的预先估计。
网络安全管理员需要掌握尽量多的系统漏洞,根据不同的漏洞采用不同的防御措施。了解最新最多的漏洞信息。
参考链接:
https://blog.csdn.net/edu_aqniu/article/details/78252353?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
https://blog.csdn.net/Jack0610/article/details/88690365?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
https://segmentfault.com/a/1190000016584829
http://www.doc88.com/p-1327829481886.html
本文始发于微信公众号(LemonSec):SNMP放大攻击原理及实战演示
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论