161,162,10161,10162/udp - Pentesting SNMP

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Se sei interessato alla carriera dell'hacking e vuoi hackerare l'inviolabile - stiamo assumendo! (richiesta competenza in polacco scritto e parlato).

Informazioni di Base

SNMP - Simple Network Management Protocol è un protocollo utilizzato per monitorare diversi dispositivi nella rete (come router, switch, stampanti, IoT...).

PORT    STATE SERVICE REASON                 VERSION
161/udp open  snmp    udp-response ttl 244   ciscoSystems SNMPv3 server (public)

SNMP utilizza anche la porta 162/UDP per le traps. Questi sono pacchetti di dati inviati dal server SNMP al client senza essere esplicitamente richiesti.

MIB

Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la Management Information Base (MIB). MIB è un formato indipendente per memorizzare le informazioni del dispositivo. Una MIB è un file di testo in cui sono elencati tutti gli oggetti SNMP interroghili di un dispositivo in una gerarchia ad albero standardizzata. Contiene almeno un Object Identifier (OID), che, oltre all'indirizzo univoco necessario e a un nome, fornisce anche informazioni sul tipo, i 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 com'è fatto, restituendo valori per l'OID specifico, o quale tipo di dati viene utilizzato.

OID

Gli Object Identifiers (OID) svolgono un ruolo cruciale. Questi identificatori unici sono progettati per gestire gli oggetti all'interno di una Management Information Base (MIB).

I livelli più alti degli ID oggetto MIB, o OID, sono assegnati a diverse organizzazioni che stabiliscono standard. È all'interno di questi livelli superiori che viene stabilito il framework per le pratiche e gli standard di gestione globali.

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 prodotti. 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 SNMP definite da MIB-2 Simple Network Management Protocol (SNMP). E dagli OID pendenti da questo è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processi...)

Esempio di OID

Esempio da qui:

1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7

Ecco una scomposizione di questo indirizzo.

  • 1 - questo è chiamato ISO e stabilisce che si tratta di un OID. Per questo motivo tutti gli OID iniziano con "1"

  • 3 - questo è chiamato ORG ed è utilizzato per specificare l'organizzazione che ha costruito il dispositivo.

  • 6 - questo è il dod o il Department of Defense che è l'organizzazione che ha stabilito per prima Internet.

  • 1 - questo è il valore di Internet per indicare che tutte le comunicazioni avverranno tramite Internet.

  • 4 - questo valore determina che questo dispositivo è stato realizzato da un'organizzazione privata e non governativa.

  • 1 - questo valore indica che il dispositivo è stato realizzato da un'azienda o un'entità commerciale.

Questi primi sei valori tendono ad essere gli stessi per tutti i dispositivi e forniscono 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 - dà il nome dell'organizzazione che ha prodotto questo dispositivo.

  • 1 - spiega il tipo di dispositivo. In questo caso, si tratta di una sveglia.

  • 2 - determina che questo dispositivo è un'unità terminale remota.

Il resto dei valori fornisce informazioni specifiche sul dispositivo.

  • 5 - indica un punto di allarme 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

Versioni SNMP

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 normale (tutte le informazioni viaggiano in testo normale). Versione 2 e 2c inviano il traffico in testo normale e utilizzano una community string come autenticazione.

  • SNMPv3: Utilizza una forma di autenticazione migliore e le informazioni viaggiano criptate (un attacco a dizionario potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).

Stringhe di Comunità

Come già detto, per accedere alle informazioni salvate sulla MIB è necessario conoscere la stringa di comunità nelle versioni 1 e 2/2c e le credenziali nella versione 3. Ci sono 2 tipi di stringhe di comunità:

  • public principalmente funzioni solo lettura

  • private Lettura/Scrittura in generale

Nota che la scrivibilità di un OID dipende dalla stringa di comunità utilizzata, quindi anche se trovi che viene utilizzata "public", potresti essere in grado di scrivere alcuni valori. Inoltre potrebbero esistere oggetti che sono sempre "Solo Lettura". Se provi a scrivere un oggetto viene ricevuto un errore noSuchName o readOnly.

Nelle versioni 1 e 2/2c se si utilizza una stringa di comunità errata il server non risponderà. Quindi, se risponde, è stata utilizzata una stringa di comunità valida.

Porte

Da Wikipedia:

Brute-Force Stringa di Comunità (v1 e v2c)

Per indovinare la stringa di comunità potresti eseguire un attacco a dizionario. Controlla qui diversi modi per eseguire un attacco di forza bruta contro SNMP. Una stringa di comunità frequentemente utilizzata è public.

Enumerazione SNMP

È consigliabile installare quanto segue per vedere cosa significa ogni OID raccolto dal dispositivo:

apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf

Se conosci una stringa di comunità valida, puoi accedere ai dati utilizzando SNMPWalk o SNMP-Check:

snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .

snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP]
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] 1.3.6.1.2.1.4.34.1.3 #Get IPv6, needed dec2hex
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] NET-SNMP-EXTEND-MIB::nsExtendObjects #get extended
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] .1 #Enum all

snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING]

nmap --script "snmp* and not snmp-brute" <target>

braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID

Grazie alle query estese (download-mibs), è possibile enumerare ancora di più sul sistema con il seguente comando:

snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull

SNMP contiene molte informazioni sull'host e cose che potresti trovare interessanti sono: Interfacce di rete (indirizzi IPv4 e IPv6), Nomi utente, Tempo di attività, Versione del server/SO e processi in esecuzione (potrebbero contenere password)....

Impostazioni Pericolose

Nel campo della gestione di rete, alcune configurazioni e parametri sono fondamentali per garantire un monitoraggio e un controllo completi.

Impostazioni di Accesso

Due impostazioni principali consentono l'accesso all'albero OID completo, che è un componente cruciale nella gestione di rete:

  1. rwuser noauth è impostato per consentire l'accesso completo all'albero OID senza la necessità di autenticazione. Questa impostazione è diretta e consente un accesso illimitato.

  2. Per un controllo più specifico, l'accesso può essere concesso utilizzando:

  • rwcommunity per indirizzi IPv4, e

  • rwcommunity6 per indirizzi IPv6.

Entrambe le istruzioni richiedono una stringa di comunità e l'indirizzo IP rilevante, offrendo un accesso completo indipendentemente dall'origine della richiesta.

Parametri SNMP per Microsoft Windows

Una serie di valori della Base di Informazioni di Gestione (MIB) sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:

  • Processi di Sistema: Accessibili 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 un processo sta eseguendo, 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, viene impiegato 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 il tracciamento degli account utente.

  • Porte Locali TCP: Infine, 1.3.6.1.2.1.6.13.1.3 è designato per il monitoraggio delle porte TCP locali, fornendo informazioni sulle connessioni di rete attive.

Cisco

Dai un'occhiata a questa pagina se possiedi attrezzature Cisco:

pageCisco SNMP

Da SNMP a RCE

Se hai la stringa che ti consente di scrivere valori all'interno del servizio SNMP, potresti essere in grado di abusarne per eseguire comandi:

pageSNMP RCE

SNMP Massivo

Braa è uno scanner SNMP di massa. L'uso previsto di uno strumento del genere è, naturalmente, effettuare query SNMP - ma a differenza di snmpwalk di net-snmp, è in grado di interrogare decine o centinaia di host contemporaneamente e in un singolo 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]

braa ignite123@192.168.1.125:.1.3.6.*

Questo può estrarre molte MB di informazioni che non è possibile elaborare manualmente.

Quindi, cerchiamo le informazioni più interessanti (da https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):

Dispositivi

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 tramite l'uso di un comando grep:

grep ".1.3.6.1.2.1.1.1.0" *.snmp

Identificare la stringa privata

Un passaggio cruciale coinvolge l'identificazione della stringa di comunità privata utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle configurazioni in esecuzione dai router. L'identificazione spesso si basa sull'analisi dei dati di SNMP Trap per la parola "trap" con un comando grep:

grep -i "trap" *.snmp

Nomi utente/Password

I log memorizzati all'interno delle tabelle MIB vengono esaminati per tentativi di accesso falliti, che potrebbero includere accidentalmente password inserite come nomi utente. Parole chiave come fail, failed, o login vengono cercate per trovare dati preziosi:

grep -i "login\|fail" *.snmp

Emails

Infine, per estrarre indirizzi email dai dati, viene utilizzato un comando grep con un'espressione regolare, concentrandosi su pattern che corrispondono ai formati email:

grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp

Modifica dei valori SNMP

Puoi utilizzare NetScanTools per modificare i valori. Dovrai conoscere la stringa privata per poterlo fare.

Spoofing

Se esiste un ACL che consente solo a determinati IP di interrogare il servizio SMNP, puoi falsificare uno di questi indirizzi all'interno del pacchetto UDP e intercettare il traffico.

Esaminare i file di configurazione SNMP

  • snmp.conf

  • snmpd.conf

  • snmp-config.xml

Se sei interessato a una carriera nel campo dell'hacking e vuoi hackerare l'inviolabile - stiamo assumendo! (richiesta competenza fluente in polacco, scritta e parlata).

Comandi Automatici di HackTricks

Protocol_Name: SNMP    #Protocol Abbreviation if there is one.
Port_Number:  161     #Comma separated if there is more than one.
Protocol_Description: Simple Network Managment Protocol         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).

https://book.hacktricks.xyz/pentesting/pentesting-snmp

Entry_2:
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}

Entry_3:
Name: OneSixtyOne
Description: Crack SNMP passwords
Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100

Entry_4:
Name: Nmap
Description: Nmap snmp (no brute)
Command: nmap --script "snmp* and not snmp-brute" {IP}

Entry_5:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated