networking

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

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.

text
.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: iso

OID importanti per il pentesting:

OIDNomeContenuto
.1.3.6.1.2.1.1.1.0sysDescrDescrizione sistema (OS, versione)
.1.3.6.1.2.1.1.5.0sysNameHostname del dispositivo
.1.3.6.1.2.1.1.6.0sysLocationPosizione fisica
.1.3.6.1.2.1.1.4.0sysContactEmail/contatto dell’admin
.1.3.6.1.2.1.2.2.1ifTableTabella interfacce di rete
.1.3.6.1.2.1.4.21ipRouteTableTabella di routing IP
.1.3.6.1.2.1.4.22ipNetToMediaTableTabella ARP
.1.3.6.1.2.1.6.13tcpConnTableConnessioni TCP attive
.1.3.6.1.2.1.25.4.2hrSWRunTableProcessi in esecuzione
.1.3.6.1.2.1.25.6.3hrSWInstalledTableSoftware installato
.1.3.6.1.4.1enterprisesMIB proprietarie (Cisco, HP, ecc.)

Le operazioni SNMP #

OperazioneDirezioneDescrizione
GETManager → AgentLegge il valore di un OID specifico
GETNEXTManager → AgentLegge il prossimo OID nell’albero
GETBULKManager → AgentLegge blocchi di OID (v2c/v3)
SETManager → AgentModifica il valore di un OID
TRAPAgent → ManagerNotifica asincrona di un evento
INFORMAgent → ManagerTrap con conferma (v2c/v3)
WALKManager → AgentLegge 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 #

bash
# 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 #

bash
# 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 #

bash
# 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 #

bash
# 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 #

bash
# snmp-check — output formattato per pentesting
snmp-check <target> -c public -v 2c

Output 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:

bash
# 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 ACL

SNMP Enumeration per Active Directory #

In ambienti Windows, SNMP espone informazioni sull’ambiente AD:

bash
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 resources

Nmap scripts SNMP completi #

bash
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 #

bash
#!/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/null

Analisi SNMP con Wireshark #

text
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:

bash
# Generare una community string sicura
openssl rand -hex 16

Disabilitare SNMPv1 e v2c, usare v3 #

text
# 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 #

text
# 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 10

Disabilitare SNMP se non necessario #

bash
# Linux
systemctl stop snmpd
systemctl disable snmpd

# Cisco
no snmp-server

Disabilitare 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:

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

#snmpwalk #community-string

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.