161,162,10161,10162/udp - Pentesting SNMP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
If you are interested in hacking career and hack the unhackable - we are hiring! (fluent polish written and spoken required).
SNMP - Simple Network Management Protocol è un protocollo utilizzato per monitorare diversi dispositivi nella rete (come router, switch, stampanti, IoT...).
SNMP utilizza anche la porta 162/UDP per i traps. Questi sono pacchetti di dati inviati dal server SNMP al client senza essere esplicitamente richiesti.
Per garantire che l'accesso SNMP funzioni tra diversi produttori e con diverse combinazioni client-server, è stata creata la Management Information Base (MIB). MIB è un formato indipendente per memorizzare informazioni sui dispositivi. Un MIB è un file testo in cui tutti gli oggetti SNMP interrogabili di un dispositivo sono elencati in una gerarchia ad albero standardizzata. Contiene almeno un Object Identifier
(OID
), che, oltre all'indirizzo unico necessario e a un nome, fornisce anche informazioni sul tipo, diritti di accesso e una descrizione dell'oggetto rispettivo.
I file MIB sono scritti nel formato di testo ASCII basato su Abstract Syntax Notation One
(ASN.1
). Le MIB non contengono dati, ma spiegano dove trovare quali informazioni e come appaiono, quali valori restituiscono per l'OID specifico o quale tipo di dato viene utilizzato.
Object Identifiers (OIDs) svolgono un ruolo cruciale. Questi identificatori unici sono progettati per gestire oggetti all'interno di una Management Information Base (MIB).
I livelli più alti degli ID oggetto MIB, o OIDs, sono assegnati a diverse organizzazioni di standardizzazione. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globale.
Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'interno di questi rami, hanno l'autonomia di includere oggetti gestiti pertinenti alle proprie linee di prodotto. Questo sistema garantisce che ci sia un metodo strutturato e organizzato per identificare e gestire una vasta gamma di oggetti tra diversi fornitori e standard.
Puoi navigare attraverso un albero OID dal web qui: http://www.oid-info.com/cgi-bin/display?tree=#focus o vedere cosa significa un OID (come 1.3.6.1.2.1.1
) accedendo a http://oid-info.com/get/1.3.6.1.2.1.1.
Ci sono alcuni OID ben noti come quelli all'interno di 1.3.6.1.2.1 che fanno riferimento alle variabili del Simple Network Management Protocol (SNMP) definite in MIB-2. E dagli OID in attesa di questo puoi ottenere alcuni dati interessanti sull'host (dati di sistema, dati di rete, dati sui processi...)
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Ecco una suddivisione di questo indirizzo.
1 – questo è chiamato ISO e stabilisce che questo è un OID. Ecco perché tutti gli OID iniziano con "1"
3 – questo è chiamato ORG e viene utilizzato per specificare l'organizzazione che ha costruito il dispositivo.
6 – questo è il dod o il Dipartimento della Difesa, che è l'organizzazione che ha stabilito per prima Internet.
1 – questo è il valore di internet per denotare che tutte le comunicazioni avverranno attraverso Internet.
4 – questo valore determina che questo dispositivo è realizzato da un'organizzazione privata e non da una governativa.
1 – questo valore denota che il dispositivo è realizzato da un'impresa o un'entità commerciale.
Questi primi sei valori tendono a essere gli stessi per tutti i dispositivi e forniscono le informazioni di base su di essi. Questa sequenza di numeri sarà la stessa per tutti gli OID, tranne quando il dispositivo è realizzato dal governo.
Passando al set successivo di numeri.
1452 – fornisce il nome dell'organizzazione che ha fabbricato questo dispositivo.
1 – spiega il tipo di dispositivo. In questo caso, è una sveglia.
2 – determina che questo dispositivo è un'unità terminale remota.
Il resto dei valori fornisce informazioni specifiche sul dispositivo.
5 – denota un punto di allerta discreto.
1 – punto specifico nel dispositivo
3 – porta
21 – indirizzo della porta
1 – display per la porta
4 – numero del punto
7 – stato del punto
Ci sono 2 versioni importanti di SNMP:
SNMPv1: La principale, è ancora la più frequente, l'autenticazione si basa su una stringa (community string) che viaggia in testo chiaro (tutte le informazioni viaggiano in testo chiaro). Versione 2 e 2c inviano il traffico in testo chiaro anche e utilizzano una community string come autenticazione.
SNMPv3: Utilizza una forma di autenticazione migliore e le informazioni viaggiano crittografate (un attacco a dizionario potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).
Come accennato in precedenza, per accedere alle informazioni salvate sulla MIB è necessario conoscere la community string nelle versioni 1 e 2/2c e le credenziali nella versione 3. Ci sono 2 tipi di community strings:
public
principalmente funzioni di sola lettura
private
Lettura/Scrittura in generale
Nota che la scrivibilità di un OID dipende dalla community string utilizzata, quindi anche se scopri che viene utilizzato "public", potresti essere in grado di scrivere alcuni valori. Inoltre, potrebbero esistere oggetti che sono sempre "Read Only".
Se provi a scrivere un oggetto, si riceve un errore noSuchName
o readOnly
.**.**
Nelle versioni 1 e 2/2c, se utilizzi una community string errata, il server non risponderà. Quindi, se risponde, è stata utilizzata una community string valida.
L'agente SNMP riceve richieste sulla porta UDP 161.
Il manager riceve notifiche (Traps e InformRequests) sulla porta 162.
Quando utilizzato con Transport Layer Security o Datagram Transport Layer Security, le richieste vengono ricevute sulla porta 10161 e le notifiche vengono inviate alla porta 10162.
Per indovinare la community string potresti eseguire un attacco a dizionario. Controlla qui diversi modi per eseguire un attacco brute-force contro SNMP. Una community string frequentemente utilizzata è public
.
Si raccomanda di installare quanto segue per vedere cosa significa ogni OID raccolto dal dispositivo:
Se conosci una stringa di comunità valida, puoi accedere ai dati utilizzando SNMPWalk o SNMP-Check:
Grazie alle query estese (download-mibs), è possibile enumerare ulteriormente il sistema con il seguente comando :
SNMP ha molte informazioni sull'host e le cose che potresti trovare interessanti sono: Interfacce di rete (indirizzo IPv4 e IPv6), Nomi utente, Tempo di attività, Versione del server/SO e processi
in esecuzione (potrebbero contenere password)....
Nel campo della gestione della rete, alcune configurazioni e parametri sono fondamentali per garantire un monitoraggio e un controllo completi.
Due impostazioni principali abilitano l'accesso all'intero albero OID, che è un componente cruciale nella gestione della rete:
rwuser noauth
è impostato per consentire l'accesso completo all'albero OID senza la necessità di autenticazione. Questa impostazione è semplice e consente un accesso illimitato.
Per un controllo più specifico, l'accesso può essere concesso utilizzando:
rwcommunity
per indirizzi IPv4, e
rwcommunity6
per indirizzi IPv6.
Entrambi i comandi richiedono una stringa di comunità e l'indirizzo IP pertinente, offrendo accesso completo indipendentemente dall'origine della richiesta.
Una serie di valori della Management Information Base (MIB) sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:
Processi di sistema: Accessibile tramite 1.3.6.1.2.1.25.1.6.0
, questo parametro consente il monitoraggio dei processi attivi all'interno del sistema.
Programmi in esecuzione: Il valore 1.3.6.1.2.1.25.4.2.1.2
è designato per tracciare i programmi attualmente in esecuzione.
Percorso dei processi: Per determinare da dove sta girando un processo, viene utilizzato il valore MIB 1.3.6.1.2.1.25.4.2.1.4
.
Unità di archiviazione: Il monitoraggio delle unità di archiviazione è facilitato da 1.3.6.1.2.1.25.2.3.1.4
.
Nome del software: Per identificare il software installato su un sistema, si impiega 1.3.6.1.2.1.25.6.3.1.2
.
Account utente: Il valore 1.3.6.1.4.1.77.1.2.25
consente di tracciare gli account utente.
Porte locali TCP: Infine, 1.3.6.1.2.1.6.13.1.3
è designato per monitorare le porte locali TCP, fornendo informazioni sulle connessioni di rete attive.
Dai un'occhiata a questa pagina se hai attrezzature Cisco:
Cisco SNMPSe hai la stringa che ti consente di scrivere valori all'interno del servizio SNMP, potresti essere in grado di abusarne per eseguire comandi:
SNMP RCEBraa è uno scanner SNMP di massa. L'uso previsto di tale strumento è, ovviamente, effettuare query SNMP – ma a differenza di snmpwalk di net-snmp, è in grado di interrogare dozzine o centinaia di host simultaneamente, e in un unico processo. Pertanto, consuma pochissime risorse di sistema e esegue la scansione MOLTO velocemente.
Braa implementa il proprio stack SNMP, quindi non ha bisogno di librerie SNMP come net-snmp.
Sintassi: braa [Stringa di comunità]@[IP del server SNMP]:[id iso]
Questo può estrarre molti MB di informazioni che non puoi elaborare manualmente.
Quindi, cerchiamo le informazioni più interessanti (da https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Il processo inizia con l'estrazione dei dati sysDesc MIB (1.3.6.1.2.1.1.1.0) da ciascun file per identificare i dispositivi. Questo viene realizzato attraverso l'uso di un comando grep:
Un passaggio cruciale implica identificare la stringa della comunità privata utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle configurazioni in esecuzione dai router. L'identificazione si basa spesso sull'analisi dei dati SNMP Trap per la parola "trap" con un comando grep:
I log memorizzati all'interno delle tabelle MIB vengono esaminati per tentativi di accesso non riusciti, che potrebbero accidentalmente includere password inserite come nomi utente. Parole chiave come fail, failed o login vengono cercate per trovare dati preziosi:
Infine, per estrarre indirizzi email dai dati, viene utilizzato un comando grep con un'espressione regolare, concentrandosi su modelli che corrispondono ai formati email:
Puoi usare NetScanTools per modificare i valori. Dovrai conoscere la stringa privata per farlo.
Se c'è un ACL che consente solo ad alcuni IP di interrogare il servizio SMNP, puoi spoofare uno di questi indirizzi all'interno del pacchetto UDP e sniffare il traffico.
snmp.conf
snmpd.conf
snmp-config.xml
Se sei interessato a una carriera nel hacking e a hackare l'inhackabile - stiamo assumendo! (richiesta di polacco fluente scritto e parlato).
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)