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 可以实现两个核心功能:
-
查询状态: Agent 通过查询 MIB 获取设备的当前状态信息。
-
设置参数: 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
): 每行写一个想爆破的社区字符串。必须包含常见默认值 (public
, private
) 和任何已知或猜测的自定义字符串。
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 树中的敏感信息了!
创作不易~感谢您的点赞、关注、收藏、分享~
您的支持是我创作最大的动力!
艺术欣赏环节~放松心情👁️👁️