.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
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 želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJSTVO!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Ako ste zainteresovani za karijeru u hakovanju i hakovanje onoga što se ne može hakovati - zapošljavamo! (potrebno je tečno poznavanje poljskog jezika, kako pismeno tako i usmeno).
{% 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 (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. Ovo 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 standardizovanoj hijerarhiji stabla. 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 ASCII tekstualnom formatu 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, koji vraćaju vrednosti za određeni OID, ili koji se tip podataka 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 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.
Pored toga, proizvođač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 preko različitih proizvođač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 OIDs poput onih unutar 1.3.6.1.2.1 koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I iz OID-ova koji slede nakon ovog možete dobiti neke zanimljive podatke o hostu (sistemski podaci, mrežni podaci, 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 naziva ISO i označava 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 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 vlade.
- 1 – ova vrednost označava da je uređaj napravljen od strane preduzeća ili poslovnog entiteta.
Ove prve šest vrednosti obično su iste za sve uređaje i daju osnovne informacije o njima. Ovaj niz brojeva će biti isti 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 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 na MIB-u, morate znati community string na verzijama 1 i 2/2c i akreditive na verziji 3.
Postoje 2 tipa community stringova:
public
uglavnom samo za čitanje funkcijeprivate
Č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
- SNMP agent prima zahteve na UDP portu 161.
- Menadžer prima obaveštenja (Traps i InformRequests) na portu 162.
- Kada se koristi sa Transport Layer Security ili Datagram Transport Layer Security, zahtevi se primaju na portu 10161, a obaveštenja se šalju na port 10162.
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 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 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 su ključni 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:
rwuser noauth
je podešen da omogući pun pristup OID stablu bez potrebe za autentifikacijom. Ovo podešavanje je jednostavno i omogućava neograničen pristup.- Za precizniju kontrolu, pristup se može dozvoliti korišćenjem:
rwcommunity
za IPv4 adrese, irwcommunity6
za IPv6 adrese.
Oba komanda 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 Baze informacija o upravljanju (MIB) se koristi za nadgledanje 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 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. - Putanja 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 olakšava
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: 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 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 postavi 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 izvukli 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 modifikujete vrednosti. Morate znati privatni string da biste to uradili.
Spoofing
Ako postoji ACL koji dozvoljava samo određenim IP adresama da upituju SNMP servis, možete falsifikovati jednu od ovih adresa unutar UDP paketa i špijunirati saobraćaj.
Pregled konfiguracionih fajlova SNMP-a
- 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 poljskog jezika u pismu i govoru).
{% 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 da podržite HackTricks:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJE!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.