当前位置: 首页 > news >正文

1-10〔 OSCP ◈ 研记 〕❘ 信息收集▸主动采集H:SNMP基础

    郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。

    感谢您的点赞、关注、收藏、分享!


𖤐 深 呼 吸 、 放 轻 松 ,这 只 是 一 个 故 事。

𖤐 𝓓𝓮𝓮𝓹 𝓫𝓻𝓮𝓪𝓽𝓱, 𝓻𝓮𝓵𝓪𝔁, 𝓲𝓽'𝓼 𝓳𝓾𝓼𝓽 𝓪 𝓼𝓽𝓸𝓻𝔂. 


信息收集▸主动采集▸SNMP基础-----我们在这儿~ 🔥🔥🔥

→ 漏洞检测

→ 初始立足点

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  


目录

1.4 主动信息收集

1.4.6 SNMP枚举(基础)

1.4.6.1SNMP协议概述

①SNMP协议介绍

② MIB是什么? 

③工作协议流程

④SNMP协议各版本对比

⑤为什么SNMP是攻击者的“香饽饽”?

1.4.6.2 粗略定位SNMP主机:使用 Nmap

1.4.6.3 精准定位SNMP主机 & 社区字符串爆破:使用 onesixtyone

①社区字符串介绍

②构建文本文件(社区字符串文件 &目标IP文件 )

③发起扫描

④输出解读

创作不易~感谢您的点赞、关注、收藏、分享~


1.4 主动信息收集

1.4.6 SNMP枚举(基础)

1.4.6.1SNMP协议概述

①SNMP协议介绍

        SNMP(Simple Network Management Protocol,简单网络管理协议):
👉 用于监控和管理网络设备(路由器/交换机/服务器等)的标准协议,让管理员能远程获取设备状态、修改配置。—— 网络设备的"生命监测系统" 🩺
✅ 核心能力

  • 实时获取设备状态(CPU/内存/温度)

  • 接收设备故障警报

  • 远程修改设备配置

💡 比喻
      整个网络就像一座智能大楼🏢,SNMP是中央监控室,每个设备的SNMP代理是楼层传感器,管理员手中的网管软件(NMS)是监控大屏

核心组件: 

组件技术作用生活比喻
NMS网管系统(管理端)大楼总控台💻
Agent设备中的SNMP代理程序每层楼的智能传感器📡
MIB管理信息库(设备信息数据库)设备参数说明书📚
OID对象标识符(参数唯一ID)说明书里的章节号🔢

SNMP端口

        SNMP端口:是SNMP通信端点,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162。有时也使用传输层安全性(TLS)或数据报传输层安全性(DTLS)协议。

用途

协议

端口号

代理进程Agent:接收请求信息

UDP协议

161

NMS---代理进程Agent:之间的通信

UDP协议

161

NMS:接收通知信息

UDP协议

162

代理进程Agent:生成通知信息

-

任何可用的端口

接收请求信息

TLS/DTLS

10161

接收通知信息

TLS/DTLS

10162

② MIB是什么? 

       MIB 是一个分层组织的数据库,它定义了被管理设备上能被 SNMP Agent 查询和设置的信息(即变量)。它详细说明了每个管理对象的属性,包括名称、状态、访问权限和数据类型。通过 MIB 可以实现两个核心功能:

  1. 查询状态: Agent 通过查询 MIB 获取设备的当前状态信息。

  2. 设置参数: Agent 通过修改 MIB 来调整设备的配置参数。

        MIB 采用树形结构组织这些对象(称为对象命名树)。树根在最上面,没有名字。

  • 树的分支:都有数字和名称标识,代表不同的组织或网络功能

  • 叶子节点(最终端点):每个管理对象在树中的位置对应一个唯一的“身份证号”,叫做对象标识符(OID)。OID 是由从树根到该对象节点的路径上所有分支的数字组成的序列。

  • 例如:
    system 对象的 OID 是 1.3.6.1.2.1.1如下图
    interfaces 对象的 OID 是 1.3.6.1.2.1.2

