hacktricks/network-services-pentesting/pentesting-snmp
2024-05-08 16:34:17 +00:00
..
cisco-snmp.md Translated ['README.md', 'binary-exploitation/rop-return-oriented-progra 2024-05-08 16:34:17 +00:00
README.md Translated ['README.md', 'binary-exploitation/rop-return-oriented-progra 2024-05-08 16:34:17 +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:

Ako vas zanima hakerska karijera i hakovanje neuhvatljivog - zapošljavamo! (potrebno tečno poznavanje poljskog jezika u pisanju i govoru).

{% embed url="https://www.stmcyber.com/careers" %}

Osnovne informacije

SNMP - Simple Network Management Protocol je protokol koji se koristi za praćenje različitih uređaja u mreži (poput rutera, prekidača, štampača, IoT uređaja...).

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 preko različitih proizvođača i sa različitim kombinacijama klijenata i servera, kreiran je Management Information Base (MIB). MIB je nezavisan format za čuvanje informacija o uređaju. MIB je tekstualni fajl u kojem su navedeni svi upitni SNMP objekti uređaja u standardizovanom hijerarhijskom stablu. Sadrži barem jedan Object Identifier (OID), koji, pored neophodne jedinstvene adrese i imenovanja, pruža informacije o tipu, pravima pristupa i opisu odgovarajućeg objekta. MIB fajlovi su napisani u formatu ASCII teksta zasnovanom na Abstract Syntax Notation One (ASN.1). MIB-ovi ne sadrže podatke, već objašnjavaju gde pronaći koje informacije i kako izgledaju, što vraća vrednosti za određeni OID, ili koji tip podataka se koristi.

OID-ovi

Object Identifiers (OID-ovi) 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 OID-ova, dodeljeni su različitim organizacijama za postavljanje standarda. U okviru ovih najviših nivoa uspostavljen je okvir za globalne prakse upravljanja i standarde.

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

Možete navigirati kroz OID stablo sa web strane ovde: http://www.oid-info.com/cgi-bin/display?tree=#focus ili videti šta znači OID (kao što je 1.3.6.1.2.1.1) pristupajući http://oid-info.com/get/1.3.6.1.2.1.1. Postoje neki dobro poznati OID-ovi poput onih unutar 1.3.6.1.2.1 koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I od OID-ova koji proističu iz ovog možete dobiti neke zanimljive podatke o hostu (sistemski podaci, mrežni podaci, podaci o procesima...)

Primer OID-a

Primer sa ovog mesta:

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

Evo razbijanja ovog adresa.

  • 1 ovo se naziva ISO i uspostavlja da je ovo OID. Zato svi OID-ovi počinju sa "1"
  • 3 ovo se naziva ORG i koristi se za specificiranje organizacije koja je izgradila uređaj.
  • 6 ovo je dod ili Ministarstvo odbrane koje 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 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. Ovaj niz brojeva će biti isti za sve OID-ove, osim kada je uređaj napravljen od strane vlade.

Nastavljajući sa sledećim setom brojeva.

  • 1452 daje ime organizacije koja je proizvela ovaj uređaj.
  • 1 objašnjava tip 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, autentikacija 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 za autentikaciju.
  • SNMPv3: Koristi bolji oblik autentikacije i informacije putuju šifrovano (moguće je izvesti rečnik napad ali bi bilo mnogo teže pronaći tačne akreditive nego u SNMPv1 i v2).

Community Stringovi

Kao što je pomenuto ranije, da biste pristupili informacijama sačuvanim u MIB-u, morate znati community string na verzijama 1 i 2/2c i akreditive na 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, možda postoje 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, korišćen je validan community string.

Portovi

Od Vikipedije:

Brute-Force Community String (v1 i v2c)

Da biste pogodili community string, možete izvesti rečnik napad. Proverite 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 instaliranje sledećeg da biste videli šta znači svaki OID prikupljen 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 validan 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 stvari koje biste mogli smatrati zanimljivim 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 oblasti upravljanja mrežom, određene konfiguracije i parametri ključni su za obezbeđivanje sveobuhvatnog nadgledanja 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 pun pristup OID stablu bez potrebe za autentikacijom. Ovo podešavanje je jednostavno 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 naredbe zahtevaju string zajednice i odgovarajuću IP adresu, pružajući pun pristup bez obzira na poreklo zahteva.

SNMP Parametri za Microsoft Windows

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

  • Sistemske procese: Pristupljeno putem 1.3.6.1.2.1.25.1.6.0, ovaj parametar omogućava praćenje aktivnih procesa u sistemu.
  • Pokrenuti programi: Vrednost 1.3.6.1.2.1.25.4.2.1.2 namenjena je 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: Praćenje jedinica skladištenja olakšano 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 praćenju 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-a do RCE

Ako imate string koji vam omogućava da pišete vrednosti unutar SNMP servisa, 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 SNMP skener. Predviđena upotreba ovakvog alata je, naravno, postavljanje SNMP upita - ali za razliku od snmpwalk iz net-snmp, sposoban je da istovremeno postavlja upite na 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 [String zajednice]@[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, 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 radi identifikacije uređaja. 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

Zapisi sačuvani unutar MIB tabela se pregledaju radi neuspelih pokušaja prijavljivanja, koji mogu slučajno uključivati lozinke unete kao korisnička imena. Ključne reči poput fail, failed, ili login se traže kako bi se pronašli vredni podaci:

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

Emailovi

Konačno, da biste izdvojili adrese e-pošte iz podataka, koristi se grep komanda sa regularnim izrazom, fokusirajući se na obrasce koji odgovaraju formatima e-pošte:

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

Modifikovanje vrednosti SNMP

Možete koristiti NetScanTools da biste modifikovali vrednosti. Morate znati privatni string da biste to uradili.

Spoofing

Ako postoji ACL koji dozvoljava samo nekim IP adresama da upituju SMNP servis, možete falsifikovati jednu od ovih adresa unutar UDP paketa i špijunirati saobraćaj.

Pregled konfiguracionih fajlova SNMP

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

Ako vas zanima hakerska karijera i hakovanje onoga što se ne može hakovati - zapošljavamo! (potrebno je tečno poznavanje pisanog i govornog poljskog jezika).

{% embed url="https://www.stmcyber.com/careers" %}

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


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

Drugi načini podrške HackTricks-u: