hacktricks/network-services-pentesting/pentesting-snmp
2024-02-10 13:11:20 +00:00
..
cisco-snmp.md Translated to Serbian 2024-02-10 13:11:20 +00:00
README.md Translated to Serbian 2024-02-10 13:11:20 +00:00
snmp-rce.md Translated to Serbian 2024-02-10 13:11:20 +00:00

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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:


Bug bounty savet: registrujte se za Intigriti, premium platformu za bug bounty kreiranu od strane hakera, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas i počnite da zarađujete nagrade do $100,000!

{% embed url="https://go.intigriti.com/hacktricks" %}

Osnovne informacije

SNMP - Simple Network Management Protocol je protokol koji se koristi za nadgledanje različitih uređaja u mreži (kao što su ruteri, prekidači, štampači, IoT uređaji...).

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

{% hint style="info" %} SNMP takođe koristi port 162/UDP za traps. To su podaci paketi poslati sa SNMP servera ka klijentu bez eksplicitnog zahteva. {% endhint %}

MIB

Da bi se osiguralo da SNMP pristup funkcioniše sa različitim proizvođačima i različitim kombinacijama klijent-servera, kreiran je Management Information Base (MIB). MIB je nezavisni format za čuvanje informacija o uređaju. MIB je tekstualni fajl u kojem su navedeni svi SNMP objekti uređaja u standardizovanoj hijerarhiji stabla. On sadrži barem jedan Object Identifier (OID), koji, pored neophodne jedinstvene adrese i imena, pruža informacije o tipu, pravima pristupa i opisu odgovarajućeg objekta.
MIB fajlovi su napisani u ASCII tekstualnom formatu zasnovanom na Abstract Syntax Notation One (ASN.1). MIB-ovi ne sadrže podatke, već objašnjavaju gde se nalaze koje informacije i kako izgledaju, koji vraćaju vrednosti za određeni OID, ili koji tip podataka se koristi.

OID

Object Identifiers (OIDs) igraju ključnu ulogu. Ovi jedinstveni identifikatori su dizajnirani za upravljanje objektima unutar Management Information Base (MIB).

Najviši nivoi MIB objektnih ID-ova, ili OIDs, dodeljeni su različitim organizacijama za postavljanje standarda. U ovim najvišim nivoima se uspostavlja okvir za globalne prakse upravljanja i standarde.

Osim toga, dobavljačima je data sloboda da uspostave privatne grane. U okviru ovih grana, oni imaju autonomiju da uključe upravljane objekte relevantne za svoje sopstvene linije proizvoda. Ovaj sistem osigurava strukturiran i organizovan metod za identifikaciju i upravljanje različitim objektima kod različitih dobavljača i standarda.

Možete navigirati kroz OID stablo sa veba ovde: http://www.oid-info.com/cgi-bin/display?tree=#focus ili videti šta OID znači (kao što je 1.3.6.1.2.1.1) pristupanjem http://oid-info.com/get/1.3.6.1.2.1.1.
Postoje neki dobro poznati OIDs kao oni unutar 1.3.6.1.2.1 koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) promenljive. I iz OID-ova koji slede iz ovog možete dobiti neke zanimljive podatke o hostu (podaci o sistemu, mrežni podaci, podaci o procesima...)

Primer OID-a

Primer sa ovde:

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

Evo raspodele ove adrese.

  • 1 - ovo se naziva ISO i ono uspostavlja da je ovo OID. Zato svi OID-ovi počinju sa "1"
  • 3 - ovo se naziva ORG i koristi se za određivanje organizacije koja je izgradila uređaj.
  • 6 - ovo je dod ili Ministarstvo odbrane, koje je organizacija koja je prva uspostavila Internet.
  • 1 - ovo je vrednost interneta koja označava da će se sva komunikacija odvijati preko Interneta.
  • 4 - ova vrednost određuje da je ovaj uređaj napravljen od strane privatne organizacije, a ne od strane vlade.
  • 1 - ova vrednost označava da je uređaj napravljen od strane preduzeća ili poslovnog subjekta.

Ove prve šest vrednosti obično su iste za sve uređaje i daju vam osnovne informacije o njima. Ova sekvenca brojeva će biti ista za sve OID-ove, osim kada je uređaj napravljen od strane vlade.

