Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Die Möglichkeit, GerĂ€te mit RouterOS (Mikrotik) remote downgraden zu können, stellt eine Bedrohung fĂŒr Hunderttausende von NetzwerkgerĂ€ten dar. Die Schwachstelle ist mit der DNS-Cache-Vergiftung des Winbox-Protokolls verbunden und ermöglicht das Laden einer veralteten (mit ZurĂŒcksetzen des Passworts auf „Standard“) oder modifizierten Firmware auf das GerĂ€t.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Details zur Schwachstelle

Das RouterOS-Terminal unterstĂŒtzt den Befehl zur Auflösung fĂŒr die DNS-Suche.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Diese Anfrage wird von einer binĂ€ren Datei mit dem Namen resolver verarbeitet. Der Resolver ist eine von vielen binĂ€ren Dateien, die mit dem Winbox-Protokoll von RouterOS verbunden sind. Auf hoher Ebene können die „Nachrichten“, die an den Winbox-Port gesendet werden, je nach Schemenummerierung auf verschiedene binĂ€re Dateien in RouterOS geroutet werden.

StandardmĂ€ĂŸig ist die DNS-Serverfunktion in RouterOS deaktiviert.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Selbst wenn die Serverfunktion deaktiviert ist, behÀlt der Router jedoch seinen eigenen DNS-Cache.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Wenn wir eine Anfrage stellen, zum Beispiel mit winbox_dns_request fĂŒr example.com, wird der Router das Ergebnis cachen.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Da wir den DNS-Server angeben können, ĂŒber den die Anfrage laufen soll, ist es trivial, falsche Adressen einzugeben. Zum Beispiel kann man den DNS-Server von Philipp Klaus, so konfigurieren, dass er immer mit einem A-Eintrag antwortet, der die IP-Adresse 192.168.88.250 enthĂ€lt.

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()

Jetzt, wenn man mit Winbox nach example.com sucht, sieht man, dass der DNS-Cache des Routers vergiftet ist.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

NatĂŒrlich ist die Vergiftung von example.com nicht besonders nĂŒtzlich, da der Router sie faktisch nicht verwenden wird. Dennoch muss der Router auf upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com und download.mikrotik.com zugreifen. Und dank eines weiteren Fehlers besteht die Möglichkeit, sie alle gleichzeitig zu vergiften.

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()

Der Router fragt eine Genehmigung an, und wir geben fĂŒnf zurĂŒck. Der Router cached all diese Antworten falsch.

Die Backport-SicherheitsanfÀlligkeit in RouterOS gefÀhrdet Hunderttausende von GerÀten.

Es ist offensichtlich, dass dieser Angriff auch nĂŒtzlich ist, wenn der Router als DNS-Server fungiert, da er es ermöglicht, die Benutzer des Routers anzugreifen.

Zudem ermöglicht dieser Angriff, eine schwerwiegendere Schwachstelle auszunutzen: die Downgrade- oder Backportierung der RouterOS-Version. Der Angreifer rekreiert die Logik des Update-Servers, einschließlich des Changelogs, und zwingt RouterOS dazu, eine veraltete (anfĂ€llige) Version als aktuell zu betrachten. Die Gefahr hierbei liegt darin, dass beim "Update" der Version das Administratorpasswort auf "Standard" zurĂŒckgesetzt wird – ein Angreifer kann mit einem leeren Passwort ins System einsteigen!

Video abspielen

Der Angriff funktioniert gut, obwohl der Autor noch mehrere Angriffsvektoren implementiert, die auch mit dem Einbetten eines Backdoors in die Firmwarezu tun haben, aber das ist bereits ĂŒberflĂŒssige Technik und ihre Anwendung zu illegalen Zwecken ist strafbar.

Schutz

Ein einfaches Deaktivieren von Winbox kann vor diesen Angriffen schĂŒtzen. Trotz der Bequemlichkeit der Verwaltung ĂŒber Winbox ist es besser, das SSH-Protokoll zu nutzen.

Quelle: habr.com

60GB SSD 8Gb DDR4