.. | ||
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 vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- 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 Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
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 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, 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
- SNMP agent prima zahteve na UDP portu 161.
- Menadžer prima obaveštenja (Traps i InformRequests) na portu 162.
- Kada se koristi 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 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:
-
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. -
Za precizniju kontrolu, pristup se može odobriti korišćenjem:
rwcommunity
za IPv4 adrese, irwcommunity6
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:
- Ako želite da vidite oglašavanje vaše kompanije u HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- 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 Twitter-u 🐦 @carlospolopm.
- Podelite svoje trikove hakovanja slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.