Prelazimo na sledeći set brojeva.

  • 1452 - daje ime organizacije koja je proizvela ovaj uređaj.
  • 1 - objašnjava vrstu uređaja. U ovom slučaju, to je alarmni sat.
  • 2 - određuje da je ovaj uređaj daljinska terminalna jedinica.

Preostale vrednosti daju specifične informacije o uređaju.

  • 5 - označava diskretnu tačku alarma.
  • 1 - specifična tačka na uređaju
  • 3 - port
  • 21 - adresa porta
  • 1 - prikaz za port
  • 4 - broj tačke
  • 7 - stanje tačke

Verzije SNMP-a

Postoje 2 važne verzije SNMP-a:

  • SNMPv1: Glavna verzija, i dalje je najčešća, autentifikacija se zasniva na stringu (community string) koji putuje u čistom tekstu (sve informacije putuju u čistom tekstu). Verzija 2 i 2c takođe šalju saobraćaj u čistom tekstu i koriste community string kao autentifikaciju.
  • SNMPv3: Koristi bolji oblik autentifikacije i informacije putuju enkriptovane (rečnik napad se može izvesti, ali bi bilo mnogo teže pronaći ispravne akreditive nego u SNMPv1 i v2).

Community Stringovi

Kao što je već pomenuto, da biste pristupili informacijama sačuvanim na MIB-u, morate znati community string u verzijama 1 i 2/2c i akreditive u verziji 3.
Postoje 2 vrste community stringova:

  • public uglavnom samo za čitanje funkcije
  • private Čitanje/Pisanje uopšteno

Imajte na umu da mogućnost pisanja OID-a zavisi od korišćenog community stringa, tako da čak i ako otkrijete da se koristi "public", možda ćete moći da pišete neke vrednosti. Takođe, mogu postojati objekti koji su uvek "Samo za čitanje".
Ako pokušate da pišete objekat, dobićete grešku noSuchName ili readOnly.**

U verzijama 1 i 2/2c, ako koristite pogrešan community string, server neće odgovoriti. Dakle, ako odgovori, koristio se validan community string.

Portovi

Prema Vikipediji:

Brute-Force Community String (v1 i v2c)

Da biste pogađali community string, možete izvesti rečnik napad. Pogledajte ovde različite načine izvođenja brute-force napada protiv SNMP-a. Često korišćeni community string je public.

Enumeracija SNMP-a

Preporučuje se instalacija sledećeg alata kako biste videli šta znači svaki prikupljeni OID sa uređaja:

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

Ako znate ispravan zajednički string, možete pristupiti podacima koristeći SNMPWalk ili 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

Zahvaljujući proširenim upitima (download-mibs), moguće je još više nabrojati informacija o sistemu pomoću sledeće komande:

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

SNMP ima puno informacija o hostu, a neke od zanimljivih stvari koje možete pronaći su: Mrežni interfejsi (IPv4 i IPv6 adresa), Korisnička imena, Vreme rada, Verzija servera/OS-a i procesi koji se izvršavaju (mogu sadržati lozinke)....

Opasne postavke

U području upravljanja mrežom, određene konfiguracije i parametri su ključni za osiguravanje sveobuhvatnog nadzora i kontrole.

Postavke pristupa

Dve glavne postavke omogućavaju pristup celom OID stablu, što je ključna komponenta u upravljanju mrežom:

  1. rwuser noauth je podešen da omogući potpuni pristup OID stablu bez potrebe za autentifikacijom. Ova postavka je jednostavna i omogućava neograničen pristup.

  2. Za precizniju kontrolu, pristup se može odobriti korišćenjem:

  • rwcommunity za IPv4 adrese, i
  • rwcommunity6 za IPv6 adrese.

Oba komanda zahtevaju community string i odgovarajuću IP adresu, nudeći potpuni pristup bez obzira na poreklo zahteva.

SNMP parametri za Microsoft Windows

