English · Ελληνικά
Το MikroTik σηκώνει ένα τεράστιο κομμάτι των μικρών δικτύων και του edge των παρόχων παγκοσμίως — γι' αυτό ακριβώς έγινε δύο φορές καύσιμο για botnet. Αυτή είναι η άλλη όψη της σειράς RouterOS: τι κάνει στην πράξη ένας επιτιθέμενος σε ένα MikroTik μέσα σε ένα engagement, από τη στιγμή που θα βρει μια εκτεθειμένη θύρα Winbox μέχρι να πάρει τον έλεγχο της συσκευής και να εγκατασταθεί μέσα της — με τη μονόγραμμη διόρθωση για το καθένα. Ο συνοδός του «Θωράκιση του RouterOS».
Αυτό αφορά εξουσιοδοτημένο testing — το δικό σου lab, ένα CTF, ή ένα engagement με γραπτό scope — και σκοπό έχει να δείξει στους defenders με τι ακριβώς έχουν να κάνουν. Το να επιτεθείς σε RouterOS που δεν σου ανήκει ή δεν έχεις ανάθεση να ελέγξεις είναι παράνομο. Στήσε ένα lab (το CHR — Cloud Hosted Router — τρέχει δωρεάν σε VM) και στρέψε εκεί κάθε δοκιμή. Κάθε ενότητα κλείνει με τη διόρθωση, με σύνδεσμο προς το Θωράκιση του RouterOS. Το κείμενο είναι γραμμένο με τον defender στο μυαλό: ο στόχος είναι να τα εντοπίσεις μόνος σου στην υποδομή σου, πριν τα βρει κάποιος άλλος.
Οι παραβιάσεις σε MikroTik έχουν το ίδιο σχήμα με τις Cisco: σχεδόν ποτέ δεν πρόκειται για exploit που εκμεταλλεύεται διαφθορά μνήμης — είναι έκθεση συν ένα γνωστό bug ή ένα αδύναμο διαπιστευτήριο. Η συσκευή είναι φθηνή, ικανή και βρίσκεται παντού — μικροί πάροχοι, καφετέριες, απομακρυσμένα σημεία — και ένας τεράστιος αριθμός τους κάθεται στο internet με το Winbox (TCP 8291) ή το API (8728) ανοιχτά και με RouterOS στην έκδοση που είχε όταν βγήκε από το κουτί. Αυτός ο συνδυασμός γέννησε το VPNFilter (2018) και το botnet Meris (2021, μία από τις μεγαλύτερες πηγές DDoS που έχουν καταγραφεί ποτέ).
Το kill-chain είναι προβλέψιμο: βρες τις θύρες διαχείρισης, μπες μέσω του κλασικού σφάλματος του Winbox ή με αδύναμα/προεπιλεγμένα creds, άρπαξε το config, και μετά ζήσε μέσα του — γιατί ένας router είναι το ιδανικό παρατηρητήριο για sniffing και pivoting. Κάθε στάδιο κλείνει με τη ρύθμιση του RouterOS που το εξαφανίζει. Η αξία εδώ είναι η λίστα των διορθώσεων, όχι κάποιο έτοιμο exploit για copy-paste.
01
Το MikroTik έχει ένα αποτύπωμα που το προδίδει: το Winbox στην 8291 είναι σχεδόν αποκλειστικά δικό του, και η συσκευή συχνά απαντά σε MNDP (το πρωτόκολλο ανακάλυψης του MikroTik) μέσα στο LAN, αποκαλύπτοντας την ταυτότητα και την έκδοσή της.
# Ανοιχτή η 8291 είναι σχεδόν σίγουρη ένδειξη RouterOS. Σάρωσε το δικό σου εύρος γι' αυτήν: $ nmap -Pn -p 8291,8728,8729,22,80 --open 203.0.113.0/24 203.0.113.10 8291/tcp open winbox 8728/tcp open mikrotik-api # Εντός του LAN: το MNDP (UDP 5678) εκπέμπει ταυτότητα, μοντέλο και έκδοση. $ tcpdump -nn -i eth0 udp port 5678 -A -c 1 Identity: CoreRTR Version: 6.42.11 Board: RB750 Platform: MikroTik # Η έκδοση σού λέει αμέσως αν ισχύουν γνωστά CVE. Σημείωσέ την.
Οι 8291/8728 δεν έχουν καμία δουλειά να βλέπουν στο internet. Ένα input firewall με default-drop κάνει το παραπάνω recon να γυρίζει άδειο από το WAN, και ο περιορισμός του MNDP/discovery σε έμπιστα interfaces κόβει το δωράκι που κρύβεται μέσα στο LAN. Το δωρεάν routeros-scanner της Microsoft είναι καλός τρόπος να ελέγξεις τον στόλο σου για έκθεση και ενδείξεις. Δεν μπορεί κανείς να σου κάνει exploit σε μια θύρα που ο επιτιθέμενος δεν φτάνει.
02
Το bug που έκανε το MikroTik διαβόητο. Ένα σφάλμα στην υπηρεσία Winbox σε RouterOS πριν την 6.42.12 επέτρεπε σε έναν επιτιθέμενο χωρίς authentication να διαβάσει αρχεία από τη συσκευή — ανάμεσά τους και τον χώρο όπου φυλάσσονται τα διαπιστευτήρια του admin. Χωρίς κωδικό· φτάνεις στη θύρα, και η συσκευή σού παραδίδει το ίδιο της το login.
Δεν χρειάζεσαι τον κώδικα του exploit για να πιάσεις το μάθημα. Η κατηγορία του bug είναι αποκάλυψη πληροφορίας πριν το authentication, πάνω σε υπηρεσία διαχείρισης: από τη στιγμή που ένας επιτιθέμενος μπορεί να διαβάσει αυθαίρετα αρχεία χωρίς να έχει πιστοποιηθεί, η ανάκτηση των αποθηκευμένων διαπιστευτηρίων του admin είναι απλή τυπικότητα — και από εκεί έχει πλήρη πρόσβαση στο RouterOS. Δημόσια εργαλεία γι' αυτό κυκλοφορούν εδώ και χρόνια· έγινε mass-exploited σε κλίμακα internet και μπήκε μέσα στο VPNFilter. Τα διαπιστευτήρια που ξεκλειδώνει είτε τα ξαναχρησιμοποιούν αυτούσια, είτε απλώς επαναρυθμίζουν τη συσκευή σαν πλέον πιστοποιημένοι.
Το CVE-2018-14847 έχει διορθωθεί εδώ και καιρό, οπότε το «απλώς κάνε patch» ακούγεται αρκετό — μόνο που χάνει το νόημα. Ο ίδιος τρόπος αστοχίας (ένα bug χωρίς authentication σε υπηρεσία διαχείρισης εκτεθειμένη στο internet) θα ξαναχτυπήσει με το επόμενο CVE που δεν έχει γραφτεί ακόμα. Η διόρθωση που κρατάει είναι να μην εκθέτεις καθόλου το management plane: μια θύρα Winbox/API που το internet δεν φτάνει είναι άτρωτη ακόμα και στα bugs που δεν έχουν δημοσιευτεί. Κάνε patch και κλείσ' την με firewall από το WAN (Θωράκιση του RouterOS §02), και φτάσ' την μέσα από ένα tunnel WireGuard. Αν πετύχεις συσκευή που ήταν εκτεθειμένη και χωρίς patch, αντιμετώπισέ την σαν παραβιασμένη και ξαναστήσ' την — μην κάνεις απλώς upgrade από πάνω.
03
Δεν χρειάζεται κάθε νίκη ένα CVE. Το παλιό RouterOS ερχόταν με admin και κενό κωδικό· πολλές συσκευές το κρατούν ακόμα, ή έναν αδύναμο κωδικό που μπήκε μία φορά και δεν άλλαξε ποτέ. Και το binary API στην 8728 είναι ένα πλήρες, πιστοποιημένο κανάλι για το config — εύκολος στόχος για brute όπου είναι εκτεθειμένο.
# Ο έλεγχος για κενό admin: δέχεται ακόμα η συσκευή το εργοστασιακό login; # (Κάν' το στις ΔΙΚΕΣ σου συσκευές, για ν' αποδείξεις ότι άλλαξαν.) $ ssh admin@203.0.113.10 # ο κενός κωδικός πρέπει ν' απορρίπτεται # Το εκτεθειμένο plaintext API στην 8728 είναι πιστοποιημένο κανάλι ελέγχου και # στόχος για brute-force. Δεν πρέπει να φτάνει από μη έμπιστα δίκτυα. $ nmap -p 8728,8729 --open 203.0.113.0/24 # ανοιχτή 8728 = εκτεθειμένο plaintext API
Πέτα τον προεπιλεγμένο admin, βάλε ξεχωριστό λογαριασμό ανά άτομο σε ομάδες ελάχιστων προνομίων, και επίβαλε ισχυρούς κωδικούς (τα «First Contact» και «Θωράκιση του RouterOS» τα καλύπτουν και τα δύο). Κλείσε εντελώς το σκέτο api· αν το χρειάζεται κάποιος αυτοματισμός, βάλε api-ssl δεμένο μόνο στον host του αυτοματισμού. Το rate-limiting στις επαναλαμβανόμενες αποτυχίες auth πάνω στην input chain μετατρέπει ένα brute-force σε μη γεγονός.
04
Το RouterOS κουβαλάει αρκετές υπηρεσίες που είναι βολικές σε ένα lab και βάρος στο production. Ο bandwidth-test server ξεχωρίζει: όταν είναι προσβάσιμος, είναι ταυτόχρονα στόχος για credential-brute και τρόπος να γονατίσεις τη συσκευή ή τη γραμμή όποτε θελήσεις.
# Πράγματα να επιβεβαιώσεις ότι είναι OFF / περιορισμένα στις δικές σου συσκευές: bandwidth-test server (btest) -> στόχος DoS + brute www / ftp -> mgmt σε καθαρό κείμενο, επιπλέον επιφάνεια romon -> L2 management mesh, αν δεν έχει scope mac-server / mac-winbox -> L2 mgmt σε μη έμπιστες θύρες socks proxy -> το αγαπημένο pivot του επιτιθέμενου (βλ. §05) $ nmap -p 2000,21,80,1080 --open 203.0.113.10 # btest/ftp/www/socks
/tool bandwidth-server set enabled=no, κλείσε www/ftp, περιόρισε το mac-server και το discovery σε έμπιστα interfaces, και άσε το romon και τον SOCKS proxy κλειστά, εκτός αν τα βάζεις σκόπιμα σε έμπιστο τμήμα. Κάθε υπηρεσία που κλείνεις είναι ένα πράγμα λιγότερο που φτάνει ο επιτιθέμενος — όλο το Θωράκιση του RouterOS §01/§04.
05
Το να παραβιάσεις έναν router δεν είναι ο στόχος· είναι η θέση. Ένας router βλέπει όλη την κίνηση, κάθεται μέσα στην περίμετρο, και σπάνια κάνει reboot — το ιδανικό σημείο για να επιμείνεις, να παρακολουθείς και να κάνεις pivot. Το να ξέρεις τι κάνει ένας επιτιθέμενος από εδώ, σου λέει τι να ψάχνεις.
| Τι κανουν απο τη συσκευη | Γιατι σε αφορα |
|---|---|
| Ανοίγουν τον SOCKS proxy | Μετατρέπει τον router σου σε pivot προς το εσωτερικό δίκτυο — έλεγξε ότι το /ip socks είναι κλειστό. |
| Κάνουν stream τον packet sniffer | Παθητική υποκλοπή όλων όσων περνούν από τη συσκευή — έλεγξε ότι το /tool sniffer δεν τρέχει/δεν κάνει stream. |
| Προσθέτουν scheduler + script | Persistence και beaconing που επιβιώνουν στα reboot — δες /system scheduler και /system script. |
| Βάζουν web proxy / DNS static | Ανακατεύθυνση ή injection στην κίνηση των χρηστών (à la Meris) — έλεγξε /ip proxy, /ip dns static. |
| Προσθέτουν κρυφό χρήστη / SSH key | Backdoor πρόσβαση — αντιπαράβαλε /user και /user ssh-keys με τα αρχεία σου. |
| Κάνουν export το config | Κάθε PSK, VPN key και διαπιστευτήριο φεύγει μαζί τους — άλλαξε τα secrets μετά από κάθε υποψία παραβίασης. |
Όποιος κατέχει τον router, κατέχει και τα τοπικά του logs — γι' αυτό το αντίγραφο remote syslog είναι αυτό με το οποίο πραγματικά ερευνάς, και το topic account δείχνει τα αναπάντεχα logins. Κράτα ένα /export baseline υπό version control (Backup και Ανάκτηση), ώστε ένα απλό diff να σου βγάλει αμέσως στην επιφάνεια έναν scheduler, χρήστη ή proxy που μπήκε κρυφά. Μετά από κάθε επιβεβαιωμένη παραβίαση, ξαναστήσε από καθαρό και άλλαξε κάθε secret που κρατούσε η συσκευή — ένα export του config σημαίνει ότι διέρρευσαν όλα.
06
Όταν εξετάζω ένα MikroTik σε ένα engagement, αυτό είναι το πέρασμα. Τρέξ' το πρώτα στις δικές σου συσκευές — κάθε γραμμή είναι ένα finding που περιμένει να συμβεί.
| Ελεγχος | Γιατι ειναι finding |
|---|---|
| 8291 / 8728 προσβάσιμες από WAN | Εκτεθειμένο management plane — η ρίζα σχεδόν κάθε παραβίασης (§01/§02) |
| RouterOS κάτω από την τρέχουσα stable | Ισχύουν γνωστά CVE· χωρίς patch + εκτεθειμένο = owned (§02) |
| Προεπιλεγμένος admin / αδύναμος κωδικός | Δεν χρειάζεται exploit (§03) |
Ενεργά σκέτα api, www, ftp, telnet | Κανάλια διαχείρισης σε καθαρό κείμενο ή ευάλωτα σε brute (§03/§04) |
| Ενεργά btest / romon / socks | DoS, L2 management, και επιφάνεια για pivot (§04/§05) |
| Καθόλου logging εκτός συσκευής | Η παραβίαση περνάει αόρατη και τα τοπικά logs δεν είναι αξιόπιστα (§05) |
| Αναπάντεχος scheduler/script/user | Persistence ή backdoor — σύγκρινε με το baseline (§05) |
Συμπερασματα
Κάνω εξουσιοδοτημένα penetration tests και ελέγχους διαμόρφωσης σε υποδομές RouterOS — έκθεση, επίπεδο patch, αδύναμα διαπιστευτήρια, υπηρεσίες που περισσεύουν, και τα σημάδια ότι μια συσκευή έχει ήδη περάσει από τα χέρια κάποιου άλλου.
Κλεισε μια Discovery Call →