1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 内网横向移动——SNMP信息收集

内网横向移动——SNMP信息收集

时间:2022-01-30 18:30:32

相关推荐

内网横向移动——SNMP信息收集

SNMP协议被称为信息的金矿,经常被错误配置,如果可以通过SNMP的安全认证,则可以获取非常丰富的设备信息,且低版本SNMP报文以明文传输,容易被抓包分析。本文主要介绍SNMP的工作原理,以及利用其进行内网横向移动的常见方法。

文章目录

一、相关概念(一) 基本介绍(二) 工作原理1.安全认证方式2.OID & MIB二、工具使用(一) SNMP扫描(二) 信息获取

一、相关概念

(一) 基本介绍

SNMP (Simple Network Management Protocol) 即简单网络管理协议,默认端口为161/udp和162/udp,该协议通常用于网络监控应用 (PRTG、Zabbix、OpManager等),用以监控管理网络中运行的服务器、主机和设备。

SNMP版本分为v1、v2c和v3,基本区别:

SNMPv1:协议操作简单,信息传输效率低,仅使用团体字进行身份认证,通信过程中报文以明文传输,造成很大的安全隐患SNMPv2c:在v1的基础上增加了一些协议操作,丰富了数据类型,提高了传输效率,但仍然存在安全问题SNMPv3:增加了基于用户的安全认证和基于视图的访问控制模型,对通信报文进行加密处理,安全认证使用密码,对用户组或团体字实现不同访问权限控制

(二) 工作原理

SNMP管理结构中分为SNMP管理器、SNMP代理和被管理设备3个部分,每一个被管理设备运行着SNMP代理,SNMP代理相当于运行在被管理设备上的网络管理模块,负责定期收集本地设备信息。SNMP管理器通常集成在网络监控应用中,通过“读”操作,与SNMP代理之间采用轮询的方式搜集信息,同时如果设备出现异常,SNMP代理则通过自陷的方式向管理器发出通知,SNMP管理器也可以通过“写”操作修改设备配置信息,更新设备状态,然后将信息整理显示在图形化界面,从而对设备运行状态、性能进行监控和管理。

1.安全认证方式

SNMPv1和v2c版本中,SNMP管理器和代理之间使用团体字进行安全认证,分为“读”和“读/写”两种团体字,分别作为读取信息和写入信息的认证方式,“读”团体字缺省值为public,“读/写”团体字缺省值为private。SNMP代理收到请求数据包后,读取团体字和版本信息,认证成功则进行相应操作,认证失败则不作响应。通信报文以明文传输,通过抓包分析就可以得到团体字信息。

SNMPv3版本中,增加了基于用户的安全认证和基于视图的访问控制模型,安全认证使用密码,对用户组或团体字实现不同访问权限控制,也就是说身份认证是通过用户配置的密码,而团体字仅用于区分访问权限,且通信报文进行加密处理,极大提高了安全性能。

2.OID & MIB

OID (Object Identifier) 即对象标识符,以层次化树形结构标识信息节点,由ITU和ISO/IEC制定标准,广泛应用于SNMP、LDAP、X.509等多种协议。SNMP OID定义了所有可能与被管理设备控制和状态相关的数据对象类型,OID树形结构节点信息庞大复杂,一些分支结构集合映射为MIB (Management Information Base),即管理信息数据库,这样便于统一标准和个性化定制信息,而OID即用于标识MIB分层结构中的对象类型。

MIB有多种标准,对应于OID不同的树形结构分支,不同的标准定义了不同的数据对象类型,目前通用MIB中使用最广泛的是MIB-II {1.3.6.1.2.1},还有一些企业定制化的信息管理节点 {1.3.6.1.4.1},目前已有超过5000家企业向IANA申请OID信息节点 (具体参见 IANA),用作其产品信息管理,OID树形结构如下所示:

OID有多种表达形式,如下所示:

# ASN.1表达{iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1)}{1 3 6 1 4 1}# OID-IRI表达/ISO/Identified-Organization/6/1/4/1# 点号表达1.3.6.1.4.1# 名称表达.dod.internet.private.enterprises# 缩略表达SNMPv2-SMI::enterprisesSNMPv2-SMI::enterprises.77.1.1SNMPv2-MIB::system

