什么是snmp fuzzer

snmpfuzzer是一款用于对目标设备snmp可写oid节点数据进行fuzz测试的小工具。

为什么要用snmp fuzzer

现如今工控环境中,存在大量的工控设备默认开启了snmp服务并支持snmp写操作,且设备使用了默认的snmp community值,由于工控环境的特殊性,设备参数设定后会长时间不会修改,导致开启snmp服务的工控设备存在数据被篡改、覆盖、以及被大量可写数据攻击致瘫痪的风险。而snmpfuzzer灵活且自动化能够对开放了snmp写权限的工控设备进行检测,从而评估设备的安全性。

工控设备开启snmp的危害

在以往的测试过程中,通过snmp fuzzer发现过一些工控设备的漏洞,这些漏洞主要集中在对snmp写操作的数据没有进行有效的校验。例如某设备支持通过snmp写操作来修改设备网卡的mac地址,但是没有对mac地址的长度进行校验,只要传入过长或者过短的mac地址都会造成设备瘫痪。还有些设备的网卡可以通过snmp写操作来开启和禁用,这样直接就会造成设备的网络中断影响业务。此外通常厂商还会有其自定义的私有oid节点,这些节点也很可能会存在一些安全问题,导致设备出现各种预期外的异常。

snmp fuzzer检测流程


snmp fuzz测试机通过发送可写oid的snmp set-request请求去改变工控设备可写oid控制的数据,通过发送get request、get-next-request请求, 来接收工控设备返回的get-response报文,如果测试机没有收到get-response的回复报文,则利用socket通信,来监测工控设备是否崩溃。

snmp fuzzer安装

在Ubuntu环境下安装与使用snmp fuzzer。

1. 通过git命令,下载snmp fuzzer 代码。

git clone https://github.com/dark-lbp/snmp_fuzzer

2. snmp fuzzer运行依赖scrapy,如果没有安装scrapy,需要安装。

运行pip install scrapy命令,安装scrapy。

Snmp fuzzer使用与分析

  1. 编写扫描目标设备可写oid的测试py脚本。

a. 创建一个test_scan_oid.py的文件。

b. 打开test_scan_oid.py文件,输入以下内容。

如下图所示:

target:设置目标机的IP地址。port:检查目标机是否崩溃的通信端口。count:fuzz snmp oid可写报文的次数。nic:目标机的默认路由。Target:创建一个snmpTarget类。SnmpTrarget参数说明:name:测试fuzz的名字,测试人员可以自定义。monitor_port:目标机是否存活监控端口。community:具备oid可写权限v2c用户,通常设备设置的v2c用户为:public或者private。oid:开始扫描oid结点。version:snmp用户版本,目前snmp fuzzer只支持snmp v1、v2c。Target.oid_scan():开启扫描目标机可写oid的功能。Target.save_scan_result():保存可写oid到pcap文件。

c. 运行test_scan_oid.py文件,开始扫描目标机可写的oid。

执行python test_scan_oid.py命令,执行完后在snmp_fuzzer/output目录下会有一个

Ip+_snmp_set_packet_list.pcap的文件,如:

该文件存储的是目标设备可写的oid报文,用于fuzz测试。

2.编写fuzz测试脚本,进行fuzz测试。

1)创建一个test_snmp_fuzz.py文件。

2)打开test_snmp_fuzz.py文件,输入以下内容,如下图所示:

Target.read_test_case_from_pcap用于从可写的oid报文中读取oid。

Traget.fuzz()用于开始fuzz测试,通过不断发送snmp set-request请求,去设置snmp fuzz自己造的可写数据。如下图所示:

3. 运行test_snmp_fuzz.py文件,开始fuzz测试。

pythontest_snmp_fuzz.py

当目标设备对某个写请求不进行反馈或反馈异常时,会通过socket connect 对目标设备的存活进行检测,具体检测原理如下图所示:

当出现如下图log信息时代表目标机已经崩溃。

如何避免开启snmp的危害

开启snmp服务的设备采用snmp v3用户,因为snmp v3支持用户认证与加密,安全性更好、更可靠。

参考链接 :

检测工控设备SNMP漏洞工具:SNMP Fuzzer :https://www.freebuf.com/sectool/206417.html

