zoukankan      html  css  js  c++  java
  • 应用层协议分析-WinService12r2网络服务搭建SNMP协议分析

    简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
    SNMP五种协议数据单元
    SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
    get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)
    get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)
    set-request操作:设置代理进程的一个或多个参数值(网管系统发送)
    get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)
    trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送)
    前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。下图描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

    在这里插入图片描述
    SNMP协议数据单元格式解析
    下图封装成UDP数据报的5种操作的SNMP报文格式。可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。
    在这里插入图片描述

    1. 公共SNMP首部

    1.1 版本
    写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
    1.2 公共体
    共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
    1.3 PDU类型
    根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。
    PDU类型 名称
    0 get-request
    1 get-next-request
    2 get-response
    3 set-request
    4 trap

    2. get/set首部

    2.1 请求标识符(request ID)
    这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。
    2.2 差错状态(error status)
    由代理进程回答时填入0~5中的一个数字,见下表的描述。
    差错状态 名字 说明
    0 noError 一切正常
    1 tooBig 代理无法将回答装入到一个SNMP报文之中
    2 noSuchName 操作指明了一个不存在的变量
    3 badValue 一个set操作指明了一个无效值或无效语法
    4 readOnly 管理进程试图修改一个只读变量
    5 genErr 某些其他的差错
    2.3 差错索引(error index)
    当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。

    3. trap首部

    3.1 企业(enterprise)
    填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。
    3.2 trap类型
    此字段正式的名称是generic-trap,共分为表中的7种。
    trap类型 名字 说明
    0 coldStart 代理进行了初始化
    1 warmStart 代理进行了重新初始化
    2 linkDown 一个接口从工作状态变为故障状态
    3 linkUp 一个接口从故障状态变为工作状态
    4 authenticationFailure 从SNMP管理进程接收到具有一个无效共同体的报文
    5 egpNeighborLoss 一个EGP相邻路由器变为故障状态
    6 enterpriseSpecific 代理自定义的事件,需要用后面的“特定代码”来指明
    当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。
    3.3 特定代码(specific-code)
    指明代理自定义的时间(若trap类型为6),否则为0。
    3.4 时间戳(timestamp)
    指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。

    4. 变量绑定(variable-bindings)

    指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。

    服务搭建

    winservice12r2自带snmp服务无需安装(所有windows都自带)

    只需要打开服务即可

    在这里插入图片描述
    在这里插入图片描述

    在安全中配置一个团体字符

    在这里插入图片描述
    在这里插入图片描述

    找一台bt机,bt5自带windows团体字符串

    在这里插入图片描述
    关于snmp枚举测试可以看我这篇文章
    2018年全国职业院校技能大赛(中职组)网络空间安全赛题解析
    里面有关于snmp渗透测试的题目

    配置ip
    在这里插入图片描述

    测试

    因为我知道团体字符是public所有跳过爆破步骤,仅作抓包实验。
    在这里插入图片描述

    抓包分析

    脚本会把文档内预置的团体字符串分支进行匹配
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/cqnswp/p/12568852.html
Copyright © 2011-2022 走看看