161,162,10161,10162/udp - Pentesting SNMP
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...).
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
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 letturaprivate
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
L'agente SNMP riceve le richieste sulla porta UDP 161.
Il manager riceve le 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.
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:
Se conosci una stringa di comunità valida, puoi accedere ai dati utilizzando SNMPWalk o SNMP-Check:
Grazie alle query estese (download-mibs), è possibile enumerare ancora di più sul sistema con il seguente comando:
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:
rwuser noauth
è impostato per consentire l'accesso completo all'albero OID senza la necessità di autenticazione. Questa impostazione è diretta e consente un accesso illimitato.Per un controllo più specifico, l'accesso può essere concesso utilizzando:
rwcommunity
per indirizzi IPv4, erwcommunity6
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 SNMPDa 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 RCESNMP 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]
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:
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:
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:
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:
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
Last updated