Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Η δυνατότητα απομακρυσμένης υποβάθμισης συσκευών που βασίζονται στο RouterOS (Mikrotik) θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές δικτύου. Η ευπάθεια σχετίζεται με δηλητηρίαση της κρυφής μνήμης DNS του πρωτοκόλλου Winbox και σας επιτρέπει να φορτώσετε ξεπερασμένο (με επαναφορά προεπιλεγμένου κωδικού πρόσβασης) ή τροποποιημένο υλικολογισμικό στη συσκευή.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Λεπτομέρειες ευπάθειας

Το τερματικό RouterOS υποστηρίζει την εντολή επίλυσης για αναζήτηση DNS.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Αυτό το αίτημα αντιμετωπίζεται από ένα δυαδικό που ονομάζεται αναλυτής. Το Resolver είναι ένα από τα πολλά δυαδικά αρχεία που συνδέονται με το πρωτόκολλο Winbox του RouterOS. Σε υψηλό επίπεδο, τα "μηνύματα" που αποστέλλονται στη θύρα Winbox μπορούν να δρομολογηθούν σε διάφορα δυαδικά αρχεία στο RouterOS με βάση ένα σχήμα αρίθμησης που βασίζεται σε πίνακα.

Από προεπιλογή, το RouterOS έχει απενεργοποιημένη τη δυνατότητα διακομιστή DNS.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Ωστόσο, ακόμη και όταν η λειτουργία διακομιστή είναι απενεργοποιημένη, ο δρομολογητής διατηρεί τη δική του προσωρινή μνήμη DNS.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Όταν κάνουμε ένα αίτημα χρησιμοποιώντας το winbox_dns_request για παράδειγμα.com, ο δρομολογητής θα αποθηκεύσει το αποτέλεσμα στην προσωρινή μνήμη.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Εφόσον μπορούμε να καθορίσουμε τον διακομιστή DNS μέσω του οποίου πρέπει να περάσει το αίτημα, η εισαγωγή εσφαλμένων διευθύνσεων είναι ασήμαντη. Για παράδειγμα, μπορείτε να διαμορφώσετε μια υλοποίηση διακομιστή DNS από Φίλιπ Κλάουςνα απαντάτε πάντα με μια εγγραφή A που περιέχει τη διεύθυνση IP 192.168.88.250.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

Τώρα, αν κάνετε αναζήτηση για παράδειγμα.com χρησιμοποιώντας το Winbox, μπορείτε να δείτε ότι η προσωρινή μνήμη DNS του δρομολογητή είναι δηλητηριασμένη.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Φυσικά, το poisoning example.com δεν είναι πολύ χρήσιμο αφού ο δρομολογητής δεν θα το χρησιμοποιήσει πραγματικά. Ωστόσο, ο δρομολογητής πρέπει να έχει πρόσβαση στα upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com και download.mikrotik.com. Και χάρη σε ένα άλλο λάθος, είναι δυνατό να τα δηλητηριάσουν όλα με τη μία.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("download.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

Ο δρομολογητής ζητά μία άδεια και εμείς επιστρέφουμε πέντε. Ο δρομολογητής δεν αποθηκεύει σωστά όλες αυτές τις αποκρίσεις.

Η ευπάθεια Backport στο RouterOS θέτει σε κίνδυνο εκατοντάδες χιλιάδες συσκευές

Προφανώς, αυτή η επίθεση είναι επίσης χρήσιμη εάν ο δρομολογητής λειτουργεί ως διακομιστής DNS, καθώς επιτρέπει στους πελάτες του δρομολογητή να δεχτούν επίθεση.

Αυτή η επίθεση σάς επιτρέπει επίσης να εκμεταλλευτείτε μια πιο σοβαρή ευπάθεια: υποβάθμιση ή backport της έκδοσης του RouterOS. Ο εισβολέας αναδημιουργεί τη λογική του διακομιστή ενημέρωσης, συμπεριλαμβανομένου του αρχείου καταγραφής αλλαγών, και αναγκάζει το RouterOS να αντιληφθεί την παρωχημένη (ευάλωτη) έκδοση ως τρέχουσα. Ο κίνδυνος εδώ έγκειται στο γεγονός ότι όταν η έκδοση "ενημερώνεται", ο κωδικός πρόσβασης διαχειριστή επαναφέρεται στην προεπιλεγμένη τιμή - ένας εισβολέας μπορεί να συνδεθεί στο σύστημα με κενό κωδικό πρόσβασης!


Η επίθεση είναι αρκετά λειτουργική, παρά το γεγονός ότι συγγραφέας υλοποιεί πολλά ακόμη διανύσματα, συμπεριλαμβανομένων εκείνων που σχετίζονται με ενσωματώνοντας μια κερκόπορτα στο υλικολογισμικό, αλλά αυτή είναι ήδη μια περιττή τεχνική και η χρήση της για παράνομους σκοπούς είναι παράνομη.

Προστασία

Η απλή απενεργοποίηση του Winbox σάς επιτρέπει να προστατεύεστε από αυτές τις επιθέσεις. Παρά την ευκολία διαχείρισης μέσω Winbox, είναι καλύτερο να χρησιμοποιήσετε το πρωτόκολλο SSH.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο