SNMP e community string: come leggere mezza rete in un pentest

SNMP cos’è, come funziona, OID, community string public/private, snmpwalk, brute force, write access e rischi reali in un pentest enterprise.
- Pubblicato il 2026-03-25
- Tempo di lettura: 7 min
SNMP è il protocollo di management di rete più diffuso. Capire cos’è SNMP e come funziona l’albero OID è fondamentale per chi fa pentesting: community string “public” ancora attive, SNMPv1 e v2c senza autenticazione, e MIB che espongono configurazione completa di router e switch — sono finding che compaiono in quasi ogni engagement su reti enterprise e industrial.
Cos’è SNMP #
SNMP (Simple Network Management Protocol) è il protocollo standard per il monitoring e la gestione dei dispositivi di rete. Opera al livello applicativo su UDP porta 161 (query) e UDP porta 162 (trap). È definito in una serie di RFC che coprono tre versioni principali:
- SNMPv1: RFC 1157 (1988) — nessuna sicurezza reale, community string in chiaro
- SNMPv2c: RFC 1901 (1996) — community string migliorata ma ancora in chiaro
- SNMPv3: RFC 3410 (2002) — autenticazione e cifratura opzionali
L’architettura SNMP coinvolge tre componenti:
- Manager (NMS): sistema di monitoring che invia query e riceve trap (es. Nagios, Zabbix, SolarWinds)
- Agent: processo sul dispositivo gestito che risponde alle query e invia trap
- MIB (Management Information Base): database gerarchico che descrive le informazioni gestibili
Come funziona SNMP #
La struttura OID #
La MIB organizza tutte le informazioni gestibili in un albero gerarchico. Ogni nodo è identificato da un OID (Object Identifier): una sequenza numerica separata da punti.
.1.3.6.1.2.1.1.1.0
│ │ │ │ │ │ │ └── 0: istanza scalare
│ │ │ │ │ │ └──── 1: sysDescr
│ │ │ │ │ └────── 1: system
│ │ │ │ └──────── 2: mgmt
│ │ │ └────────── 1: internet
│ │ └──────────── 6: dod
│ └────────────── 3: org
└──────────────── 1: isoOID importanti per il pentesting:
| OID | Nome | Contenuto |
|---|---|---|
| .1.3.6.1.2.1.1.1.0 | sysDescr | Descrizione sistema (OS, versione) |
| .1.3.6.1.2.1.1.5.0 | sysName | Hostname del dispositivo |
| .1.3.6.1.2.1.1.6.0 | sysLocation | Posizione fisica |
| .1.3.6.1.2.1.1.4.0 | sysContact | Email/contatto dell’admin |
| .1.3.6.1.2.1.2.2.1 | ifTable | Tabella interfacce di rete |
| .1.3.6.1.2.1.4.21 | ipRouteTable | Tabella di routing IP |
| .1.3.6.1.2.1.4.22 | ipNetToMediaTable | Tabella ARP |
| .1.3.6.1.2.1.6.13 | tcpConnTable | Connessioni TCP attive |
| .1.3.6.1.2.1.25.4.2 | hrSWRunTable | Processi in esecuzione |
| .1.3.6.1.2.1.25.6.3 | hrSWInstalledTable | Software installato |
| .1.3.6.1.4.1 | enterprises | MIB proprietarie (Cisco, HP, ecc.) |
Le operazioni SNMP #
| Operazione | Direzione | Descrizione |
|---|---|---|
| GET | Manager → Agent | Legge il valore di un OID specifico |
| GETNEXT | Manager → Agent | Legge il prossimo OID nell’albero |
| GETBULK | Manager → Agent | Legge blocchi di OID (v2c/v3) |
| SET | Manager → Agent | Modifica il valore di un OID |
| TRAP | Agent → Manager | Notifica asincrona di un evento |
| INFORM | Agent → Manager | Trap con conferma (v2c/v3) |
| WALK | Manager → Agent | Legge ricorsivamente tutti gli OID |
Community String (v1/v2c) #
SNMPv1 e v2c usano le community string come unico meccanismo di autenticazione: una stringa in chiaro inclusa in ogni pacchetto SNMP.
- Community “public”: accesso in sola lettura — default su praticamente ogni dispositivo
- Community “private”: accesso in lettura/scrittura — default su molti dispositivi
Questi default sono cambiati in rarissimi ambienti. In produzione, trovare community “public” attiva è più regola che eccezione.
SNMPv3 #
SNMPv3 aggiunge due livelli di sicurezza opzionali:
Authentication: verifica l’identità con HMAC-MD5 o HMAC-SHA. Previene packet injection e replay.
Privacy (cifratura): cifra il payload con DES (deprecato) o AES. Previene eavesdropping.
Tre livelli di sicurezza in SNMPv3:
- noAuthNoPriv: nessuna auth, nessuna cifratura (equivalente a v1/v2c)
- authNoPriv: autenticazione senza cifratura
- authPriv: autenticazione e cifratura — il livello sicuro
SNMP Trap #
Le trap sono notifiche asincrone che l’agent invia spontaneamente al manager quando si verifica un evento (link down, autenticazione fallita, soglia di temperatura, ecc.). Il manager le riceve su UDP porta 162 senza rispondere.
Dove viene usato SNMP nelle reti #
SNMP è il protocollo di management standard in qualsiasi rete enterprise:
- Switch e router: CPU, memoria, statistiche interfacce, tabella ARP, tabella di routing
- Firewall e load balancer: statistiche di connessione, stato delle policy
- Server: CPU, memoria, disco, processi, applicazioni installate
- Stampanti: livello toner, stato, code di stampa
- UPS e PDU: stato alimentazione, temperatura, carico
- Ambienti OT/ICS: PLC, SCADA, e dispositivi industriali con agente SNMP integrato
- Sistemi di monitoring: Nagios, Zabbix, PRTG, SolarWinds usano SNMP come fonte primaria di dati
Perché SNMP è importante in cybersecurity #
SNMP con community string di default o deboli è uno dei vettori di enumeration più potenti disponibili in un engagement interno. In pochi secondi si ottiene:
- Hostname e OS version di ogni dispositivo
- Configurazione completa delle interfacce di rete
- Tabella di routing e tabella ARP
- Lista delle connessioni TCP attive (e quindi dei servizi in ascolto)
- Processi in esecuzione e software installato
- Username di sistema
- Configurazione Wi-Fi (su AP con SNMP)
Con accesso in scrittura (community “private”), è possibile modificare la configurazione di switch e router — cambiare VLAN, aggiungere route, disabilitare interfacce.
Per UDP su cui opera, vedi UDP. Per le VLAN gestibili via SNMP, vedi VLAN e 802.1Q.
SNMP in un engagement di pentesting #
Reconnaissance: identificare agenti SNMP #
# Nmap scan SNMP
nmap -sU -p 161 --open <subnet>
# Con script di detection
nmap -sU -p 161 --script snmp-info <target>
# Con version detection
nmap -sU -p 161 -sV <target>Brute force delle community string #
# onesixtyone — lo strumento più veloce per SNMP brute force
onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt <target>
# Su subnet intera
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt \
-i targets.txt
# Con nmap
nmap -sU -p 161 --script snmp-brute <target>Wordlist consigliata per community string:
public,private,community,secret- Hostname del dispositivo
- Nome dell’organizzazione
cisco,cable-docsis,ILMI,admin,snmp,monitor
Enumeration completa con snmpwalk #
# Walk completo dell'albero OID
snmpwalk -v2c -c public <target>
# OID specifici di interesse
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.1 # System info
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.2 # Interfaces
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.4.21 # Routing table
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.4.22 # ARP table
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.6.13 # TCP connections
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.25.4.2 # Running processes
snmpwalk -v2c -c public <target> .1.3.6.1.2.1.25.6.3 # Installed software
# Con output leggibile
snmpwalk -v2c -c public -O e <target>GET di OID specifici #
# Singolo OID
snmpget -v2c -c public <target> .1.3.6.1.2.1.1.1.0
# sysDescr — spesso rivela OS e versione
snmpget -v2c -c public <target> sysDescr.0
# Con nmap script
nmap -sU -p 161 --script snmp-sysdescr <target>Enumeration massiva con snmp-check #
# snmp-check — output formattato per pentesting
snmp-check <target> -c public -v 2cOutput strutturato con: system info, user accounts, network interfaces, network IP, routing information, TCP connections, listening UDP, processes, storage information, file system, installed software.
SNMP SET: modifica della configurazione #
Se la community di scrittura è accessibile:
# Cambiare sysName
snmpset -v2c -c private <target> .1.3.6.1.2.1.1.5.0 s "nuovo_hostname"
# Su switch Cisco con SNMP write access:
# - Modificare tabella di routing
# - Disabilitare interfacce
# - Cambiare VLAN assignment
# - Modificare ACLSNMP Enumeration per Active Directory #
In ambienti Windows, SNMP espone informazioni sull’ambiente AD:
snmpwalk -v2c -c public <windows_target> .1.3.6.1.4.1.77.1.4 # User accounts
snmpwalk -v2c -c public <windows_target> .1.3.6.1.4.1.77.1.2.3 # Shared resourcesNmap scripts SNMP completi #
nmap -sU -p 161 --script \
snmp-brute,snmp-hh3c-logins,snmp-info,snmp-interfaces,\
snmp-ios-config,snmp-netstat,snmp-processes,\
snmp-sysdescr,snmp-win32-services,snmp-win32-shares,\
snmp-win32-software,snmp-win32-users \
<target>Attacchi e abusi possibili su SNMP #
SNMP Enumeration #
Come descritto: dump completo di configurazione, processi, utenti, routing, ARP tramite community string di default.
SNMP Write Access Exploitation #
Con community di scrittura, modificare la configurazione di rete — disabilitare interfacce, alterare routing, cambiare VLAN.
SNMP Amplification (DRDoS) #
Come NTP, SNMP può essere usato per amplificazione DDoS. Le richieste GETBULK generano risposte molto più grandi. Fattore di amplificazione tipico: ~650x.
Credential Extraction via SNMP #
Su alcuni dispositivi, le credenziali di accesso (username/password) sono accessibili via SNMP in determinate MIB proprietarie. Cisco e altri vendor hanno avuto CVE in questo senso.
SNMP Trap Spoofing #
Inviare trap SNMP falsificate al manager per generare falsi allarmi, nascondere eventi reali, o causare azioni automatiche non desiderate nei sistemi di monitoring.
Esempi pratici con SNMP in laboratorio #
Script di enumerazione SNMP automatizzata #
#!/bin/bash
TARGET=$1
COMMUNITY=${2:-public}
echo "=== SNMP Enumeration: $TARGET (community: $COMMUNITY) ==="
echo "[+] System Info"
snmpwalk -v2c -c $COMMUNITY $TARGET system 2>/dev/null | head -20
echo "[+] Interfaces"
snmpwalk -v2c -c $COMMUNITY $TARGET interfaces 2>/dev/null | grep -E "(ifDescr|ifPhysAddr|ifAdminStatus|ifOperStatus)"
echo "[+] IP Routes"
snmpwalk -v2c -c $COMMUNITY $TARGET .1.3.6.1.2.1.4.21 2>/dev/null
echo "[+] ARP Table"
snmpwalk -v2c -c $COMMUNITY $TARGET .1.3.6.1.2.1.4.22 2>/dev/null
echo "[+] TCP Connections"
snmpwalk -v2c -c $COMMUNITY $TARGET tcpConnTable 2>/dev/null
echo "[+] Running Processes"
snmpwalk -v2c -c $COMMUNITY $TARGET hrSWRunTable 2>/dev/nullAnalisi SNMP con Wireshark #
snmp
snmp.community # Filtra per community string
snmp.community == "public" # Identifica traffico con community pubblica
snmp.error_status != 0 # Errori (accesso negato, OID non trovato)Detection e difesa SNMP #
Un difensore che monitora SNMP può rilevare:
- SNMP da IP non autorizzati: qualsiasi query da IP non in lista bianca è sospetta
- SNMP walk massivia: sequenza di GetNext/GetBulk verso tutti gli OID dell’albero
- Brute force community string: molte query con community diverse dallo stesso IP
- SET operations: modifche SNMP non previste dalla normale gestione
- Community string in chiaro: sniffing rivela le community su reti non cifrate
Hardening e mitigazioni SNMP #
Cambiare le community string di default #
Mai usare “public” e “private”. Usare stringhe lunghe e casuali:
# Generare una community string sicura
openssl rand -hex 16Disabilitare SNMPv1 e v2c, usare v3 #
# Cisco IOS — abilitare solo SNMPv3
no snmp-server community public
no snmp-server community private
snmp-server group SECURE v3 priv
snmp-server user admin SECURE v3 auth sha <authpass> priv aes 128 <privpass>Limitare l’accesso SNMP per IP #
# Cisco — ACL su SNMP
access-list 10 permit 192.168.1.100 ! Solo NMS autorizzato
access-list 10 deny any
snmp-server community public RO 10Disabilitare SNMP se non necessario #
# Linux
systemctl stop snmpd
systemctl disable snmpd
# Cisco
no snmp-serverDisabilitare read-write access #
Se SNMP è necessario solo per monitoring, usare esclusivamente community/utenti in sola lettura. Non configurare mai write access se non strettamente necessario.
Errori comuni su SNMP #
“Community string lunghe rendono SNMPv2c sicuro” No. SNMPv2c trasmette le community string in chiaro — qualsiasi sniffer nella rete vede la community. La lunghezza aiuta contro il brute force, ma non contro lo sniffing.
“SNMP è solo per i dispositivi di rete” Falso. Quasi tutti i server Linux hanno snmpd disponibile (spesso già installato ma non avviato). Windows ha il SNMP Service. Stampanti, UPS, storage array, e molti dispositivi IoT hanno agenti SNMP.
“Ho cambiato la community da ‘public’ a qualcosa di diverso, sono al sicuro” Se è ancora v1/v2c, no. La community viaggia in chiaro. Chiunque sul segmento può sniffarla e usarla.
“SNMPv3 authPriv è immune a tutti gli attacchi” SNMPv3 con authPriv è significativamente più sicuro, ma dipende dalla robustezza della password di autenticazione. Password deboli rimangono vulnerabili al dizionario offline se si cattura il traffico.
FAQ su SNMP #
Cos’è SNMP e a cosa serve? SNMP (Simple Network Management Protocol) è il protocollo standard per il monitoring e la gestione dei dispositivi di rete. Permette di leggere metriche (CPU, memoria, traffico) e modificare configurazioni (routing, VLAN, ACL) su router, switch, server, e qualsiasi dispositivo con un agente SNMP.
Perché la community string “public” è ancora così diffusa? Perché è il default di praticamente ogni dispositivo di rete dal 1988. Molti amministratori configurano il monitoring senza cambiare il default, o assumono che SNMP sia accessibile solo internamente. In realtà, i firewall spesso lasciano passare UDP 161 verso dispositivi interni.
Cosa si può fare con SNMP read access? Con sola lettura si ottiene: hostname, OS e versione, routing table completa, tabella ARP, interfacce di rete, connessioni TCP attive, processi in esecuzione, software installato, utenti del sistema, condivisioni di rete. È una delle fonti di intelligence più ricche in un engagement interno.
Qual è la differenza tra SNMPv2c e SNMPv3?
SNMPv2c usa community string in chiaro senza autenticazione né cifratura. SNMPv3 aggiunge autenticazione (HMAC-SHA) e cifratura (AES) opzionali. Con authPriv, SNMPv3 è il livello di sicurezza corretto per ambienti enterprise.
Come si esegue un SNMP walk?
Con snmpwalk -v2c -c <community> <target> per un dump completo. Con OID specifico per sezioni mirate. Con onesixtyone per brute force massivo delle community string su subnet intere.
Conclusione su SNMP #
SNMP con community string “public” è una delle finding più frequenti in qualsiasi engagement su rete enterprise. In pochi secondi, snmpwalk restituisce la configurazione completa di ogni dispositivo di rete raggiungibile: routing table, ARP table, interfacce, processi, utenti.
È uno degli strumenti di reconnaissance interna più potenti disponibili — e funziona perché nessuno ha mai cambiato il default dal 1988.
La mitigazione è semplice: cambiare le community string, disabilitare SNMPv1/v2c, usare SNMPv3 authPriv, e limitare l’accesso per IP. In pratica, in troppi ambienti questo non è mai stato fatto.
Approfondisci i protocolli correlati:
- UDP: il trasporto di SNMP
- NTP: altro protocollo UDP di infrastruttura
- DNS: reconnaissance complementare a SNMP
- VLAN e 802.1Q: configurazione modificabile via SNMP
- OSPF, EIGRP: routing table leggibile via SNMP
- Nmap: SNMP scripts
- Sniffing: cattura delle community string
Riferimento ufficiale: RFC 3410 — Introduction and Applicability Statements for SNMP Management Frameworks
Community string “public” trovata su router di core: finding critica con impatto immediato sull’intera infrastruttura. Se vuoi sapere quante ne hai: hackita.it/servizi
HackITA pubblica questi contenuti gratuitamente. Se li usi, considera di supportare il progetto: hackita.it/supporto







