.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
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 - Απλό Πρωτόκολλο Διαχείρισης Δικτύου είναι ένα πρωτόκολλο που χρησιμοποιείται για την παρακολούθηση διαφόρων συσκευών στο δίκτυο (όπως δρομολογητές, διακόπτες, εκτυπωτές, IoTs...).
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
{% hint style="info" %} Το SNMP χρησιμοποιεί επίσης την θύρα 162/UDP για traps. Αυτά είναι δεδομένα πακέτα που αποστέλλονται από τον διακομιστή SNMP στον πελάτη χωρίς να ζητηθούν ρητά. {% endhint %}
MIB
Για να διασφαλιστεί ότι η πρόσβαση SNMP λειτουργεί σε διάφορους κατασκευαστές και με διαφορετικούς συνδυασμούς πελάτη-διακομιστή, δημιουργήθηκε η Βάση Πληροφοριών Διαχείρισης (MIB). Η MIB είναι μια ανεξάρτητη μορφή αποθήκευσης πληροφοριών συσκευών. Μια MIB είναι ένα αρχείο κειμένου στο οποίο αναφέρονται όλα τα ερωτήσιμα αντικείμενα SNMP μιας συσκευής σε μια τυποποιημένη ιεραρχία δέντρου. Περιέχει τουλάχιστον ένα Object Identifier
(OID
), το οποίο, εκτός από τη μοναδική διεύθυνση και ένα όνομα, παρέχει επίσης πληροφορίες σχετικά με τον τύπο, τα δικαιώματα πρόσβασης και μια περιγραφή του αντίστοιχου αντικειμένου.
Τα αρχεία MIB γράφονται σε μορφή ASCII κειμένου Abstract Syntax Notation One
(ASN.1
). Οι MIBs δεν περιέχουν δεδομένα, αλλά εξηγούν πού να βρείτε ποιες πληροφορίες και πώς φαίνονται, ποιες τιμές επιστρέφουν για το συγκεκριμένο OID ή ποιος τύπος δεδομένων χρησιμοποιείται.
OIDs
Object Identifiers (OIDs) παίζουν κρίσιμο ρόλο. Αυτοί οι μοναδικοί αναγνωριστές έχουν σχεδιαστεί για να διαχειρίζονται αντικείμενα εντός μιας Βάσης Πληροφοριών Διαχείρισης (MIB).
Τα υψηλότερα επίπεδα των αναγνωριστών αντικειμένων MIB, ή OIDs, έχουν κατανεμηθεί σε διάφορους οργανισμούς τυποποίησης. Είναι σε αυτά τα κορυφαία επίπεδα που καθορίζεται το πλαίσιο για τις παγκόσμιες πρακτικές και τα πρότυπα διαχείρισης.
Επιπλέον, οι προμηθευτές έχουν την ελευθερία να δημιουργούν ιδιωτικούς κλάδους. Μέσα σε αυτούς τους κλάδους, έχουν την αυτονομία να περιλαμβάνουν διαχειριζόμενα αντικείμενα που σχετίζονται με τις δικές τους γραμμές προϊόντων. Αυτό το σύστημα διασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και τη διαχείριση μιας ευρείας γκάμας αντικειμένων σε διάφορους προμηθευτές και πρότυπα.
Μπορείτε να πλοηγηθείτε σε ένα δέντρο OID από τον ιστό εδώ: http://www.oid-info.com/cgi-bin/display?tree=#focus ή να δείτε τι σημαίνει ένα OID (όπως το 1.3.6.1.2.1.1
) επισκεπτόμενοι http://oid-info.com/get/1.3.6.1.2.1.1.
Υπάρχουν μερικά καλά γνωστά OIDs όπως αυτά μέσα στο 1.3.6.1.2.1 που αναφέρονται σε μεταβλητές του Πρωτοκόλλου Απλής Διαχείρισης Δικτύου (SNMP) που ορίζονται από το MIB-2. Και από τα OIDs που εκκρεμούν από αυτό μπορείτε να αποκτήσετε μερικά ενδιαφέροντα δεδομένα φιλοξενίας (δεδομένα συστήματος, δεδομένα δικτύου, δεδομένα διαδικασιών...)
Παράδειγμα OID
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Ακολουθεί μια ανάλυση αυτής της διεύθυνσης.
- 1 – αυτό ονομάζεται ISO και καθορίζει ότι αυτό είναι ένα OID. Γι' αυτό όλοι οι OIDs ξεκινούν με “1”
- 3 – αυτό ονομάζεται ORG και χρησιμοποιείται για να προσδιορίσει τον οργανισμό που κατασκεύασε τη συσκευή.
- 6 – αυτό είναι το dod ή το Υπουργείο Άμυνας, το οποίο είναι ο οργανισμός που καθόρισε πρώτος το Διαδίκτυο.
- 1 – αυτή είναι η τιμή του διαδικτύου για να δηλώσει ότι όλες οι επικοινωνίες θα γίνονται μέσω του Διαδικτύου.
- 4 – αυτή η τιμή καθορίζει ότι αυτή η συσκευή κατασκευάζεται από ιδιωτικό οργανισμό και όχι από κυβερνητικό.
- 1 – αυτή η τιμή δηλώνει ότι η συσκευή κατασκευάζεται από μια επιχείρηση ή μια επιχειρηματική οντότητα.
Αυτές οι πρώτες έξι τιμές τείνουν να είναι οι ίδιες για όλες τις συσκευές και σας δίνουν τις βασικές πληροφορίες γι' αυτές. Αυτή η ακολουθία αριθμών θα είναι η ίδια για όλους τους OIDs, εκτός αν η συσκευή κατασκευάζεται από την κυβέρνηση.
Προχωρώντας στο επόμενο σύνολο αριθμών.
- 1452 – δίνει το όνομα του οργανισμού που κατασκεύασε αυτή τη συσκευή.
- 1 – εξηγεί τον τύπο της συσκευής. Σε αυτή την περίπτωση, είναι ένα ξυπνητήρι.
- 2 – καθορίζει ότι αυτή η συσκευή είναι μια μονάδα απομακρυσμένου τερματικού.
Οι υπόλοιπες τιμές παρέχουν συγκεκριμένες πληροφορίες σχετικά με τη συσκευή.
- 5 – δηλώνει ένα διακριτό σημείο συναγερμού.
- 1 – συγκεκριμένο σημείο στη συσκευή
- 3 – θύρα
- 21 – διεύθυνση της θύρας
- 1 – οθόνη για τη θύρα
- 4 – αριθμός σημείου
- 7 – κατάσταση του σημείου
Εκδόσεις SNMP
Υπάρχουν 2 σημαντικές εκδόσεις του SNMP:
- SNMPv1: Η κύρια, είναι ακόμα η πιο συχνή, η αυθεντικοποίηση βασίζεται σε μια συμβολοσειρά (community string) που ταξιδεύει σε καθαρό κείμενο (όλες οι πληροφορίες ταξιδεύουν σε καθαρό κείμενο). Οι Εκδόσεις 2 και 2c στέλνουν επίσης την κίνηση σε καθαρό κείμενο και χρησιμοποιούν μια συμβολοσειρά κοινότητας ως αυθεντικοποίηση.
- SNMPv3: Χρησιμοποιεί μια καλύτερη μορφή αυθεντικοποίησης και οι πληροφορίες ταξιδεύουν κρυπτογραφημένες (μπορεί να εκτελεστεί επίθεση λεξικού, αλλά θα ήταν πολύ πιο δύσκολο να βρείτε τα σωστά διαπιστευτήρια από ότι στο SNMPv1 και v2).
Συμβολοσειρές Κοινότητας
Όπως αναφέρθηκε προηγουμένως, για να αποκτήσετε πρόσβαση στις πληροφορίες που αποθηκεύονται στη MIB πρέπει να γνωρίζετε τη συμβολοσειρά κοινότητας στις εκδόσεις 1 και 2/2c και τα διαπιστευτήρια στην έκδοση 3.
Υπάρχουν 2 τύποι συμβολοσειρών κοινότητας:
public
κυρίως λειτουργίες μόνο για ανάγνωσηprivate
Ανάγνωση/Εγγραφή γενικά
Σημειώστε ότι η δυνατότητα εγγραφής ενός OID εξαρτάται από τη συμβολοσειρά κοινότητας που χρησιμοποιείται, οπότε ακόμα και αν βρείτε ότι χρησιμοποιείται το "public", θα μπορούσατε να είστε σε θέση να γράψετε κάποιες τιμές. Επίσης, μπορεί να υπάρχουν αντικείμενα που είναι πάντα "Μόνο για Ανάγνωση".
Αν προσπαθήσετε να γράψετε ένα αντικείμενο, θα λάβετε ένα σφάλμα noSuchName
ή readOnly
.**.**
Στις εκδόσεις 1 και 2/2c, αν χρησιμοποιήσετε μια κακή συμβολοσειρά κοινότητας, ο διακομιστής δεν θα απαντήσει. Έτσι, αν απαντήσει, χρησιμοποιήθηκε μια έγκυρη συμβολοσειρά κοινότητας.
Θύρες
- Ο πράκτορας SNMP λαμβάνει αιτήματα στην UDP θύρα 161.
- Ο διαχειριστής λαμβάνει ειδοποιήσεις (Traps και InformRequests) στην θύρα 162.
- Όταν χρησιμοποιείται με Transport Layer Security ή Datagram Transport Layer Security, τα αιτήματα λαμβάνονται στην θύρα 10161 και οι ειδοποιήσεις αποστέλλονται στην θύρα 10162.
Brute-Force Συμβολοσειρά Κοινότητας (v1 και v2c)
Για να μαντέψετε τη συμβολοσειρά κοινότητας μπορείτε να εκτελέσετε μια επίθεση λεξικού. Δείτε εδώ διάφορους τρόπους για να εκτελέσετε μια επίθεση brute-force κατά του SNMP. Μια συχνά χρησιμοποιούμενη συμβολοσειρά κοινότητας είναι το public
.
Απαρίθμηση SNMP
Συνιστάται να εγκαταστήσετε τα παρακάτω για να δείτε τι σημαίνει κάθε OID που συλλέγεται από τη συσκευή:
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
Αν γνωρίζετε μια έγκυρη κοινότητα string, μπορείτε να αποκτήσετε πρόσβαση στα δεδομένα χρησιμοποιώντας SNMPWalk ή 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
Ευχαριστώ στις επεκταμένες ερωτήσεις (download-mibs), είναι δυνατή η καταμέτρηση ακόμη περισσότερων πληροφοριών σχετικά με το σύστημα με την ακόλουθη εντολή :
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP έχει πολλές πληροφορίες σχετικά με τον υπολογιστή και πράγματα που μπορεί να βρείτε ενδιαφέροντα είναι: Διασυνδέσεις δικτύου (διεύθυνση IPv4 και IPv6), Ονόματα χρηστών, Χρόνος λειτουργίας, Έκδοση διακομιστή/λειτουργικού συστήματος, και διεργασίες
που εκτελούνται (μπορεί να περιέχουν κωδικούς πρόσβασης)....
Επικίνδυνες Ρυθμίσεις
Στον τομέα της διαχείρισης δικτύου, ορισμένες ρυθμίσεις και παράμετροι είναι κλειδί για την εξασφάλιση ολοκληρωμένης παρακολούθησης και ελέγχου.
Ρυθμίσεις Πρόσβασης
Δύο κύριες ρυθμίσεις επιτρέπουν την πρόσβαση στο πλήρες δέντρο OID, το οποίο είναι ένα κρίσιμο στοιχείο στη διαχείριση δικτύου:
rwuser noauth
έχει ρυθμιστεί για να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη αυθεντικοποίησης. Αυτή η ρύθμιση είναι απλή και επιτρέπει απεριόριστη πρόσβαση.- Για πιο συγκεκριμένο έλεγχο, η πρόσβαση μπορεί να παραχωρηθεί χρησιμοποιώντας:
rwcommunity
για διευθύνσεις IPv4, καιrwcommunity6
για διευθύνσεις IPv6.
Και οι δύο εντολές απαιτούν μια κοινότητα string και τη σχετική διεύθυνση IP, προσφέροντας πλήρη πρόσβαση ανεξαρτήτως της προέλευσης του αιτήματος.
Παράμετροι SNMP για Microsoft Windows
Μια σειρά από τιμές Διαχείρισης Πληροφοριών Βάσης (MIB) χρησιμοποιούνται για την παρακολούθηση διαφόρων πτυχών ενός συστήματος Windows μέσω SNMP:
- Διεργασίες Συστήματος: Πρόσβαση μέσω
1.3.6.1.2.1.25.1.6.0
, αυτή η παράμετρος επιτρέπει την παρακολούθηση ενεργών διεργασιών μέσα στο σύστημα. - Εκτελούμενα Προγράμματα: Η τιμή
1.3.6.1.2.1.25.4.2.1.2
έχει οριστεί για την παρακολούθηση των προγραμμάτων που εκτελούνται αυτή τη στιγμή. - Διαδρομή Διεργασιών: Για να προσδιορίσετε από πού εκτελείται μια διεργασία, χρησιμοποιείται η τιμή MIB
1.3.6.1.2.1.25.4.2.1.4
. - Μονάδες Αποθήκευσης: Η παρακολούθηση των μονάδων αποθήκευσης διευκολύνεται από το
1.3.6.1.2.1.25.2.3.1.4
. - Όνομα Λογισμικού: Για να προσδιορίσετε το λογισμικό που είναι εγκατεστημένο σε ένα σύστημα, χρησιμοποιείται το
1.3.6.1.2.1.25.6.3.1.2
. - Λογαριασμοί Χρηστών: Η τιμή
1.3.6.1.4.1.77.1.2.25
επιτρέπει την παρακολούθηση των λογαριασμών χρηστών. - TCP Τοπικές Θύρες: Τέλος, το
1.3.6.1.2.1.6.13.1.3
έχει οριστεί για την παρακολούθηση των τοπικών θυρών TCP, παρέχοντας πληροφορίες σχετικά με τις ενεργές συνδέσεις δικτύου.
Cisco
Ρίξτε μια ματιά σε αυτή τη σελίδα αν έχετε εξοπλισμό Cisco:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
Από SNMP σε RCE
Αν έχετε την κοινότητα string που σας επιτρέπει να γράφετε τιμές μέσα στην υπηρεσία SNMP, μπορεί να είστε σε θέση να την εκμεταλλευτείτε για να εκτελέσετε εντολές:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
Μαζικό SNMP
Braa είναι ένας μαζικός σαρωτής SNMP. Η προοριζόμενη χρήση ενός τέτοιου εργαλείου είναι, φυσικά, η εκτέλεση ερωτημάτων SNMP – αλλά σε αντίθεση με το snmpwalk από το net-snmp, είναι ικανό να ερωτά δεκάδες ή εκατοντάδες υπολογιστές ταυτόχρονα, και σε μία μόνο διαδικασία. Έτσι, καταναλώνει πολύ λίγους πόρους συστήματος και εκτελεί τη σάρωση ΠΟΛΥ γρήγορα.
Το Braa υλοποιεί τη ΔΙΚΗ του στοίβα snmp, επομένως ΔΕΝ χρειάζεται καμία βιβλιοθήκη SNMP όπως το net-snmp.
Σύνταξη: braa [Community-string]@[IP του διακομιστή SNMP]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
Αυτό μπορεί να εξάγει πολλά MB πληροφοριών που δεν μπορείτε να επεξεργαστείτε χειροκίνητα.
Έτσι, ας αναζητήσουμε τις πιο ενδιαφέρουσες πληροφορίες (από https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Συσκευές
Η διαδικασία ξεκινά με την εξαγωγή των sysDesc MIB δεδομένων (1.3.6.1.2.1.1.1.0) από κάθε αρχείο για να προσδιορίσουμε τις συσκευές. Αυτό επιτυγχάνεται μέσω της χρήσης μιας εντολής grep:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Εντοπισμός Ιδιωτικής Συμβολοσειράς
Ένα κρίσιμο βήμα περιλαμβάνει τον εντοπισμό της ιδιωτικής συμβολοσειράς κοινότητας που χρησιμοποιούν οι οργανισμοί, ιδιαίτερα σε δρομολογητές Cisco IOS. Αυτή η συμβολοσειρά επιτρέπει την εξαγωγή των τρέχουσων ρυθμίσεων από τους δρομολογητές. Ο εντοπισμός συχνά βασίζεται στην ανάλυση των δεδομένων SNMP Trap για τη λέξη "trap" με μια εντολή grep:
grep -i "trap" *.snmp
Ονόματα Χρηστών/Κωδικοί Πρόσβασης
Τα αρχεία καταγραφής που αποθηκεύονται μέσα στους πίνακες MIB εξετάζονται για αποτυχημένες προσπάθειες σύνδεσης, οι οποίες μπορεί τυχαία να περιλαμβάνουν κωδικούς πρόσβασης που εισάγονται ως ονόματα χρηστών. Λέξεις-κλειδιά όπως fail, failed, ή login αναζητούνται για να βρεθούν πολύτιμα δεδομένα:
grep -i "login\|fail" *.snmp
Emails
Τέλος, για να εξαγάγουμε διευθύνσεις email από τα δεδομένα, χρησιμοποιείται μια εντολή grep με μια κανονική έκφραση, εστιάζοντας σε μοτίβα που ταιριάζουν με τις μορφές email:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Τροποποίηση τιμών SNMP
Μπορείτε να χρησιμοποιήσετε NetScanTools για να τροποποιήσετε τιμές. Θα χρειαστεί να γνωρίζετε την ιδιωτική συμβολοσειρά για να το κάνετε αυτό.
Spoofing
Αν υπάρχει μια ACL που επιτρέπει μόνο σε ορισμένες διευθύνσεις IP να ερωτούν την υπηρεσία SMNP, μπορείτε να spoofάρετε μία από αυτές τις διευθύνσεις μέσα στο πακέτο UDP και να καταγράψετε την κίνηση.
Εξέταση αρχείων ρύθμισης SNMP
- snmp.conf
- snmpd.conf
- snmp-config.xml
Αν ενδιαφέρεστε για καριέρα hacking και να χακάρετε το μη χακάρισμα - προσλαμβάνουμε! (απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά).
{% embed url="https://www.stmcyber.com/careers" %}
HackTricks Αυτόματες Εντολές
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" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστήριξη HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.