MIB-OID 示例

     1. 系统基本信息:1.3.6.1.2.1.1.1.0(sysDescr.0)

  • 含义:设备的描述信息,通常包含设备型号、操作系统版本、厂商等。
  • 示例值Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(2)E6, RELEASE SOFTWARE (fc1)
  • 作用:快速识别设备类型和系统版本,用于网络资产盘点。

     2. 设备名称:1.3.6.1.2.1.1.5.0(sysName.0)

  • 含义:管理员为设备设置的名称(类似主机名)。
  • 示例值Beijing-Router-01
  • 作用:通过自定义名称定位设备位置或功能(如 “北京核心路由器 1”)。

     3. 接口状态:1.3.6.1.2.1.2.2.1.8.1(ifOperStatus.1)

  • 含义:第 1 个网络接口的运行状态(1=up,2=down)。
  • 示例值1(表示接口处于启用状态)
  • 作用:监控接口是否正常工作,是网络故障排查的基础指标。

            
    以下MIB值对应于特定的Microsoft Windows SNMP参数,包含了比基于网络信息更多内容: 

👨比喻

        可以把MIB比作 “一栋公寓楼”,每个OID则是公寓的 “门牌号”。通过 “门牌号”(OID),管理员可以精准找到并查询 “公寓楼”(MIB)中每个 “房间”(设备信息)的状态,实现对网络的远程管理。

  • sysDescr.0 像是公寓楼的 “开发商铭牌”(如 “XX 小区,钢筋混凝土结构,2020 年建成”),告诉你这栋楼的基本属性;
  • sysName.0 像是楼的 “昵称”(如 “幸福家园 3 号楼”),方便管理员记忆和定位;
  • ifOperStatus.1 像是 “1 单元大门的状态”(开 / 关),直接反映该单元是否可用;

工作协议流程

     1. 主动查询(管理员发起)

     2. 被动告警(设备主动上报)

     3. 远程操控


④SNMP协议各版本对比

版本认证方式加密重大缺陷
v1社区名(明文)❌ 无数据裸奔传输
v2c社区名(明文)❌ 无可伪造告警
v3用户密码认证❌ DES-56加密弱密码可被攻破
v3用户密码认证✅ AES加密配置复杂

⑤为什么SNMP是攻击者的“香饽饽”?

        多年来,简单网络管理协议(SNMP) 一直是网络世界的一个“阿喀琉斯之踵”。许多管理员对其理解不足,导致配置错误频发,常常泄露极其重要的网络和设备信息

  • 🚫 协议基础缺陷: 基于UDP(无连接、无状态),天生易受 IP欺骗 和 重放攻击

  • 🔓 裸奔的数据: 版本 1、2 和 2c 完全不加密流量!这意味着在本地网络上,SNMP信息和社区字符串(本质是密码) 就像明信片一样可以被轻松拦截

  • 🔑 脆弱的身份验证: 传统的身份验证方案(主要依赖社区字符串)非常薄弱

  • 🔓 默认密码陷阱: 设备常被默认使用为广为人知的默认社区字符串(如 public - 只读,private - 读写)。

  • 🔓 早期v3的弱点: 直到最近,SNMPv3虽然支持认证和加密,但早期实现依赖 DES-56 加密,这种弱加密方案易被暴力破解

  • 🛡️ 曙光:安全v3: 真正安全的SNMPv3实现需要采用强大的 AES-256 加密方案

👉 结论: 基于这些固有缺陷,SNMP 是我们(渗透测试/安全审计人员)最喜欢的枚举协议之一,它能高效地挖掘出大量敏感信息!利用 SNMP 管理信息库(MIB) 的结构以及 v1/v2/v2c 协议无加密的特性,攻击者可以在本地网络轻松拦截 SNMP 信息和凭据,进而访问 MIB 树中存储的丰富信息。


1.4.6.2 粗略定位SNMP主机:使用 Nmap

