hacktricks/network-services-pentesting/pentesting-snmp/README.md

26 KiB
Raw Blame History

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
{% endhint %}

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, αν χρησιμοποιήσετε μια κακή συμβολοσειρά κοινότητας, ο διακομιστής δεν θα απαντήσει. Έτσι, αν απαντήσει, χρησιμοποιήθηκε μια έγκυρη συμβολοσειρά κοινότητας.

Θύρες

Από τη Wikipedia:

  • Ο πράκτορας 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, το οποίο είναι ένα κρίσιμο στοιχείο στη διαχείριση δικτύου:

  1. rwuser noauth έχει ρυθμιστεί για να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη αυθεντικοποίησης. Αυτή η ρύθμιση είναι απλή και επιτρέπει απεριόριστη πρόσβαση.
  2. Για πιο συγκεκριμένο έλεγχο, η πρόσβαση μπορεί να παραχωρηθεί χρησιμοποιώντας:
  • 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
{% endhint %}