.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
161,162,10161,10162/udp - Pentesting SNMP
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
As jy belangstel in 'n hacking loopbaan en om die onhackbare te hack - ons is op soek na personeel! (vloeiend in geskryf en gesproke Pools 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, switches, printers, IoTs...).
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 pakkette wat van die SNMP-bediener na die kliënt gestuur word sonder om eksplisiet versoek te word. {% endhint %}
MIB
Om te verseker dat SNMP-toegang oor vervaardigers en met verskillende kliënt-bediener kombinasies werk, is die Management Information Base (MIB) geskep. MIB is 'n onafhanklike formaat vir die stoor van toestel-inligting. 'n MIB is 'n tekst lêer waarin al die navraagbare SNMP-objekte van 'n toestel in 'n gestandaardiseerde boomhiërargie gelys word. Dit bevat ten minste een Object Identifier
(OID
), wat, benewens die nodige unieke adres en 'n naam, ook inligting verskaf oor die tipe, toegangregte, en 'n beskrywing van die onderskeie objek.
MIB-lêers is geskryf in die Abstract Syntax Notation One
(ASN.1
) gebaseerde ASCII teksformaat. Die MIBs bevat nie data nie, maar hulle verduidelik waar om watter inligting te vind en hoe dit lyk, wat waardes vir die spesifieke OID teruggee, of watter datatipe gebruik word.
OIDs
Object Identifiers (OIDs) speel 'n belangrike rol. Hierdie unieke identifiseerders is ontwerp om objekte binne 'n Management Information Base (MIB) te bestuur.
Die hoogste vlakke van MIB objek-ID's, of OIDs, word toegeken aan verskillende standaardstellende organisasies. Dit is binne hierdie top vlakke dat die raamwerk vir globale bestuurspraktyke en standaarde gevestig word.
Verder word verskaffers die vryheid gegee om private takke te vestig. Binne hierdie takke het hulle die outonomie om bestuurde objekte wat relevant is vir hul eie produklyne in te sluit. Hierdie stelsel verseker dat daar 'n gestruktureerde en georganiseerde metode is om 'n wye verskeidenheid objekte oor verskillende verskaffers en standaarde te identifiseer en te bestuur.
Jy kan navigeer deur 'n OID-boom vanaf die web 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 toegang te verkry tot http://oid-info.com/get/1.3.6.1.2.1.1.
Daar is 'n paar bekende OIDs soos diegene binne 1.3.6.1.2.1 wat MIB-2 gedefinieerde Simple Network Management Protocol (SNMP) veranderlikes verwys. En van die OIDs wat van hierdie een afhang, kan jy 'n paar interessante gasheerdata verkry (stelseldatas, netwerkdata, prosesdata...)
OID Voorbeeld
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Hier is 'n ontleding van hierdie adres.
- 1 – dit word die ISO genoem en dit vestig 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, aan te dui.
- 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 'n regeringsorganisasie nie.
- 1 – hierdie waarde dui aan dat die toestel deur 'n onderneming of 'n besigheidseenheid 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 volgorde van nommers sal dieselfde wees vir alle OIDs, behalwe wanneer die toestel deur die regering gemaak is.
Gaan voort na die volgende stel nommers.
- 1452 – gee die naam van die organisasie wat hierdie toestel vervaardig het.
- 1 – verduidelik die tipe toestel. In hierdie geval is dit 'n alarmklok.
- 2 – bepaal dat hierdie toestel 'n afstandsterminaal eenheid is.
Die res van die waardes gee spesifieke inligting oor die toestel.
- 5 – dui 'n diskrete alarmpunt 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: Hoof een, dit is steeds die mees algemene, die authentisering is gebaseer op 'n string (gemeenskapsstring) wat in duidelike teks reis (alle inligting reis in duidelike teks). Weergawes 2 en 2c stuur die verkeer in duidelike teks ook en gebruik 'n gemeenskapsstring as authentisering.
- SNMPv3: Gebruik 'n beter authentisering vorm en die inligting reis versleuteld (dikwels kan 'n woordeboekaanval uitgevoer word, maar dit sal baie moeiliker wees om die korrekte kredensiale te vind as in SNMPv1 en v2).
Gemeenskapsstrings
Soos voorheen genoem, om toegang te verkry tot die inligting wat op die MIB gestoor is, moet jy die gemeenskapsstring weet op weergawes 1 en 2/2c en die kredensiale op weergawes 3.
Daar is 2 tipes gemeenskapsstrings:
public
hoofsaaklik lees net funksiesprivate
Lees/Skryf in die algemeen
Let daarop dat die skryfbaarheid van 'n OID afhang van die gemeenskapsstring wat gebruik word, so selfs as jy vind dat "public" gebruik word, kan jy dalk sekere waardes skryf. Daar kan ook voorwerpe wees wat altyd "Lees Net" is.
As jy probeer om 'n objek te skryf, sal 'n noSuchName
of readOnly
fout ontvang word**.**
In weergawes 1 en 2/2c, as jy 'n slegte gemeenskapsstring gebruik, sal die bediener nie reageer nie. So, as dit reageer, is 'n geldige gemeenskapsstring gebruik.
Poorte
- Die SNMP-agent ontvang versoeke op UDP-poort 161.
- Die bestuurder ontvang kennisgewings (Traps en InformRequests) op poort 162.
- Wanneer dit saam met Transport Layer Security of Datagram Transport Layer Security gebruik word, word versoeke op poort 10161 ontvang en kennisgewings word na poort 10162 gestuur.
Brute-Force Gemeenskapsstring (v1 en v2c)
Om die gemeenskapsstring te raai, kan jy 'n woordeboekaanval uitvoer. Kyk hier verskillende maniere om 'n brute-force aanval teen SNMP uit te voer. 'n Gereeld gebruikte gemeenskapsstring is public
.
Enumerating SNMP
Dit word aanbeveel om die volgende te installeer om te sien wat elke OID wat van die toestel versamel 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
As jy 'n geldige gemeenskapsstring ken, kan jy die data toegang met 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 (download-mibs), is dit moontlik om selfs meer oor die stelsel te tel met die volgende opdrag :
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP het baie inligting oor die gasheer en dinge wat jy dalk interessant vind, is: Netwerkinterfaces (IPv4 en IPv6 adres), gebruikersname, uptime, bediener/OS weergawe, en prosesse
wat (kan wagwoorde bevat)....
Gevaarlike Instellings
In die wêreld van netwerkbestuur is sekere konfigurasies en parameters sleutel tot die verseker van omvattende monitering en beheer.
Toegang Instellings
Twee hoofinstellings stel toegang tot die volledige OID-boom moontlik, wat 'n belangrike komponent in netwerkbestuur is:
rwuser noauth
is ingestel om volle toegang tot die OID-boom toe te laat sonder die behoefte aan verifikasie. Hierdie instelling is eenvoudig en laat onbeperkte toegang toe.- Vir meer spesifieke beheer kan toegang toegestaan word met:
rwcommunity
vir IPv4 adresse, enrwcommunity6
vir IPv6 adresse.
Albei opdragte vereis 'n gemeenskapsstring en die relevante IP-adres, wat volle toegang bied ongeag die oorsprong van die versoek.
SNMP Parameters vir Microsoft Windows
'n Reeks Bestuur Inligting Basis (MIB) waardes word gebruik om verskeie aspekte van 'n Windows-stelsel deur SNMP te monitor:
- Stelselsprosesse: Toegang via
1.3.6.1.2.1.25.1.6.0
, hierdie parameter stel die monitering van aktiewe prosesse binne die stelsel moontlik. - Lopende Programme: Die
1.3.6.1.2.1.25.4.2.1.2
waarde is aangewys vir die opsporing van tans lopende programme. - Prosesse Pad: Om te bepaal waar 'n proses van loop, word die
1.3.6.1.2.1.25.4.2.1.4
MIB waarde gebruik. - Bergingseenhede: Die monitering van bergingseenhede word gefasiliteer deur
1.3.6.1.2.1.25.2.3.1.4
. - Sagteware Naam: Om die sagteware wat op 'n stelsel geïnstalleer is te identifiseer, word
1.3.6.1.2.1.25.6.3.1.2
gebruik. - Gebruikersrekeninge: Die
1.3.6.1.4.1.77.1.2.25
waarde stel 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 netwerkverbindinge.
Cisco
Kyk na hierdie bladsy as jy Cisco-toerusting het:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
Van SNMP na RCE
As jy die string het wat jou toelaat om waardes binne die SNMP-diens te skryf, kan jy dit 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 beoogde gebruik van so 'n hulpmiddel is, natuurlik, om SNMP versoeke te maak – maar anders as snmpwalk van net-snmp, is dit in staat om dosyne of honderde gashere gelyktydig te ondervra, en in 'n enkele proses. Dus, dit verbruik baie min stelselhulpbronne en doen die skandering BAIE vinnig.
Braa implementeer sy EIE snmp-stapel, so dit het GEEN SNMP biblioteke soos net-snmp nodig nie.
Sintaksis: braa [Gemeenskaps-string]@[[IP van SNMP bediener]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
Dit kan 'n groot hoeveelheid MB inligting onttrek wat jy nie handmatig kan verwerk nie.
So, kom 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) uit elke lêer om die toestelle te identifiseer. Dit word bereik deur die gebruik van 'n grep command:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Identifiseer Privaat String
'n Belangrike stap behels die identifisering van die privaat gemeenskap string wat deur organisasies gebruik word, veral op Cisco IOS-ruters. Hierdie string stel die onttrekking van lopende konfigurasies van ruters in staat. Die identifisering staat dikwels op die analise van SNMP Trap-data vir die woord "trap" met 'n grep-opdrag:
grep -i "trap" *.snmp
Gebruikersname/Wagwoorde
Logs wat in MIB-tabelle gestoor is, word ondersoek vir mislukte aanmeldpogings, wat per ongeluk wagwoorde wat as gebruikersname ingevoer is, kan insluit. Sleutelwoorde soos fail, failed, of login word gesoek om waardevolle data te vind:
grep -i "login\|fail" *.snmp
E-pos
Laastens, om e-pos adresse uit die data te onttrek, word 'n grep-opdrag met 'n gereelde uitdrukking gebruik, wat fokus op patrone wat e-pos formate pas:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Modifying SNMP values
Jy kan NetScanTools gebruik om waardes te wysig. Jy sal die privaat string moet ken om dit te doen.
Spoofing
As daar 'n ACL is wat slegs sekere IP's toelaat om die SNMP-diens te vra, kan jy een van hierdie adresse in die UDP-pakket spoof en die verkeer snuffel.
Examine SNMP Configuration files
- snmp.conf
- snmpd.conf
- snmp-config.xml
As jy belangstel in 'n hacking loopbaan en die onhackbare hack - ons huur aan! (vloeiend in Pools, geskryf en gesproke, vereis).
{% embed url="https://www.stmcyber.com/careers" %}
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
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.