Niz vrednosti Management Information Base (MIB) se koristi za nadgledanje različitih aspekata Windows sistema putem SNMP-a:

  • Sistemske procese: Pristup se vrši putem 1.3.6.1.2.1.25.1.6.0, ovaj parametar omogućava nadgledanje aktivnih procesa u sistemu.
  • Pokrenuti programi: Vrednost 1.3.6.1.2.1.25.4.2.1.2 je namenjena praćenju trenutno pokrenutih programa.
  • Putanje procesa: Za određivanje gde se proces izvršava, koristi se MIB vrednost 1.3.6.1.2.1.25.4.2.1.4.
  • Jedinice skladištenja: Nadgledanje jedinica skladištenja omogućeno je putem 1.3.6.1.2.1.25.2.3.1.4.
  • Naziv softvera: Za identifikaciju instaliranog softvera na sistemu koristi se 1.3.6.1.2.1.25.6.3.1.2.
  • Korisnički nalozi: Vrednost 1.3.6.1.4.1.77.1.2.25 omogućava praćenje korisničkih naloga.
  • TCP lokalni portovi: Konačno, 1.3.6.1.2.1.6.13.1.3 je namenjen nadgledanju TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.

Cisco

Pogledajte ovu stranicu ako koristite Cisco opremu:

{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}

Od SNMP do RCE

Ako imate string koji vam omogućava da upisujete vrednosti u SNMP servis, možda ćete moći da ga zloupotrebite za izvršavanje komandi:

{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}

Masovni SNMP

Braa je masovni skener SNMP-a. Predviđena upotreba ovog alata je, naravno, izvršavanje SNMP upita - ali za razliku od snmpwalk iz net-snmp, on je sposoban da istovremeno upita desetine ili stotine hostova, i to u jednom procesu. Stoga, troši vrlo malo sistemskih resursa i vrši skeniranje VEOMA brzo.

Braa implementira sopstveni SNMP stek, tako da ne zahteva nikakve SNMP biblioteke poput net-snmp.

Sintaksa: braa [Community-string]@[IP adresa SNMP servera]:[iso id]

braa ignite123@192.168.1.125:.1.3.6.*

Ovo može izvući mnogo MB informacija koje ne možete obraditi ručno.

Dakle, hajde da potražimo najinteresantnije informacije (sa https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):

Uređaji

Proces počinje ekstrakcijom sysDesc MIB podataka (1.3.6.1.2.1.1.1.0) iz svake datoteke kako bi se identifikovali uređaji. To se postiže korišćenjem grep komande:

grep ".1.3.6.1.2.1.1.1.0" *.snmp

Identifikacija privatnog stringa

Ključni korak uključuje identifikaciju privatnog zajedničkog stringa koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava izvlačenje konfiguracija u pokretu sa rutera. Identifikacija se često oslanja na analizu SNMP Trap podataka za reč "trap" pomoću grep komande:

grep -i "trap" *.snmp

Korisnička imena/Lozinke

Pregledaju se zapisi koji se čuvaju unutar MIB tabela radi pronalaženja neuspelih pokušaja prijavljivanja, koji mogu slučajno sadržati lozinke unete kao korisnička imena. Pretražuju se ključne reči poput fail, failed ili login kako bi se pronašli vredni podaci:

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

Emailovi

Konačno, da bismo izvukli email adrese iz podataka, koristi se grep komanda sa regularnim izrazom, fokusirajući se na obrasce koji odgovaraju formatima email adresa:

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

Modifikovanje SNMP vrednosti

Možete koristiti NetScanTools za modifikovanje vrednosti. Da biste to uradili, moraćete znati privatni string.

Spoofing

Ako postoji ACL koji dozvoljava samo određene IP adrese da upituju SNMP servis, možete lažirati jednu od tih adresa unutar UDP paketa i presresti saobraćaj.

Pregledanje SNMP konfiguracionih fajlova

  • snmp.conf
  • snmpd.conf
  • snmp-config.xml

HackTricks Automatske Komande

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


Savet za bug bounty: Prijavite se na Intigriti, premium platformu za bug bounty koju su kreirali hakeri, za hakeri! Pridružite nam se na https://go.intigriti.com/hacktricks danas i počnite da zarađujete nagrade do $100,000!

{% embed url="https://go.intigriti.com/hacktricks" %}

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks: