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

Support HackTricks

If you are interested in hacking career and hack the unhackable - we are hiring! (fluent polish written and spoken required).

Basic Information

SNMP - Simple Network Management Protocol je protokol koji se koristi za praćenje 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)

SNMP takođe koristi port 162/UDP za trape. To su podaci paketi poslati sa SNMP servera klijentu bez eksplicitnog zahteva.

MIB

Da bi se osiguralo da SNMP pristup funkcioniše među proizvođačima i sa različitim kombinacijama klijent-server, Management Information Base (MIB) je stvoren. MIB je nezavistan format za čuvanje informacija o uređaju. MIB je tekstualna datoteka u kojoj su svi upitni SNMP objekti uređaja navedeni u standardizovanoj hijerarhiji stabla. Sadrži najmanje jedan Object Identifier (OID), koji, pored potrebne jedinstvene adrese i imena, takođe pruža informacije o tipu, pravima pristupa i opisu odgovarajućeg objekta. MIB datoteke su napisane u Abstract Syntax Notation One (ASN.1) zasnovanom ASCII tekstualnom formatu. MIB-ovi ne sadrže podatke, ali objašnjavaju gde pronaći koje informacije i kako izgledaju, koje vraća vrednosti za specifični OID, ili koji tip podataka se koristi.

OIDs

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

Najviši nivoi MIB identifikatora objekata, ili OIDs, su dodeljeni raznim organizacijama koje postavljaju standarde. Unutar ovih najviših nivoa uspostavlja se okvir za globalne prakse i standarde upravljanja.

Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar ovih grana, imaju autonomiju da uključe upravljane objekte relevantne za svoje proizvodne linije. Ovaj sistem osigurava da postoji strukturiran i organizovan način za identifikaciju i upravljanje širokim spektrom objekata među različitim proizvođačima i standardima.

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 1.3.6.1.2.1.1) pristupajući http://oid-info.com/get/1.3.6.1.2.1.1. Postoje neki poznati OIDs kao što su oni unutar 1.3.6.1.2.1 koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I iz OIDs koji zavise od ovog možete dobiti neke zanimljive podatke o hostu (sistemskim podacima, mrežnim podacima, podacima o procesima...)

Primer OID-a

Primer odavde:

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

Evo razlaganja ove adrese.

  • 1 – ovo se zove ISO i uspostavlja da je ovo OID. Zato svi OIDs počinju sa “1”

  • 3 – ovo se zove ORG i koristi se za specificiranje organizacije koja je izgradila uređaj.

  • 6 – ovo je dod ili Ministarstvo odbrane koje je organizacija koja je prvi uspostavila Internet.

  • 1 – ova vrednost označava internet da označi da će sve komunikacije biti obavljene putem Interneta.

  • 4 – ova vrednost određuje da je ovaj uređaj napravljen od strane privatne organizacije, a ne vladine.

  • 1 – ova vrednost označava da je uređaj napravljen od strane preduzeća ili poslovnog entiteta.

Ovih prvih šest vrednosti obično su iste za sve uređaje i daju vam osnovne informacije o njima. Ova sekvenca brojeva biće ista za sve OIDs, 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 tip uređaja. U ovom slučaju, to je budilnik.

  • 2 – određuje da je ovaj uređaj daljinski terminal.

Ostatak vrednosti daje specifične informacije o uređaju.

  • 5 – označava diskretnu tačku alarma.

  • 1 – specifična tačka u uređaju

  • 3 – port

  • 21 – adresa porta

  • 1 – prikaz za port

  • 4 – broj tačke

  • 7 – stanje tačke

SNMP Verzije

Postoje 2 važne verzije SNMP:

  • SNMPv1: Glavna verzija, još uvek je najčešća, autentifikacija se zasniva na stringu (community string) koji putuje u plain-text (sve informacije putuju u plain textu). Verzija 2 i 2c takođe šalju saobraćaj u plain textu i koriste community string kao autentifikaciju.

  • SNMPv3: Koristi bolji oblik autentifikacije i informacije putuju kriptovano koristeći (dictionary attack može biti izveden, ali bi bilo mnogo teže pronaći ispravne kredencijale nego u SNMPv1 i v2).

Community Strings

Kao što je ranije pomenuto, da biste pristupili informacijama sačuvanim na MIB-u, morate znati community string za verzije 1 i 2/2c i kredencijale za verziju 3. Postoje 2 tipa community strings:

  • public uglavnom samo za čitanje funkcije

  • private Čitanje/Pisanje uopšte

