English · Ελληνικά
Το offensive post πέρασε μέσα από το πώς να πάρεις ένα box RouterOS. Αυτό είναι το μισό του αμυνόμενου: τα log topics, τα patterns κίνησης, και τα baseline diffs που πιάνουν την εκμετάλλευση Winbox, το brute force, την κλοπή config, και τα σημάδια ενός επιτιθέμενου που ζει μέσα στο router — γιατί σε ένα παραβιασμένο box, το τοπικό log είναι το ένα πράγμα που δεν μπορείς να εμπιστευτείς.
Η μία πιο σημαντική ιδέα για τον εντοπισμό παραβίασης RouterOS: ένας επιτιθέμενος που κατέχει το router κατέχει και τα τοπικά logs του. Οπότε ο εντοπισμός ζει έξω από το box — το αντίγραφο remote syslog, το export Traffic-Flow, και ένα known-good baseline config που κάνεις diff έναντί του. Κάθε τεχνική στο Attacking MikroTik Gear χαρτογραφείται σε ένα σήμα σε ένα από αυτά τα τρία feeds.
Η προϋπόθεση είναι αυτά τα feeds να υπάρχουν και να στέλνονται κάπου όπου το router δεν μπορεί να φτάσει για να τα πειράξει. Τότε το topic account πιάνει τα logins, το Traffic-Flow πιάνει το exfil και το pivoting, και ένα diff config πιάνει το persistence που αφήνει πίσω του ένας επιτιθέμενος. Ο εντοπισμός είναι το δίχτυ ασφαλείας κάτω από το hardening — για το εκτεθειμένο box που σου ξέφυγε, ή το επόμενο bug κλάσης Winbox.
/export01
Η εκμετάλλευση Winbox, η επαναχρησιμοποίηση credentials, και το brute force όλα καταλήγουν σε ένα login. Το topic account καταγράφει το καθένα — ποιος, από πού — και μια έκρηξη αποτυχιών είναι η υπογραφή brute-force.
# Το topic account καταγράφει κάθε απόπειρα login με user + source address. # Στείλ' το σε remote syslog και κάνε alert σε: # - επιτυχία από ΑΠΡΟΣΜΕΝΗ source address/geo # - έκρηξη αποτυχιών από μία source (brute force) > /system logging add topics=account action=syslog ... user admin logged in from 203.0.113.9 via winbox -> αναμενόμενο; ... login failure for user admin from 45.x.x.x via winbox (x50) -> BRUTE # Το logging input-drop του firewall δείχνει το χτύπημα ΠΡΙΝ το login: > /ip firewall filter set [find action=drop chain=input] log=yes log-prefix="IN-DROP" ... IN-DROP ... dst-port=8291 -> κάποιος δοκιμάζει το Winbox από το WAN
Μετά το hardening, το WAN δεν μπορεί καθόλου να φτάσει τα 8291/8728 — οπότε ένα dropped-input log για αυτά τα ports από το internet σημαίνει ότι κάποιος σε σαρώνει, και είναι δωρεάν έγκαιρη προειδοποίηση ότι είσαι σε κάποια λίστα. Ακόμα καλύτερα: επιβεβαιώνει ότι το firewall σου κάνει τη δουλειά του. Αν ποτέ δεις ένα επιτυχημένο login Winbox με πηγή έξω από το δίκτυο management σου, αντιμετώπισέ το ως παραβίαση, όχι περιέργεια — αυτό είναι το σενάριο κλάσης CVE-2018-14847.
02
Ένας επιτιθέμενος που μπαίνει κάνει export το config (κάθε κλειδί και credential) και μπορεί να μετατρέψει το router σε pivot. Το Traffic-Flow και η κατάσταση σύνδεσης δείχνουν το router να κάνει πράγματα που δεν κάνουν τα routers.
| Σημα | Τι σημαινει |
|---|---|
| Το router να είναι πηγή μιας outbound μεταφοράς αρχείου | Config/backup exfil προς τον επιτιθέμενο |
| Νέες μακρόβιες συνδέσεις από το ίδιο το router | Reverse shell / C2 beacon — έλεγξε /ip firewall connection |
| Patterns κίνησης SOCKS proxy | Το router χρησιμοποιείται ως pivot — το /ip socks πρέπει να είναι off |
| Μια αιχμή σε CPU router / sniffer να τρέχει | Παθητική υποκλοπή — έλεγξε την κατάσταση /tool sniffer |
| Δραστηριότητα fetch/tool προς άγνωστους hosts | Malware που τραβάει payload μέσω /tool fetch |
Σε ένα παραβιασμένο box RouterOS, το /ip firewall connection, τα logs, ακόμα και η κατάσταση /tool sniffer μπορούν να χειραγωγηθούν ή ο επιτιθέμενος μπορεί να κρύψει τα εργαλεία του. Γι' αυτό η έγκυρη άποψη είναι το export Traffic-Flow στον collector και το αντίγραφο syslog στον server — δεδομένα που το router έστειλε προς τα έξω πριν κανείς μπορέσει να τα πειράξει. Αν το off-box flow δείχνει το router να μιλάει σε έναν host που τα on-box εργαλεία αρνούνται, πίστεψε το flow. Ο εντοπισμός που βασίζεται μόνο στην ύποπτη συσκευή είναι εντοπισμός που μπορεί να κλείσει ένας επιτιθέμενος.
03
Το πιο καθαρό σήμα παραβίασης είναι αυτό που αφήνει ο επιτιθέμενος: έναν κρυφό χρήστη, έναν προστιθέμενο scheduler/script, ένα SOCKS proxy, ένα εισηγμένο DNS static. Ένα diff config έναντι ενός known-good baseline τα φέρνει όλα στην επιφάνεια.
# Τράβα ένα φρέσκο /export σε πρόγραμμα και κάν' το diff έναντι του baseline. # Η εμφάνιση οποιουδήποτε από αυτά είναι κόκκινη σημαία persistence: + /user add name=... # κρυφός/έξτρα λογαριασμός + /system scheduler add ... # beaconing / persistence + /system script add ... + /ip socks set enabled=yes # pivot ενεργοποιημένο + /ip dns static add ... # ανακατεύθυνση κίνησης + /ip firewall nat/mangle ... # hijack κίνησης # Μια εβδομαδιαία δουλειά "diff του fleet έναντι baseline" πιάνει αργό, σιωπηλό # persistence που κανένα μεμονωμένο alert δεν θα έπιανε. Δες τα posts fleet + backup.
Αυτό ζευγαρώνει με το fleet management — τράβα κεντρικά το /export κάθε router και κάν' το diff έναντι του committed baseline του, ώστε μια αλλαγή που δεν έκανε κανείς να είναι finding. Είναι η εκδοχή RouterOS του config-archive detection του Cisco.
Βασικα Συμπερασματα
account πιάνει κάθε login — κάνε alert σε επιτυχία από απρόσμενες πηγές και εκρήξεις αποτυχιών (brute force).Χτίζω off-box εντοπισμό και για MikroTik και για Cisco — alerting login, εντοπισμό exfil βασισμένο σε flow, diffing config baseline — ώστε ένα παραβιασμένο router να σηκώνει συναγερμό κάπου όπου πραγματικά θα τον δεις, όχι μόνο στα δικά του logs.
Κλεισε μια Discovery Call →