检测工控设备SNMP漏洞工具:SNMP Fuzzer相关推荐

  1. sqlmap注入教程linux,Linux Sqlmap检测sql注入漏洞工具安装使用教程

    Sqlmap工具 什么是SQLmap? SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹.访问底层文件系统.执行命令) sql注 ...

  2. java反序列化终极工具_检测java反序列化漏洞

    java反序列化终极测试工具是一款检测java反序列化漏洞工具,直接将Jboss.Websphere和weblogic的反序列化漏洞的利用集成到了一起.java反序列化漏洞已经被曝出一段时间了,其强大 ...

  3. SNMP客户端工具MIB Browser

    1.说明 SNMP客户端工具MIB Browser, 全名iReasoning MIB Browser, 是一个功能强大.易于使用的MIB管理工具, 支持Windows,Linux,MACOS等多种平 ...

  4. 剑走偏锋:基于静态检测的IE漏洞检测工具IEFuzz

    本文主要分享一款静态的IE浏览器模糊测试工具,该工具被称为IEFuzz.我们知道,像其他大部分软件一样,浏览器也往往通过两种方式进行模糊测试,一种为静态,另外一种则为动态. 在此前,我们在其他文章中也 ...

  5. SNMP 枚举工具 Snmpwalk

    Snmpwalk是一个SNMP应用程序.它使用 SNMP 的 GETNEXT 请求,查询指定的所有 OID(SNMP协议的对象标识)树信息,并显示给用户. 使用: root@kali:~# snmpw ...

  6. 模糊测试工具Simple Fuzzer

    模糊测试工具Simple Fuzzer 模糊测试是一种不同于渗透测试的漏洞检测方式.它向目标系统发送各种非预期的输入,然后通过监视异常结果来发现漏洞.Kali Linux虽然作为渗透测试系统平台,但也 ...

  7. 缓存区溢出漏洞工具Doona

    缓存区溢出漏洞工具Doona Doona是缓存区溢出漏洞工具BED的分支.它在BED的基础上,增加了更多插件,如nttp.proxy.rtsp.tftp等.同时,它对各个插件扩充了攻击载荷,这里也称为 ...

  8. snmp基本介绍--理解OID/MIB/snmp报文类型/snmp版本

    简单网络管理协议(SNMP-Simple Network Management Protocol) 是一个与网络设备交互的简单方法.一个网络设备以守护进程的方式运行SNMP代理,该守护进程能够响应来自 ...

  9. kali linux渗透攻击基于漏洞工具Metasploit

    章节目录 本章节是基于漏洞工具Metasploit做的 什么是Metasploit Meterpreter功能 渗透环境 7.1 Metasploit的基础 1.Metasploit启动的三种方法: ...

最新文章

  1. 忽略这一点,人工智能变人工智障!
  2. Linux界面自动化测试框架不完全汇总
  3. boost::hana模块实现算术的测试程序
  4. 线性表之顺序存储-顺序表
  5. 卷积网络和卷积神经网络_卷积神经网络的眼病识别
  6. CSS text-indent 属性
  7. git 无法 push 远程仓库 【Note about fast-forwards】
  8. [转载]Qt之自定义界面(二)添加最小化、关闭按钮、添加背景_vortex_新浪博客...
  9. 谈软件开发项目管理之需求变更
  10. iOS开发 frame 与 bounds 的区别与关系
  11. ios越狱c语言编译器,iOS12越狱
  12. Vue3中获取鼠标在浏览器x轴和y轴的位置
  13. WDS+MDT部署Windows7操作系统2—;导入启动映像和安装映像
  14. python3 获取商店里App评论+解析+存档+筛选
  15. VisionPro脚本
  16. html网页设计大赛作品介绍,HTML网页设计大赛--赛出风采
  17. 基于Java的石头迷阵小游戏的设计与实现
  18. Spring-Boot运行成功,但是localhost拒绝我们的网页请求报错打不开两个报错点
  19. html 原生态轮播图,html 轮播图
  20. 情感分析属于计算机科学,一种基于中文语义结构和细分词库结合的情感分析方法...

热门文章

  1. 原始图像扩展_Resize Sense for Mac(图像处理软件)
  2. java获取applicationcontext_SpringBoot获取ApplicationContext
  3. java绘制有向图_AcWing 848. 有向图的拓扑序列 Java
  4. pytorch tensor操作:tensor与numpy转换
  5. 输出高电平程序c语言,51用c语言怎么编程检测US-100超声波测距模块echo/rx引脚输出高电平时间长度,,谁能给我个模板...
  6. python中如何判断输入的是否是数字_python如何判断输入是不是数字
  7. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
  8. Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
  9. 前方迷茫,我欲借何过大江
  10. 字符串匹配KMP算法的讲解C++