16 KiB
161,162,10161,10162/udp - Pentesting SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
If you are interested in hacking career and hack the unhackable - we are hiring! (fluent polish written and spoken required).
{% embed url="https://www.stmcyber.com/careers" %}
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)
{% hint style="info" %} SNMP takođe koristi port 162/UDP za trape. Ovo su podaci paketi poslati sa SNMP servera klijentu bez eksplicitnog zahteva. {% endhint %}
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
) baziranom 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, dodeljeni su raznim organizacijama koje postavljaju standarde. U okviru 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 linije proizvoda. 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 (sistemski podaci, podaci o mreži, podaci o procesima...)
Primer OID-a
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 interneta označava 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 (svi podaci putuju u običnom tekstu). Verzija 2 i 2c takođe šalju saobraćaj u plain text i koriste community string kao autentifikaciju.
- SNMPv3: Koristi bolji oblik autentifikacije i informacije putuju kriptovano (moguće je izvršiti napad rečnikom, 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 funkcijeprivate
Čitanje/Pisanje uopšteno
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
- SNMP agent prima zahteve na UDP portu 161.
- Menadžer prima obaveštenja (Trape i InformRequests) na portu 162.
- Kada se koristi sa Transport Layer Security ili Datagram Transport Layer Security, zahtevi se primaju na portu 10161 i obaveštenja se šalju na port 10162.
Brute-Force Community String (v1 i v2c)
Da biste pogodili community string, mogli biste izvršiti napad rečnikom. Proverite ovde različite načine za izvršenje brute-force napada protiv SNMP. Često korišćen community string je public
.
Enumeracija 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 validni 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:
rwuser noauth
je postavljen da dozvoli potpuni pristup OID stablu bez potrebe za autentifikacijom. Ova postavka je jednostavna i omogućava neograničen pristup.- Za specifičniju kontrolu, pristup se može odobriti korišćenjem:
rwcommunity
za IPv4 adrese, irwcommunity6
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 namenjen za nadgledanje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.
Cisco
Pogledajte ovu stranicu ako imate 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 pišete vrednosti unutar SNMP servisa, možda ćete moći da ga zloupotrebite da izvršite komande:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
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
Modifikovanje SNMP vrednosti
Možete koristiti NetScanTools da modifikujete vrednosti. Biće vam potrebna privatna string da biste to uradili.
Lažiranje
Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SNMP servis, možete lažirati jednu od ovih adresa unutar UDP paketa i prisluškivati saobraćaj.
Istraživanje SNMP konfiguracionih fajlova
- snmp.conf
- snmpd.conf
- snmp-config.xml
Ako ste zainteresovani za karijeru u hakovanju i da hakujete nehakovano - zapošljavamo! (potrebno je tečno pisano i govorno poljski).
{% 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
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.