Cosa fa#
Installa snmpd su Ubuntu, configura prima v2 (community string visibile in tcpdump) poi v3 (auth+priv), e dimostra con snmpwalk da Kali la differenza di sicurezza.
TL;DR#
SNMP v2 → community string "public" viaggia in chiaro → chiunque la vede con tcpdump
SNMP v3 → autenticazione SHA + cifratura AES → traffico cifrato| Versione | Autenticazione | Cifratura | Usare in produzione? |
|---|---|---|---|
| v1 | Community string | No | Mai |
| v2c | Community string | No | Mai |
| v3 | SHA/MD5 | AES/DES | Sì |
Fase 1 — Setup snmpd su Ubuntu#
Task 1.1 — Installa snmpd e snmp-utils
sudo apt update && sudo apt install -y snmpd snmp- Come sai che hai finito:
snmpd --versionrisponde
- Come sai che hai finito:
Task 1.2 — Verifica stato servizio
sudo systemctl status snmpd sudo systemctl enable snmpd sudo systemctl start snmpd- Come sai che hai finito: status: active (running)
Task 1.3 — Installa snmp su Kali
# Da Kali sudo apt install -y snmp
Fase 2 — SNMP v2: community string in chiaro#
Task 2.1 — Configura snmpd per v2
sudo nano /etc/snmp/snmpd.confAggiungi/modifica questa riga:
rocommunity public 192.168.64.0/24sudo systemctl restart snmpdTask 2.2 — Avvia tcpdump su Ubuntu (terminale separato)
sudo tcpdump -i any port 161 -nn -A # -A = mostra payload in ASCII — vedrai la community stringTask 2.3 — snmpwalk da Kali con v2
# Da Kali — "system" richiede MIB installato, usa OID numerico snmpwalk -v2c -c public 192.168.64.3 1.3.6.1.2.1.1- Come sai che hai finito: vedi output con sysDescr, sysUpTime ecc.
- Guarda tcpdump su Ubuntu: la stringa "public" è visibile in chiaro nel payload
Output reale del lab (24/05/2026):
iso.3.6.1.2.1.1.1.0 = STRING: "Linux barno-server 6.8.0-111-generic #111-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 11 22:59:23 UTC 2026 aarch64" iso.3.6.1.2.1.1.5.0 = STRING: "barno-server" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"tcpdump corrispondente su Ubuntu (community string in chiaro):
15:09:55 IP 192.168.64.200 > 192.168.64.3.161: GetRequest .1.3.6.1.2.1.2.2 E..F..@.@..k..@...@..t...2/U0(.....public......Z~......0.0...+........"public" appare in ogni pacchetto, in ASCII leggibile.
Nota MIB: su Kali senza MIB installati,
systemdàUnknown Object Identifier. Usa sempre l'OID numerico1.3.6.1.2.1.1. Il MIB è un dizionario locale che traduce nomi → OID numerici.Task 2.4 — Prova una community string sbagliata
snmpwalk -v2c -c sbagliata 192.168.64.3 system- Come sai che hai finito: timeout — ma in tcpdump vedi comunque la stringa "sbagliata" in chiaro
Fase 3 — SNMP v3: autenticazione + cifratura#
Task 3.1 — Crea utente v3 su Ubuntu
sudo systemctl stop snmpd sudo net-snmp-create-v3-user -ro -A "password123!" -a SHA -X "priv456!" -x AES monitoruser sudo systemctl start snmpd- Come sai che hai finito: utente aggiunto in
/var/lib/snmp/snmpd.conf
- Come sai che hai finito: utente aggiunto in
Task 3.2 — Verifica utente creato
sudo grep monitoruser /var/lib/snmp/snmpd.confTask 3.3 — snmpwalk con v3 da Kali
# Apici singoli per le password con ! (doppi apici causano history expansion in bash) snmpwalk -v3 -l authPriv \ -u monitoruser \ -a SHA -A 'password123!' \ -x AES -X 'priv456!' \ 192.168.64.3 1.3.6.1.2.1.1- Come sai che hai finito: stesse info di prima ma il traffico è ora cifrato
Trappola bash: le password con
!dentro doppi apici causanodquote>(history expansion). Usa sempre apici singoli per le password con caratteri speciali.Task 3.4 — Confronta tcpdump v2 vs v3
sudo tcpdump -i any -A udp port 161v2c → community string in chiaro in ogni pacchetto:
.....public. ....Z}......0.0..v3 → payload cifrato AES, solo username visibile nell'header:
F=ap U="monitoruser" [!scoped PDU]b8_7b_92_5a_ae_d1_e7_51_58_d2_cf_82_7a_79_07_d5...Osservazione chiave: con v3, un attaccante che sniffa vede solo
monitoruser— nessuna password, nessun dato di sistema. Con v2c vede tutto: community string + dati + OID interrogati.
Fase 4 — Cosa monitora SNMP (bonus)#
- Task 4.1 — Esplora gli OID principali
# CPU load snmpwalk -v2c -c public 192.168.64.3 1.3.6.1.4.1.2021.10 # Memoria snmpwalk -v2c -c public 192.168.64.3 1.3.6.1.4.1.2021.4 # Interfacce di rete snmpwalk -v2c -c public 192.168.64.3 interfaces- Come sai che hai finito: vedi metriche operative del server
Scenario Reale#
Un attaccante sulla stessa rete intercetta traffico SNMP v2 con Wireshark. Vede la community string "public" → può fare snmpwalk su tutti i device della rete e raccogliere: uptime, interfacce, route, credenziali se configurate male. Con v3 lo stesso attacco produce solo traffico cifrato illeggibile.
Risorse#
man snmpd.conf— configurazione completaman snmpwalk— query OID- Gibson SY0-701 Cap 3 — SNMP
Collegato a#
- cap-03-security-architecture — SNMP security