Napomena da pisivost OID-a zavisi od korišćenog community stringa, tako da čak i ako otkrijete da se koristi "public", mogli biste biti u mogućnosti da pišete neke vrednosti. Takođe, može postojati objekata koji su uvek "Samo za čitanje". Ako pokušate da pišete objekat, dobićete noSuchName ili readOnly grešku.**.**

U verzijama 1 i 2/2c, ako koristite loš community string, server neće odgovoriti. Dakle, ako odgovara, korišćen je validan community string.

Portovi

Sa Wikipedije:

Brute-Force Community String (v1 i v2c)

Da biste pogodili community string, mogli biste izvesti napad rečnikom. Proverite ovde različite načine za izvođenje brute-force napada protiv SNMP. Često korišćen community string je public.

Enumerating SNMP

Preporučuje se instalacija 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 važeći community 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

Hvala proširenim upitima (download-mibs), moguće je enumerisati još više o sistemu sa sledećom komandom:

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

SNMP ima mnogo informacija o hostu, a stvari koje bi mogle biti zanimljive su: Mrežni interfejsi (IPv4 i IPv6 adresa), Korisnička imena, Uptime, 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 su ključni za osiguranje 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 postavljen da dozvoli potpuni pristup OID stablu bez potrebe za autentifikacijom. Ova postavka je jednostavna i omogućava neograničen pristup.

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

  • rwcommunity za IPv4 adrese, i

  • rwcommunity6 za IPv6 adrese.

Obe komande zahtevaju community string i relevantnu IP adresu, nudeći potpuni pristup bez obzira na poreklo zahteva.

SNMP parametri za Microsoft Windows

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

  • Sistemski procesi: Pristupa se putem 1.3.6.1.2.1.25.1.6.0, ovaj parametar omogućava nadgledanje aktivnih procesa unutar sistema.

  • Aktivni programi: Vrednost 1.3.6.1.2.1.25.4.2.1.2 je namenjena praćenju trenutno aktivnih programa.

  • Putanja procesa: Da bi se odredilo odakle se proces izvršava, koristi se MIB vrednost 1.3.6.1.2.1.25.4.2.1.4.

  • Skladišne jedinice: Nadgledanje skladišnih jedinica olakšano je putem 1.3.6.1.2.1.25.2.3.1.4.

  • Ime softvera: Da bi se identifikovao softver instaliran 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 lokalne portove: Na kraju, 1.3.6.1.2.1.6.13.1.3 je namenjena za nadgledanje TCP lokalnih portova, pružajući uvid u aktivne mrežne konekcije.

Cisco

Pogledajte ovu stranicu ako imate Cisco opremu:

Cisco SNMP

Od SNMP do RCE

Ako imate string koji vam omogućava da pišete vrednosti unutar SNMP servisa, možda ćete moći da ga zloupotrebite da izvršite komande:

SNMP RCE

Masovni SNMP

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

Braa implementira svoj VLASTITI snmp stek, tako da mu nisu potrebne nikakve SNMP biblioteke poput net-snmp.

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

braa ignite123@192.168.1.125:.1.3.6.*

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

Dakle, hajde da potražimo najzanimljivije 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 community stringa koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava ekstrakciju running configurations sa rutera. Identifikacija se često oslanja na analizu SNMP Trap podataka za reč "trap" uz pomoć grep command:

grep -i "trap" *.snmp

Korisnička imena/Lozinke

Zapisi pohranjeni unutar MIB tabela se ispituju za neuspešne pokušaje prijavljivanja, koji mogu slučajno uključivati lozinke unesene kao korisnička imena. Ključne reči kao što su fail, failed, ili login se pretražuju kako bi se pronašli vredni podaci:

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

Emails

Na kraju, za ekstrakciju email adresa 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

Modifying SNMP values

Možete koristiti NetScanTools da izmenite vrednosti. Trebaće vam privatni string da biste to uradili.

Spoofing

Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SNMP servis, možete spoofovati jednu od ovih adresa unutar UDP paketa i prisluškivati saobraćaj.

Examine SNMP Configuration files

  • snmp.conf

  • snmpd.conf

  • snmp-config.xml

Ako ste zainteresovani za hacking karijeru i da hakujete nehakovano - zapošljavamo! (potrebno je tečno pisanje i govorenje poljskog).

HackTricks Automatic Commands

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

Podržite HackTricks

Last updated