OID具体含义可参考:OID Repository,也可以下载MIB Browser等SNMP查询工具,常用的OID查询如下所示:

# 系统基本信息,包括操作系统类型、CPU架构、主机名等{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1)}1.3.6.1.2.1.1# IP地址列表{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) ip(4) ipAddrTable(20) ipAddrEntry(1)}1.3.6.1.2.1.4.20.1# 路由表{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) ip(4) ipRouteTable(21) ipRouteEntry(1)}1.3.6.1.2.1.4.21.1# ARP地址表{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) ip(4) ipNetToMediaTable(22) ipNetToMediaEntry(1)}1.3.6.1.2.1.4.22.1# 系统进程列表{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) host(25) hrSWRun(4) hrSWRunTable(2) hrSWRunEntry(1) hrSWRunName(2)}1.3.6.1.2.1.25.4.2.1.2# 接口信息{iso(1) identified-organization(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1)}1.3.6.1.2.1.2.2.1# LAN Manager MIB II,Microsoft早期注册的MIB管理节点# 可以通过其查询主机共享、会话、用户、登录等信息{iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 77 lanmgr-2(1)}1.3.6.1.4.1.77.1

二、工具使用

(一) SNMP扫描

SNMP代理监听端口为161/udp,管理器自陷消息监听端口为162/udp,由于使用不建立连接的UDP协议,因此采用nmap等普通的扫描工具扫描时,即便目标开放了端口,显示结果也会是"open|filtered",而且SNMP采用团体字等安全认证方式,认证失败不回复直接丢包,因此采用SNMP专用扫描工具效率更高。

onesixtyone

SNMP枚举工具,扫描时向设备发送SNMP信息请求包,认证通过的设备会返回系统信息,使用方法onesixtyone [options] <host> <community>,如下所示:

onesixtyone 192.168.4.0/24 publiconesixtyone -c dict.txt -i hosts -o my.log -w 100# -c: 团体字字典# -i: 扫描主机文件# -w: 发包间隔时间,单位ms,缺省值为10

(二) 信息获取

snmpwalk

通过向设备发送GETNEXT请求包获取指定OID分支节点下的所有对象,如果不指明查询的OID,则默认返回MIB-II下的所有信息,使用方法snmpwalk [OPTIONS] AGENT [OID],如下所示:

# 查询Windows主机账户信息snmpwalk -c public -v 2c 192.168.43.124 1.3.6.1.4.1.77.1.2.25.1.1# -c: 指定团体字# -v: 指定SNMP版本# 查询系统信息snmpwalk -m all -c public -v 2c 192.168.43.124 system# -m: 指定加载的MIB,这样可以使用OID最后一级名称代替具体表达进行查询# 具体可加载的MIB可参见Kali目录 /usr/share/snmp/mibs/

snmp-check

可一次性查询设备所有信息,包括系统信息、用户信息、网卡信息、接口信息、运行进程、网络连接情况、监听端口、开启服务、硬盘信息、安装软件等,查询结果简单易懂,但是不能指定OID查询,使用方法snmp-check [options] <host>,如下所示:

snmp-check -c public -v 2c 192.168.43.124# -c: 指定团体字# -v: 指定SNMP版本# 检查是否可写,如果可写则返回查询信息snmp-check -c public -v 2c 192.168.43.124 -w

⚠️注意: snmp-check和snmpcheck是两种工具,不要混淆

snmptranslate

将SNMP OID在数字和文字描述之间进行转换,即通过OID查询名称,或通过名称查询OID,使用方法snmptranslate [OPTIONS] OID [OID],如下所示:

# 查询system对应的OIDsnmptranslate -m all -On -IR system# -m: 加载MIB# -On: OID查询结果以数字点号形式输出# -IR: OID查询输入随意性,这样可以只通过OID最后一级的名字进行查询,否则要输入全部名称# 完整输出system之后的树形节点snmptranslate -m all -Tp -OS -IR system# -Tp: 输出树形符号表# -OS: 输出MIB模块和最后一个元素# 反查OID的名称snmptranslate -m all -Of 1.3.6.1.2.1.1# -Of: 输出完整OID,默认以简略形式输出

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。