📖 目标: 快速扫描整个网段,找出哪些主机开启了 SNMP 服务(即开放 UDP 161 端口)。

kali@kali:~$ sudo nmap -sU --open -p 161 192.168.50.1-254 -oG open-snmp.txt# 以下是命令输出内容。
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-14 06:02 EDT
Nmap scan report for 192.168.50.151
Host is up (0.10s latency).PORT STATE SERVICE
161/udp open snmpNmap done: 1 IP address (1 host up) scanned in 0.49 seconds
...
  • sudo: 通常需要管理员权限发送/接收原始数据包。

  • -sU: 指定进行 UDP 扫描

  • --open: 只显示状态为开放(open) 的端口,过滤掉关闭的或无响应的,让结果更简洁。

  • -p 161: 明确指定扫描 UDP 端口 161 (SNMP 标准端口)。

  • 192.168.50.1-254: 扫描目标 IP 范围 (这里是 192.168.50.0 网段的所有主机)。

  • -oG open-snmp.txt: 将扫描结果以 Grepable 格式 输出到文件 open-snmp.txt 中,方便后续处理。

📌 输出: open-snmp.txt 文件会列出所有被发现开放了 UDP 161 端口的主机 IP 地址。


1.4.6.3 精准定位SNMP主机 & 社区字符串爆破:使用 onesixtyone

📖 目标: 不仅找出开启 SNMP 服务的主机,还能快速猜测或暴力破解其使用的 SNMP 社区字符串

🔧 工具: onesixtyone (专为快速 SNMP 发现和社区字符串测试设计)

①社区字符串介绍

     👉 社区字符串(Community String),在SNMP v1/v2c中用于身份验证的明文密码,决定管理端(NMS)对设备的操作权限级别。

💡 比喻
社区字符串 就像大楼门禁密码🗝️:

  • 知道密码的人才能查看监控(读权限)

  • 高级密码还能控制电梯运行(写权限)

社区字符串类型技术权限生活类比风险等级
只读(RO)public (默认)访客密码:只能看监控📹⭐⭐
读写(RW)private (默认)管理员密码:能关整栋楼电闸🔌💥💥💥

    ⚠️ 警告:使用默认社区字符串是重大安全风险!

🛡️ 安全实践:自定义社区字符串

  • 管理员必须设置强密码级别的、复杂且唯一的自定义社区字符串。

  • 强烈建议升级到 SNMPv3,它使用真正的用户名/密码认证和加密,安全性远超社区字符串。

📌 配置示例(Cisco设备上自定义社区字符串)

# 设置只读社区名(允许查看信息)
snmp-server community MyReadOnlyPass RO# 设置读写社区名(危险!允许修改配置)
snmp-server community SuperSecretRW RWsnmp-server community Ky8$3F!qW9*Lz RO  # 在cisco上配置。# 语法:snmp-server community <社区字符串名称> RO [ACL]  只读权限  # 本例中,设置社区字符串就是“Ky8$3F!qW9*Lz”,这个就无法猜到了

构建文本文件(社区字符串文件 &目标IP文件 )

      社区字符串文件 (community.txt): 每行写一个想爆破的社区字符串。必须包含常见默认值 (publicprivate) 和任何已知或猜测的自定义字符串。

public
private
admin
snmp
mycompany
manager

      目标 IP 文件 (ips.txt): 每行写一个要扫描的目标主机 IP 地址。

kali@kali:~$ for ip in $(seq 1 254); do echo 192.168.50.$ip; done > ipskali@kali:~$ cat ips
192.168.50 1
192.168.50.2
192.168.50.3
192.168.50.4
192.168.50.5
192.168.50.6
...
192.168.50.154

③发起扫描

$ onesixtyone -c community.txt -i ips.txt
  • -c community.txt: 指定包含社区字符串列表的文件。

  • -i ips.txt: 指定包含目标 IP 地址列表的文件。

④输出解读

kali@kali:~$ onesixtyone -c community -i ips# 以下为命令输出内容。
-------------------------------------------------------------
Scanning 254 hosts, 3 communities
192.168.50.151 [public] Hardware: Intel64 Family 6 Model 79 Stepping 1 AT/AT 
COMPATIBLE - Software: Windows Version 6.3 (Build 17763 Multiprocessor Free)
...# 硬件信息:处理器: Family 6: 通常指 Intel 的第六代微架构核心(Core/Core 2/Xeon等)。Model 79: 具体型号,常见于 Intel Xeon E5 v4 / E7 v4 系列处理器(Broadwell-EP/EX)。Stepping 1: 处理器的修订版本号。AT/AT COMPATIBLE: 表明设备遵循标准的 IBM PC AT 兼容架构(即常见的个人电脑/服务器架构)。# 软件/操作系统信息:操作系统: Version 6.3:这是 Windows NT 内核版本号。Build 17763: 这是具体的操作系统构建版本号。对应操作系统: Build 17763 明确对应的是 Windows 10 版本 1809 (October 2018 Update) 或
Windows Server 2019。这两个操作系统共享相同的内核版本 (10.0.17763)。Multiprocessor Free: 表示操作系统是支持多处理器(多核/多CPU)的零售版(或VL版)内核,而
不是单处理器内核或评估版内核。Free 在这里指的是“无限制”支持多处理器,而非“免费”。# 总结:这台电脑/服务器(192.168.50.151)用的是 Intel 的高端服务器 CPU (Xeon E5/E7 v4),装的是
Windows Server 2019 或者 Win10 1809 系统,可以通过公开的 SNMP 口令(public)查看它的基本信息。
--------------------------------------------------------------

🎯 成果: 你现在知道主机 192.168.50.151 存在 SNMP 漏洞(使用默认只读字符串 public),可以开始利用 SNMPwalk 或 snmpget 等工具读取其 MIB 树中的敏感信息了!


创作不易~感谢您的点赞、关注、收藏、分享~

您的支持是我创作最大的动力!

艺术欣赏环节~放松心情👁️👁️

 

http://www.dtcms.com/a/321153.html

相关文章:

  • WinForm利用 RichTextBox组件实现输出各种颜色字体日志信息
  • MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1
  • STM32CubeMX(十二)SPI驱动W25Qxx(Flash)
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-视频列表与视频播放
  • 【嵌入式C语言】
  • C语言:结构体
  • mac电脑解决在不同项目需要频繁手动切换node版本的困扰
  • Autosar AP功能组状态和模型进程是否预定义后不改变了?
  • Mac 电脑放在环境变量中的通用脚本
  • 从浅拷贝到深拷贝:C++赋值运算符重载的核心技术
  • SITIME汽车时钟发生器Chorus保障智能汽车安全
  • 《告别Bug!GDB/CGDB调试实战指南》
  • 「iOS」————优先级反转
  • 解决Docker部署的MySQL8错误日志里面的 mbind: Operation not permitted 问题
  • 构建安全 Web 应用:从用户认证与授权到 JWT 原理解析
  • python使用python-docx自动化操作word
  • 【杂谈】-逆缩放悖论:为何更多思考会让AI变“笨“?
  • Numpy科学计算与数据分析:Numpy布尔索引与花式索引实战
  • 一种对白点进行多重加权并利用三角剖分插值微调白平衡增益的白平衡矫正算法
  • RAG问答系统:Spring Boot + ChromaDB 知识库检索实战
  • 3D Tiles 格式中,Bounding Volum
  • 基于AutoDL平台的3D_Gaussian_Splatting初体验
  • 在 Vue 中使用 ReconnectingWebSocket实现即时通讯聊天客服功能
  • 2025 前端真实试题-阿里面试题分析
  • 关于数据结构6-哈希表和5种排序算法
  • Maptalks vs Cesium
  • 【最新版】2025年搜狗拼音输入法
  • “电子合同”为什么会出现无效的情况?
  • OpenCV cv2.flip() 函数详解与示例
  • 深入理解 Java AWT Container:原理、实战与性能优化