.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
161,162,10161,10162/udp - Pentesting SNMP
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hack-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
As jy belangstel in 'n hackingsloopbaan en die onhackbare wil hack - ons is aan die werf! (vloeiende Pools geskrewe en gesproke vereis).
{% embed url="https://www.stmcyber.com/careers" %}
Basiese Inligting
SNMP - Simple Network Management Protocol is 'n protokol wat gebruik word om verskillende toestelle in die netwerk te monitor (soos routers, skakelaars, drukkers, IoT's...).
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
{% hint style="info" %} SNMP gebruik ook die poort 162/UDP vir traps. Dit is data pakkies wat vanaf die SNMP-bediener na die klient gestuur word sonder om eksplisiet aangevra te word. {% endhint %}
MIB
Om te verseker dat SNMP-toegang oor verskillende vervaardigers en met verskillende klient-bediener kombinasies werk, is die Management Information Base (MIB) geskep. MIB is 'n onafhanklike formaat vir die stoor van toestelinligting. 'n MIB is 'n teks lêer waarin alle navraagbare SNMP-voorwerpe van 'n toestel in 'n gestandaardiseerde boomhierargie gelys word. Dit bevat ten minste een Object Identifier
(OID
), wat, bo en behalwe die nodige unieke adres en 'n naam, ook inligting oor die tipe, toegangsregte, en 'n beskrywing van die betrokke voorwerp verskaf. MIB-lêers is in die Abstract Syntax Notation One
(ASN.1
) gebaseerde ASCII-teksformaat geskryf. Die MIBs bevat nie data nie, maar verduidelik waar om watter inligting te vind en hoe dit lyk, wat terugvoerwaardes vir die spesifieke OID lewer, of watter datatipe gebruik word.
OIDs
Object Identifiers (OIDs) speel 'n kritieke rol. Hierdie unieke identifiseerders is ontwerp om voorwerpe binne 'n Management Information Base (MIB) te bestuur. Die hoogste vlakke van MIB-voorwerp-ID's, of OIDs, word toegewys aan diverse standaardstellende organisasies. Dit is binne hierdie boonste vlakke dat die raamwerk vir globale bestuurspraktyke en standaarde vasgestel word. Verder word vervaardigers die vryheid gegee om private takke te vestig. Binne hierdie takke het hulle die selfstandigheid om bestuurde voorwerpe wat relevant is vir hul eie produklyne in te sluit. Hierdie stelsel verseker dat daar 'n gestruktureerde en georganiseerde metode is vir die identifisering en bestuur van 'n wye verskeidenheid voorwerpe oor verskillende vervaardigers en standaarde.
Jy kan deur 'n OID-boom op die web navigeer hier: http://www.oid-info.com/cgi-bin/display?tree=#focus of sien wat 'n OID beteken (soos 1.3.6.1.2.1.1
) deur http://oid-info.com/get/1.3.6.1.2.1.1 te besoek. Daar is 'n paar bekende OIDs soos diegene binne 1.3.6.1.2.1 wat na MIB-2 gedefinieerde Eenvoudige Netwerkbestuursprotokol (SNMP) veranderlikes verwys. En van die OIDs wat van hierdie een afhang kan jy interessante gasheerdata verkry (sisteedata, netwerkdata, prosesdata...)
OID Voorbeeld
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Hier is 'n uiteensetting van hierdie adres.
- 1 - dit word die ISO genoem en dit bevestig dat dit 'n OID is. Dit is waarom alle OIDs met "1" begin
- 3 - dit word ORG genoem en dit word gebruik om die organisasie wat die toestel gebou het, te spesifiseer.
- 6 - dit is die dod of die Departement van Verdediging wat die organisasie is wat die Internet eerste gevestig het.
- 1 - dit is die waarde van die internet om aan te dui dat alle kommunikasie deur die Internet sal plaasvind.
- 4 - hierdie waarde bepaal dat hierdie toestel deur 'n private organisasie gemaak is en nie deur 'n regeringsinstansie nie.
- 1 - hierdie waarde dui aan dat die toestel deur 'n onderneming of 'n besigheidsentiteit gemaak is.
Hierdie eerste ses waardes is geneig om dieselfde te wees vir alle toestelle en hulle gee jou die basiese inligting oor hulle. Hierdie reeks getalle sal dieselfde wees vir alle OIDs, behalwe wanneer die toestel deur die regering gemaak is.
Bewegend na die volgende stel getalle.
- 1452 - gee die naam van die organisasie wat hierdie toestel vervaardig het.
- 1 - verduidelik die tipe toestel. In hierdie geval is dit 'n wekker.
- 2 - bepaal dat hierdie toestel 'n afgeleë terminale eenheid is.
Die res van die waardes gee spesifieke inligting oor die toestel.
- 5 - dui 'n diskrete alarm punt aan.
- 1 - spesifieke punt in die toestel
- 3 - poort
- 21 - adres van die poort
- 1 - vertoon vir die poort
- 4 - puntnommer
- 7 - toestand van die punt
SNMP Weergawes
Daar is 2 belangrike weergawes van SNMP:
- SNMPv1: Die hoofeen, dit is steeds die mees algemene, die verifikasie is gebaseer op 'n string (gemeenskapsnaam) wat in platte teks reis (alle inligting reis in platte teks). Weergawe 2 en 2c stuur die verkeer in platte teks ook en gebruik 'n gemeenskapsnaam as verifikasie.
- SNMPv3: Gebruik 'n beter verifikasie vorm en die inligting reis geënkripteer (‘n woordeboekaanval kan uitgevoer word, maar dit sal baie moeiliker wees om die korrekte geloofsbriewe as in SNMPv1 en v2 te vind).
Gemeenskapsname
Soos voorheen genoem, om toegang te verkry tot die inligting wat in die MIB gestoor is, moet jy die gemeenskapsnaam op weergawes 1 en 2/2c ken en die geloofsbriewe op weergawe 3. Daar is 2 tipes gemeenskapsname:
public
hoofsaaklik alleen leesfunksiesprivate
Lees/Skryf in die algemeen
Let daarop dat die skryfbaarheid van 'n OID afhang van die gemeenskapsnaam wat gebruik word, so selfs as jy vind dat "public" gebruik word, kan jy dalk in staat wees om waardes te skryf. Daar mag ook voorwerpe wees wat altyd "Net Leesbaar" is.
As jy probeer om 'n voorwerp te skryf, sal 'n noSuchName
of readOnly
fout ontvang word**.**
In weergawes 1 en 2/2c as jy 'n slegte gemeenskapsnaam gebruik, sal die bediener nie reageer nie. Dus, as dit reageer, is 'n geldige gemeenskapsnaam gebruik.
Poorte
- Die SNMP-agent ontvang versoek op UDP-poort 161.
- Die bestuurder ontvang kennisgewings (Traps en InformRequests) op poort 162.
- Wanneer dit met Transportlaag-sekuriteit of Datagram Transportlaag-sekuriteit gebruik word, word versoek op poort 10161 ontvang en kennisgewings word na poort 10162 gestuur.
Brute-Force Gemeenskapsnaam (v1 en v2c)
Om die gemeenskapsnaam te raai, kan jy 'n woordeboekaanval uitvoer. Kyk hier na verskillende maniere om 'n brute-force aanval teen SNMP uit te voer. 'n Gereeld gebruikte gemeenskapsnaam is public
.
Enumerating SNMP
Dit word aanbeveel om die volgende te installeer om te sien wat elke OID wat van die toestel ingesamel is, beteken:
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
Indien jy 'n geldige gemeenskapsnaam weet, kan jy die data toegang kry deur SNMPWalk of 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
Dankie aan uitgebreide navrae (laai-mibs af), is dit moontlik om selfs meer oor die stelsel op te som met die volgende bevel:
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP het baie inligting oor die gasheer en dinge wat jy interessant mag vind is: Netwerkinterfaces (IPv4 en IPv6-adres), Gebruikersname, Bedryfstyd, Bediener/OS-weergawe, en prosesse wat loop (mag wagwoorde bevat)....
Gevaarlike Instellings
In die domein van netwerkbestuur is sekere konfigurasies en parameters sleutel tot die versekering van omvattende monitering en beheer.
Toegangsinstellings
Twee hoofinstellings maak toegang tot die volledige OID-boom moontlik, wat 'n kritieke komponent in netwerkbestuur is:
rwuser noauth
is ingestel om volle toegang tot die OID-boom sonder die nodigheid van verifikasie toe te laat. Hierdie instelling is maklik en maak vir onbeperkte toegang moontlik.- Vir meer spesifieke beheer kan toegang verleen word deur:
rwcommunity
vir IPv4-adresse, enrwcommunity6
vir IPv6-adresse.
Beide bevele vereis 'n gemeenskapsnaam en die betrokke IP-adres, wat volle toegang bied ongeag die oorsprong van die versoek.
SNMP-parameters vir Microsoft Windows
'n Reeks van Bestuursinligtingsbasis (MIB) waardes word gebruik om verskeie aspekte van 'n Windows-sisteem deur SNMP te monitor:
- Sisteemprosesse: Toeganklik via
1.3.6.1.2.1.25.1.6.0
, hierdie parameter maak dit moontlik om aktiewe prosesse binne die sisteem te monitor. - Lopende Programme: Die waarde
1.3.6.1.2.1.25.4.2.1.2
is aangewys vir die opsporing van tans lopende programme. - Prosessepad: Om te bepaal waar 'n proses van loop, word die MIB-waarde
1.3.6.1.2.1.25.4.2.1.4
gebruik. - Stoor-eenhede: Die monitering van stoor-eenhede word gefasiliteer deur
1.3.6.1.2.1.25.2.3.1.4
. - Sagteware Naam: Om die sagteware wat op 'n sisteem geïnstalleer is te identifiseer, word
1.3.6.1.2.1.25.6.3.1.2
gebruik. - Gebruikersrekeninge: Die waarde
1.3.6.1.4.1.77.1.2.25
maak die opsporing van gebruikersrekeninge moontlik. - TCP Plaaslike Poorte: Laastens,
1.3.6.1.2.1.6.13.1.3
is aangewys vir die monitering van TCP plaaslike poorte, wat insig bied in aktiewe netwerkverbindings.
Cisco
Neem 'n kyk na hierdie bladsy as jy Cisco-toerusting het:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
Van SNMP tot RCE
As jy die string het wat jou toelaat om waardes te skryf binne die SNMP-diens, kan jy dit moontlik misbruik om opdragte uit te voer:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
Massiewe SNMP
Braa is 'n massiewe SNMP-skandeerder. Die bedoelde gebruik van so 'n instrument is natuurlik om SNMP-navrae te maak - maar anders as snmpwalk van net-snmp, is dit in staat om terselfdertyd tientalle of honderde gasheer te ondervra, en in 'n enkele proses. Dit verbruik dus baie min stelselbronne en doen die skandering BAIE vinnig.
Braa implementeer sy EIE snmp-stapel, sodat dit GEEN SNMP-biblioteke soos net-snmp benodig nie.
Sintaksis: braa [Gemeenskapsnaam]@[IP van SNMP-bediener]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
Hierdie kan 'n groot hoeveelheid MB aan inligting onttrek wat jy nie handmatig kan verwerk nie.
Dus, laat ons soek na die mees interessante inligting (van https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Toestelle
Die proses begin met die onttrekking van sysDesc MIB data (1.3.6.1.2.1.1.1.0) van elke lêer om die toestelle te identifiseer. Dit word bereik deur die gebruik van 'n grep-opdrag:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Identifiseer Privaat String
'n Belangrike stap behels die identifisering van die privaat gemeenskapsnaam wat deur organisasies gebruik word, veral op Cisco IOS-roeteverbindings. Hierdie string maak dit moontlik om lopende konfigurasies van roeteverbindings te onttrek. Die identifisering steun dikwels op die analise van SNMP-valdata vir die woord "val" met 'n grep-opdrag:
grep -i "trap" *.snmp
Gebruikersname/ Wagwoorde
Logs wat binne MIB-tabelle gestoor word, word ondersoek vir mislukte aanmeldingspogings, wat dalk per ongeluk wagwoorde ingesluit kan hê wat as gebruikersname ingevoer is. Sleutelwoorde soos fail, failed, of login word gesoek om waardevolle data te vind:
grep -i "login\|fail" *.snmp
E-posse
Laastens, om e-posadresse uit die data te onttrek, word 'n grep-opdrag met 'n regulêre uitdrukking gebruik, wat fokus op patrone wat ooreenstem met e-posformate:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Wysiging van SNMP-waardes
Jy kan NetScanTools gebruik om waardes te wysig. Jy sal die privaat string moet weet om dit te doen.
Spoofing
As daar 'n ACL is wat slegs sekere IP-adresse toelaat om die SMNP-diens te ondervra, kan jy een van hierdie adresse binne die UDP-pakket vervals en die verkeer besnuffel.
Ondersoek SNMP-konfigurasie lêers
- snmp.conf
- snmpd.conf
- snmp-config.xml
As jy belangstel in 'n hackingsloopbaan en die onhackbare wil hack - ons is aan die aanstel! (vloeiende Pools geskrewe en gesproke vereis).
{% embed url="https://www.stmcyber.com/careers" %}
HackTricks Outomatiese Opdragte
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
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hack-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.