.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
161,162,10161,10162/udp - Test di penetrazione SNMP
Impara l'hacking AWS da zero a esperto con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se desideri vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.
Se sei interessato alla carriera dell'hacking e vuoi hackerare l'inviolabile - stiamo assumendo! (richiesta competenza in lingua polacca scritta e parlata).
{% embed url="https://www.stmcyber.com/careers" %}
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)
{% hint style="info" %} 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. {% endhint %}
MIB
Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la Management Information Base (MIB). La 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 come sono fatte, restituendo valori per l'OID specifico, o che tipo di dati viene utilizzato.
OIDs
Gli Object Identifiers (OIDs) svolgono un ruolo cruciale. Questi identificatori univoci 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 quadro 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. E dagli OID pendenti da questo è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processo...)
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 Dipartimento della Difesa 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 è realizzato da un'organizzazione privata e non governativa.
- 1 - questo valore indica che il dispositivo è 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). La 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à accennato, 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 la stringa "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:
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:
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 di Base di Informazioni di Gestione (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 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 Utenti: Il valore
1.3.6.1.4.1.77.1.2.25
consente il tracciamento degli account utenti. - Porte Locali TCP: Infine,
1.3.6.1.2.1.6.13.1.3
è designato per monitorare le porte TCP locali, fornendo informazioni sulle connessioni di rete attive.
Cisco
Dai un'occhiata a questa pagina se possiedi attrezzature Cisco:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
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:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
SNMP Massivo
Braa è uno scanner SNMP di massa. L'uso previsto di uno strumento del genere è, ovviamente, 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
Infine, per estrarre gli 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 nella lingua polacca scritta e parlata).
{% embed url="https://www.stmcyber.com/careers" %}
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:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.