161,162,10161,10162/udp - Pentesting SNMP
如果您对 黑客职业 感兴趣并想要黑掉不可能黑掉的东西 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。
基本信息
SNMP - 简单网络管理协议 是一种用于监控网络中不同设备(如路由器、交换机、打印机、物联网设备等)的协议。
SNMP还使用162/UDP端口进行陷阱。这些是从SNMP服务器发送到客户端的数据包,而无需明确请求。
MIB
为了确保SNMP访问跨制造商和不同的客户端-服务器组合工作,创建了管理信息库(MIB)。MIB是一种独立的格式,用于存储设备信息。MIB是一个文本文件,其中列出了设备的所有可查询SNMP对象,按照标准化的树形层次结构。它至少包含一个对象标识符(OID)
,除了必要的唯一地址和名称外,还提供有关各个对象的类型、访问权限和描述的信息。
MIB文件以基于ASCII文本格式的抽象语法表示一
(ASN.1
)编写。MIB不包含数据,但它们解释了在哪里找到哪些信息以及其外观,为特定OID返回值,或使用了哪种数据类型。
OIDs
**对象标识符(OIDs)起着至关重要的作用。这些唯一标识符旨在管理管理信息库(MIB)**中的对象。
MIB对象ID或OID的最高级别分配给不同的标准制定组织。在这些顶级中,建立了全球管理实践和标准的框架。
此外,供应商被授予建立私有分支的自由。在这些分支中,他们有自主权包括与其产品线相关的受管理对象。这个系统确保了对跨不同供应商和标准的各种对象进行识别和管理的结构化和组织化方法。
您可以从这里通过网络导航到OID树:http://www.oid-info.com/cgi-bin/display?tree=#focus,或者通过访问http://oid-info.com/get/1.3.6.1.2.1.1 查看OID的含义(如`1.3.6.1.2.1.1)。 有一些众所周知的OID,比如1.3.6.1.2.1,引用了MIB-2定义的简单网络管理协议(SNMP)变量。从从这个OID挂起的OID中,您可以获取一些有趣的主机数据(系统数据、网络数据、进程数据...)
OID示例
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
这是该地址的分解。
1 - 这被称为ISO,它建立了这是一个OID。这就是为什么所有OID都以“1”开头
3 - 这被称为ORG,用于指定构建设备的组织。
6 - 这是dod或国防部,是首次建立互联网的组织。
1 - 这是互联网的价值,表示所有通信将通过互联网进行。
4 - 此值确定此设备由私人组织制造,而不是政府组织。
1 - 此值表示设备由企业或商业实体制造。
这前六个值对所有设备来说通常是相同的,它们为您提供了关于它们的基本信息。这些数字序列对所有OID来说都是相同的,除非设备是由政府制造的。
接下来是下一组数字。
1452 - 给出制造此设备的组织的名称。
1 - 解释设备类型。在这种情况下,它是一个闹钟。
2 - 确定此设备是远程终端单元。
其余的值提供有关设备的具体信息。
5 - 表示离散报警点。
1 - 设备中的特定点
3 - 端口
21 - 端口地址
1 - 端口的显示
4 - 点号
7 - 点的状态
SNMP版本
SNMP有两个重要版本:
SNMPv1:主要版本,仍然是最常见的,认证基于字符串(社区字符串),以明文传输(所有信息都以明文传输)。版本2和2c也以明文发送流量,并使用社区字符串作为认证。
SNMPv3:使用更好的认证形式,信息传输加密(字典攻击可能会被执行,但要找到正确的凭据比在SNMPv1和v2中困难得多)。
社区字符串
如前所述,为了访问MIB上保存的信息,您需要了解版本1和2/2c上的社区字符串以及版本3上的凭据。 有2种类型的社区字符串:
public
主要是只读功能private
通常是读/写
请注意,OID的可写性取决于使用的社区字符串,因此即使发现正在使用“public”,您也可能能够写入一些值。此外,可能存在始终为“只读”的对象。
如果尝试写入一个对象,则会收到**noSuchName
或readOnly
错误**。
在版本1和2/2c中,如果使用错误的社区字符串,服务器将不会响应。因此,如果它响应了,就是使用了有效的社区字符串。
端口
SNMP代理在UDP端口161上接收请求。
管理器在端口162上接收通知(陷阱和InformRequests)。
暴力破解社区字符串(v1和v2c)
要猜测社区字符串,您可以执行字典攻击。查看这里不同的方法来对SNMP执行暴力破解攻击。一个经常使用的社区字符串是public
。
枚举SNMP
建议安装以下内容以查看从设备收集的每个OID的含义:
如果您知道一个有效的团体字符串,您可以使用 SNMPWalk 或 SNMP-Check 访问数据:
由于扩展查询(download-mibs)的存在,可以使用以下命令进一步枚举系统信息:
SNMP 包含许多关于主机的信息,您可能会发现感兴趣的内容包括:网络接口(IPv4 和 IPv6 地址)、用户名、正常运行时间、服务器/操作系统版本以及正在运行的 进程(可能包含密码)....
危险设置
在网络管理领域,确保全面监控和控制的关键是某些配置和参数。
访问设置
两个主要设置允许访问完整的 OID 树,这是网络管理的关键组成部分:
设置
rwuser noauth
允许无需身份验证即可完全访问 OID 树。这个设置很直接,允许无限制访问。为了更具体的控制,可以使用:
rwcommunity
用于 IPv4 地址,以及rwcommunity6
用于 IPv6 地址。
这两个命令都需要一个 community 字符串 和相关的 IP 地址,无论请求的来源如何,都提供完全访问权限。
用于 Microsoft Windows 的 SNMP 参数
一系列 管理信息库(MIB)值 用于通过 SNMP 监控 Windows 系统的各个方面:
系统进程:通过
1.3.6.1.2.1.25.1.6.0
访问,此参数允许监视系统中的活动进程。正在运行的程序:
1.3.6.1.2.1.25.4.2.1.2
值用于跟踪当前正在运行的程序。进程路径:要确定进程正在从哪里运行,使用
1.3.6.1.2.1.25.4.2.1.4
MIB 值。存储单元:通过
1.3.6.1.2.1.25.2.3.1.4
实现对存储单元的监视。软件名称:要识别系统上安装的软件,使用
1.3.6.1.2.1.25.6.3.1.2
。用户帐户:
1.3.6.1.4.1.77.1.2.25
值允许跟踪用户帐户。TCP 本地端口:最后,
1.3.6.1.2.1.6.13.1.3
用于监视 TCP 本地端口,提供有关活动网络连接的见解。
Cisco
如果您使用 Cisco 设备,请查看此页面:
pageCisco SNMP从 SNMP 到 RCE
如果您拥有允许您在 SNMP 服务中 编写值 的 字符串,则可能可以滥用它来 执行命令:
pageSNMP RCE大规模 SNMP
Braa 是一个大规模 SNMP 扫描器。这样的工具的预期用途当然是进行 SNMP 查询 - 但与 net-snmp 中的 snmpwalk 不同,它能够同时查询数十甚至数百个主机,并且在单个进程中执行。因此,它消耗非常少的系统资源,并且扫描非常快速。
Braa 实现了自己的 SNMP 栈,因此不需要像 net-snmp 这样的任何 SNMP 库。
语法: braa [Community-string]@[SNMP 服务器的 IP]:[iso id]
这可以提取大量的信息,无法手动处理。
因此,让我们寻找最有趣的信息(来自https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
设备
该过程始于从每个文件中提取sysDesc MIB数据(1.3.6.1.2.1.1.1.0)以识别设备。这是通过使用grep命令来完成的:
识别私有字符串
一个关键的步骤是识别组织使用的私有社区字符串,特别是在 Cisco IOS 路由器上。该字符串使得可以从路由器中提取运行配置。通常通过分析 SNMP Trap 数据中包含单词 "trap" 的内容来识别,可以使用 grep 命令:
用户名/密码
在 MIB 表中存储的日志被检查以查找登录失败尝试,这可能会意外地包括作为用户名输入的密码。搜索关键字,如 fail、failed 或 login,以查找有价值的数据:
电子邮件
最后,要从数据中提取电子邮件地址,可以使用带有正则表达式的grep命令,重点关注与电子邮件格式匹配的模式:
修改 SNMP 值
您可以使用 NetScanTools 来修改值。您需要知道私有字符串才能这样做。
欺骗
如果有一个 ACL 只允许一些 IP 查询 SMNP 服务,您可以在 UDP 数据包中欺骗其中一个地址并嗅探流量。
检查 SNMP 配置文件
snmp.conf
snmpd.conf
snmp-config.xml
如果您对黑客职业感兴趣并想要黑入不可黑入的系统 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。
HackTricks 自动命令
最后更新于